Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
378 commits
Select commit Hold shift + click to select a range
14ccd32
refactor(terminal): remove check_interval parameter (#8001)
teknium1 Apr 12, 2026
723b5be
feat: per-platform display verbosity configuration (#8006)
teknium1 Apr 12, 2026
fd73937
feat: component-separated logging with session context and filtering …
teknium1 Apr 12, 2026
27eeea0
perf(ssh,modal): bulk file sync via tar pipe and tar/base64 archive (…
alt-glitch Apr 12, 2026
50d86b3
fix(matrix): replace pickle crypto store with SQLite, fix E2EE decryp…
alt-glitch Apr 12, 2026
fa7cd44
feat: add hermes backup and hermes import commands (#7997)
teknium1 Apr 12, 2026
cfbfc4c
fix(discord): decouple readiness from slash sync
helix4u Apr 11, 2026
a0a02c1
feat: /compress <focus> — guided compression with focus topic (#8017)
teknium1 Apr 12, 2026
8a48c58
fix(gateway): add missing RedactingFormatter import
Apr 12, 2026
1cec910
fix: improve context compaction to prevent model answering stale ques…
teknium1 Apr 12, 2026
1ca9b19
feat: add network.force_ipv4 config to fix IPv6 timeout issues (#8196)
teknium1 Apr 12, 2026
8e00b3a
fix(cron): steer model away from explicit deliver targets that lose t…
teknium1 Apr 12, 2026
4cadfef
fix(cli): restore stacked tool progress scrollback in TUI (#8201)
teknium1 Apr 12, 2026
73f970f
fix: make gateway interrupt detection resilient to monitor task failures
teknium1 Apr 12, 2026
eb2a49f
fix: openai-codex and anthropic not appearing in /model picker for ex…
teknium1 Apr 12, 2026
1871227
feat: rebrand OpenClaw references to Hermes during migration
teknium1 Apr 12, 2026
36f57db
fix(migration): don't auto-archive OpenClaw source directory
opriz Apr 12, 2026
fdf55e0
feat(cli): show random tip on new session start (#8225)
teknium1 Apr 12, 2026
f53a5a7
fix: suppress duplicate completion notifications when agent already c…
teknium1 Apr 12, 2026
81ac62c
fix(weixin): split chatty short replies into separate bubbles, keep s…
bravohenry Apr 12, 2026
fee0e0d
fix(docker): run as non-root user, use virtualenv (salvage #5811)
m0n5t3r Apr 12, 2026
8b9d22a
revert: keep debian:13.4 full image instead of slim
teknium1 Apr 12, 2026
3162472
feat(tips): add 69 deeper hidden-gem tips (279 total) (#8237)
teknium1 Apr 12, 2026
c52f634
fix: list all available toolsets in delegate_task schema description …
teknium1 Apr 12, 2026
b1f13a8
fix(agent): route compression aux through live session runtime
counterposition Apr 12, 2026
078dba0
fix: three provider-related bugs (#8161, #8181, #8147) (#8243)
teknium1 Apr 12, 2026
a122097
fix: make skill loading instructions more aggressive in system prompt…
teknium1 Apr 12, 2026
ae6820a
fix(setup): validate base URL input in hermes model flow (#8264)
teknium1 Apr 12, 2026
4aa534e
fix(gateway): peek at pending message during interrupt instead of con…
teknium1 Apr 12, 2026
6d05e3d
fix(gateway): evict cached agent on /model switch + add diagnostic lo…
teknium1 Apr 12, 2026
95fa78e
fix: write refreshed Codex tokens back to ~/.codex/auth.json (#8277)
teknium1 Apr 12, 2026
00adbd0
chore: simplify Docker image tags
benbarclay Apr 12, 2026
b0d65c3
Merge pull request #8279 from NousResearch/chore/simplify-docker-tags
benbarclay Apr 12, 2026
b9af495
fix(matrix): restore verify_with_recovery_key after device key rotation
elkimek Apr 12, 2026
dd5b106
fix: register MATRIX_RECOVERY_KEY env var + document migration path
teknium1 Apr 12, 2026
b321330
feat: add WSL environment hint to system prompt (#8285)
teknium1 Apr 12, 2026
56e3ee2
fix: write update exit code before gateway restart (cgroup kill race)…
teknium1 Apr 12, 2026
b6b6b02
fix: prevent unwanted session auto-reset after graceful gateway resta…
teknium1 Apr 12, 2026
17c72f1
fix: make skill loading instructions more aggressive in system prompt…
teknium1 Apr 12, 2026
45e6090
fix: fall back to provider's default model when model config is empty…
teknium1 Apr 12, 2026
7a67b13
fix: title_generator no longer logs as 'compression' task
teknium1 Apr 12, 2026
4eecaf0
fix: prevent duplicate update prompt spam in gateway watcher (#8343)
teknium1 Apr 12, 2026
06a17c5
fix: improve profile creation UX — seed SOUL.md + credential warning …
teknium1 Apr 12, 2026
06290f6
fix: handle broken stdin in prompt_toolkit startup (#6393) (#8560)
teknium1 Apr 12, 2026
f295b17
fix: make agent_thread daemon to prevent orphan CLI processes on tab …
teknium1 Apr 12, 2026
a372c14
fix: strip <thought> tags from Gemma 4 responses in _strip_think_blocks
Unayung Apr 8, 2026
326d5fe
fix: also strip <thought> tags during streaming in cli.py
Unayung Apr 9, 2026
400fe9b
fix: add <thought> stripping to auxiliary_client + tests
teknium1 Apr 12, 2026
a9ebb33
fix: contextual error diagnostics for invalid API responses (#8565)
teknium1 Apr 12, 2026
d7785f4
feat(feishu): add scan-to-create onboarding for Feishu / Lark
Roy-oss1 Apr 11, 2026
1179918
fix: salvage follow-ups for Feishu QR onboarding (#7706)
teknium1 Apr 12, 2026
a4593f8
feat: make gateway 'still working' notification interval configurable…
teknium1 Apr 12, 2026
d6785dc
fix: empty response recovery for reasoning models (mimo, qwen, GLM) (…
teknium1 Apr 12, 2026
18ab5c9
fix(backup): correct marker filenames in _validate_backup_zip
sprmn24 Apr 12, 2026
5e1197a
fix(gateway): harden Docker/container gateway pathway
alt-glitch Apr 12, 2026
4c6ebd0
chore: sync uv.lock with matrix extra deps (aiosqlite, asyncpg) (#8661)
teknium1 Apr 12, 2026
7e0e5ea
fix(skills): cache GitHub repo trees to avoid rate-limit exhaustion o…
teknium1 Apr 12, 2026
7601932
feat(skills): centralized skills index — eliminate GitHub API calls f…
teknium1 Apr 12, 2026
5af9614
fix(claw): warn if OpenClaw is running before migration
fancydirty Apr 12, 2026
9fb3673
fix(claw): address Copilot review on Windows detection and non-intera…
fancydirty Apr 12, 2026
76f7411
fix(claw): warn and prompt if OpenClaw is still running before archiv…
Sertug17 Apr 12, 2026
c83674d
fix: unify OpenClaw detection, add isatty guard, fix print_warning im…
teknium1 Apr 12, 2026
a266238
fix(weixin): streaming cursor, media uploads, markdown links, blank m…
teknium1 Apr 12, 2026
651419b
fix: make mimo-v2-pro the default model for Nous portal users
teknium1 Apr 12, 2026
8ec0656
feat(tts): add speed support for Edge TTS and OpenAI TTS
0xbyt4 Apr 12, 2026
0d0d27d
test(tts): add speed config tests for Edge, OpenAI, and MiniMax
teknium1 Apr 12, 2026
4a9c356
fix(compression): pass configured context_length to feasibility check
ygd58 Apr 12, 2026
bc4e274
test: add tests for compression config_context_length passthrough
teknium1 Apr 13, 2026
ea2829a
fix(weixin,wecom,matrix): respect system proxy via aiohttp trust_env
MaybeRichard Apr 12, 2026
e8385f6
docs: add HermesClaw to community ecosystem
AaronWong1999 Apr 10, 2026
bcad679
fix(api_server): normalize array-based content parts in chat completions
teknium1 Apr 13, 2026
88a12af
feat: add `hermes debug share` — upload debug report to pastebin (#8681)
teknium1 Apr 13, 2026
c7d8d10
fix(matrix): trust m.mentions.user_ids as authoritative mention signal
teknium1 Apr 13, 2026
f724079
fix(gateway): reject known-weak placeholder credentials at startup
teknium1 Apr 13, 2026
3cd6cbe
feat: add /debug slash command for all platforms
teknium1 Apr 13, 2026
9e992df
fix(telegram): use UTF-16 code units for message length splitting (#8…
teknium1 Apr 13, 2026
5fae356
fix: show full last assistant response when resuming a session (#8724)
teknium1 Apr 13, 2026
15b1a3a
fix: improve WhatsApp UX — chunking, formatting, streaming (#8723)
teknium1 Apr 13, 2026
3636f64
fix: resolve npm audit vulnerabilities in browser tools and whatsapp …
teknium1 Apr 13, 2026
a0cd2c5
fix(gateway): verbose tool progress no longer truncates args when too…
teknium1 Apr 13, 2026
83ca084
fix: preserve dots in model names for OpenCode Zen and ZAI providers …
teknium1 Apr 13, 2026
b22663e
docs: restore Orchestra Research attribution in research-paper-writin…
teknium1 Apr 13, 2026
8a64f3e
feat(gateway): notify /restart requester when gateway comes back online
teknium1 Apr 13, 2026
c052cf0
fix(security): validate domain/service params in ha_call_service to p…
Dusk1e Apr 12, 2026
e2a9b53
feat: web UI dashboard for managing Hermes Agent (#8756)
teknium1 Apr 13, 2026
276d20e
fix(gateway): /restart uses service restart under systemd instead of …
teknium1 Apr 13, 2026
964ef68
fix(gateway): improve /restart response with fallback instructions
teknium1 Apr 13, 2026
73ed09e
fix(gateway): keep venv python symlink unresolved when remapping paths
Apr 11, 2026
35b11f4
docs: add web dashboard documentation (#8864)
teknium1 Apr 13, 2026
397eae5
fix: recover partial streamed content on connection failure
teknium1 Apr 13, 2026
8e0ae66
fix(skills): correct TTS/STT providers, add missing platforms/command…
hqhq1025 Apr 13, 2026
3804556
fix: restore clarify toolset row removed in cherry-pick
teknium1 Apr 13, 2026
934318b
fix: budget-exhausted conversations now get a summary instead of empt…
teknium1 Apr 13, 2026
67fece1
feat(cli): show notification when iteration budget is reached
teknium1 Apr 13, 2026
39b83f3
fix: remove sandbox language from tool descriptions
teknium1 Apr 13, 2026
3e99964
fix(agent): prefer Ollama Modelfile num_ctx over GGUF training max
ismell0992-afk Apr 13, 2026
e77f135
fix(cli): narrow Nous Hermes non-agentic warning to actual hermes-3/-…
ismell0992-afk Apr 13, 2026
e469f3f
fix: sanitize .env before loading to prevent token duplication (#8908)
Apr 13, 2026
cea34dc
fix: follow-up for salvaged PR #8939
teknium1 Apr 13, 2026
0998a57
refactor: remove 5 dead utility functions from utils.py (#8975)
teknium1 Apr 13, 2026
8604896
fix(cli): sanitize surrogate characters in handle_paste
XiaoXiao0221 Apr 13, 2026
11e2e04
fix(telegram): pass proxy URL explicitly to HTTPXRequest when proxy e…
MaybeRichard Apr 13, 2026
bca22f3
fix(homeassistant): #8912 resolve XML tool calling loop by casting ne…
dip8989 Apr 13, 2026
8dfee98
fix: clean up description escaping, add string-data tests
teknium1 Apr 13, 2026
70f490a
fix(web): CronPage crash when rendering schedule object
yoniebans Apr 13, 2026
3365abd
fix: use correct 'completed' state in status badge map, clean up blan…
teknium1 Apr 13, 2026
8290169
feat(wecom): add platform hint for native media sending
limars874 Apr 13, 2026
381810a
feat: fix SQLite safety in hermes backup + add --quick snapshots + /s…
teknium1 Apr 13, 2026
3a64348
fix(discord): voice session continuity and signal handler thread safety
twilwa Apr 13, 2026
d945cf6
fix(docker): add .venv to .dockerignore
flobo3 Apr 13, 2026
dbed40f
fix: reopen resumed gateway sessions in sqlite
gaixianggeng Apr 13, 2026
a5bc698
fix(session_search): improve truncation to center on actual query mat…
AlsayedHoota Apr 13, 2026
acdff02
test: add multi-word query tests for truncation match strategy
teknium1 Apr 13, 2026
a5bd56e
fix: eliminate provider hang dead zones in retry/timeout architecture…
teknium1 Apr 13, 2026
d8a5210
fix(weixin): rename send_document parameter to match base class
flobo3 Apr 13, 2026
23f668d
fix: extract Gemma 4 <thought> reasoning in _extract_reasoning() (#8991)
teknium1 Apr 13, 2026
c1809e8
fix(gateway): handle stale lock files in acquire_scoped_lock
WorldInnovationsDepartment Apr 13, 2026
e3ffe5b
fix: remove legacy compression.summary_* config and env var fallbacks…
teknium1 Apr 13, 2026
8ec1608
fix(agent): propagate api_mode to vision provider resolution
luyao618 Apr 13, 2026
2a9e50c
fix(copilot): resolve GHE token poisoning when GITHUB_TOKEN is set
HearthCore Apr 13, 2026
587eeb5
chore: remove duplicate dead _try_gh_cli_token / _gh_cli_candidates f…
teknium1 Apr 13, 2026
311dac1
fix(file_tools): block /private/etc writes on macOS symlink bypass
konsisumer Apr 13, 2026
76eecf3
fix(model): Support providers: dict for custom endpoints in /model
geoffwellman Apr 13, 2026
28a9c43
fix: resolve key_env to actual API key value instead of env var name
teknium1 Apr 13, 2026
b909a9e
fix: extend ASCII-locale UnicodeEncodeError recovery to full request …
kimsr96 Apr 13, 2026
0dd26c9
fix(tests): fix 78 CI test failures and remove dead test (#9036)
teknium1 Apr 13, 2026
c449cd1
fix(config): restore custom providers after v11→v12 migration
BlackishGreen33 Apr 13, 2026
4ca6668
docs: comprehensive update for recent merged PRs (#9019)
teknium1 Apr 13, 2026
ba50fa3
docs: fix 30+ inaccuracies across documentation (#9023)
teknium1 Apr 13, 2026
2773b18
fix(run_agent): refresh activity during streaming responses
Apr 13, 2026
247929b
feat: dashboard OAuth provider management
kshitijk4poor Apr 13, 2026
ef18088
fix: guard anthropic_adapter import + use canonical authorize URL
teknium1 Apr 13, 2026
2b3aa36
feat(providers): add kimi-coding-cn provider for mainland China users
hcshen0111 Apr 13, 2026
0e60a9d
fix: add kimi-coding-cn to remaining provider touchpoints
teknium1 Apr 13, 2026
1af2e18
chore: release v0.9.0 (v2026.4.13) (#9182)
teknium1 Apr 13, 2026
a27b3c8
add git to the container installed packages (fixes #8439)
m0n5t3r Apr 12, 2026
a6f07a6
docs: fix hermes web → hermes dashboard in web-dashboard.md (#9207)
teknium1 Apr 13, 2026
d5fd74c
fix(ci): don't fail supply chain scan when PR comment can't be posted…
SHL0MS Apr 13, 2026
952a885
fix(gateway): /stop no longer resets the session (#9224)
teknium1 Apr 13, 2026
204e919
fix: consolidate provider lists into single CANONICAL_PROVIDERS sourc…
teknium1 Apr 13, 2026
c763ed5
fix(agent): resolve context_length for plugin context engines
stephenschoettler Apr 13, 2026
063244b
test: add coverage for plugin context engine init (#9071)
teknium1 Apr 13, 2026
8680f61
fix(copilot-acp): keep acp runtime off responses path
helix4u Apr 13, 2026
b27eaaa
fix: improve ACP type check and restore comment accuracy
teknium1 Apr 13, 2026
0ffb6f2
fix(matrix): skip cursor-only stream placeholder messages
helix4u Apr 12, 2026
f94f53c
fix(matrix): disable streaming cursor decoration on Matrix
helix4u Apr 12, 2026
def8b95
fix: add contributor audit script + fix missed contributors (#9264)
teknium1 Apr 13, 2026
448b8bf
docs: add slack files:read scope
helix4u Apr 13, 2026
a66fc13
fix: add files:read to SLACK_BOT_TOKEN description in config.py
teknium1 Apr 13, 2026
8d023e4
refactor: remove dead code — 1,784 lines across 77 files (#9180)
teknium1 Apr 13, 2026
32cea0c
fix: dashboard shows Nous Portal as 'not connected' despite active au…
teknium1 Apr 13, 2026
01f7100
fix(config): include model field in custom_providers dedup key
akhater Apr 13, 2026
ec9bf9e
feat(model-picker): group custom_providers by name into a single row …
Apr 12, 2026
ac80bd6
test: add regression tests for custom_providers multi-model dedup and…
teknium1 Apr 13, 2026
78fa758
feat(web): make Web UI responsive for mobile
Apr 13, 2026
0a4cf5b
feat(providers): add Arcee AI as direct API provider
arthurbr11 Apr 14, 2026
f324222
fix: add vLLM/local server error patterns + MCP initial connection re…
teknium1 Apr 14, 2026
f6626fc
refactor: remove provider tier system — flat picker in hermes model (…
teknium1 Apr 14, 2026
d15efc9
fix: correct GPT-5 family context lengths in fallback defaults (#9309)
teknium1 Apr 14, 2026
0cc7f79
fix(streaming): prevent duplicate Telegram replies when stream task i…
teknium1 Apr 14, 2026
5621fc4
chore: rename AI Gateway → Vercel AI Gateway, move Xiaomi to #5 (#9326)
teknium1 Apr 14, 2026
bc3844c
feat: react-router, sidebar layout, sticky header, dropdown component…
austinpickett Apr 14, 2026
5719c1f
fix: add 75 contributor email→username mappings + .mailmap (#9358)
teknium1 Apr 14, 2026
dd86dee
feat(ci): add contributor attribution check on PRs (#9376)
teknium1 Apr 14, 2026
943c015
feat: add openrouter/elephant-alpha to curated model lists (#9378)
teknium1 Apr 14, 2026
ea74f61
Merge pull request #9370 from NousResearch/fix/dashboard-routing
austinpickett Apr 14, 2026
eabc0a2
feat(plugins): let pre_tool_call hooks block tool execution
gianfrancopiana Apr 14, 2026
8fd3093
feat(web): add context window support to dashboard config
kshitijk4poor Apr 14, 2026
62fb6b2
fix: guard zero context length display + add 19 tests for model info
teknium1 Apr 14, 2026
f0b353b
feat(skills): add fitness-nutrition skill to optional-skills
haileymarshall Apr 14, 2026
69d619c
docs: add Hugging Face and Xiaomi MiMo to README provider list (#9406)
teknium1 Apr 14, 2026
e085908
fix: honor interrupts during MCP tool waits
helix4u Apr 14, 2026
3de2b98
fix(streaming): filter <think> blocks from gateway stream consumer
teknium1 Apr 14, 2026
110892f
docs: move Xiaomi MiMo up in README provider list
teknium1 Apr 14, 2026
cdd4481
fix(anthropic): send fast mode speed via extra_body
bobashopcashier Apr 13, 2026
d631431
feat: prompt for display name when adding custom providers (#9420)
teknium1 Apr 14, 2026
a91b9bb
feat(skills): add drug-discovery optional skill — ChEMBL, PubChem, Op…
oluwadareab12 Apr 14, 2026
35424f8
chore: add bennytimz to AUTHOR_MAP
teknium1 Apr 14, 2026
38ad158
fix: auto-correct close model name matches in /model validation (#9424)
teknium1 Apr 14, 2026
19199cd
fix: clamp 'minimal' reasoning effort to 'low' on Responses API (#9429)
teknium1 Apr 14, 2026
a2ea237
feat: add internationalization (i18n) to web dashboard — English + Ch…
teknium1 Apr 14, 2026
9ffc26b
docs: update docker version check command
benbarclay Apr 14, 2026
bc93641
feat(skins): add built-in daylight skin
chongweiliu Apr 14, 2026
6dc8f8e
feat(skin): add warm-lightmode skin from PR #4811
teknium1 Apr 14, 2026
c7e2fe6
fix: make tool registry reads thread-safe
g-guthrie Apr 14, 2026
eb44abd
feat: improve file search UX — fuzzy @ completions, mtime sorting, be…
teknium1 Apr 14, 2026
87bfc28
feat: add QQ Bot platform adapter (Official API v2)
Apr 13, 2026
884cd92
feat(gateway): unify QQBot branding, add PLATFORM_HINTS, fix streamin…
WideLee Apr 13, 2026
4654f75
fix: QQBot missing integration points, timestamp parsing, test fix
teknium1 Apr 14, 2026
8d545da
fix: add platform lock, send retry, message splitting, REST one-shot,…
teknium1 Apr 14, 2026
1acf81f
docs: add QQBot to all 14 docs pages (full platform parity)
teknium1 Apr 14, 2026
2cfd2da
feat(gateway): add ignored_threads config for Telegram
Jiawen-lee Apr 14, 2026
2558d28
fix: resolve CI test failures — add missing functions, fix stale test…
teknium1 Apr 14, 2026
b4fcec6
fix: prevent streaming cursor from appearing as standalone messages (…
teknium1 Apr 14, 2026
7ad47ac
fix: resolve remaining 4 CI test failures (#9543)
teknium1 Apr 14, 2026
16f9d02
Merge pull request #9475 from NousResearch/docs/fix-docker-version-co…
benbarclay Apr 14, 2026
d1914ed
Merge remote-tracking branch 'origin/main' into local
jyf2100 Apr 14, 2026
327cf92
chore: use China mirrors for faster downloads and fix CORS/ServiceWor…
jyf2100 Apr 14, 2026
261c645
refactor: rewrite SandboxRouter constructor + endpoints annotation lo…
jyf2100 Apr 17, 2026
5ee45e3
feat: add expireTime to BatchSandbox creation and per-request TTL ren…
jyf2100 Apr 17, 2026
9ad6ebd
fix: add patch verb to RBAC for BatchSandbox TTL renewal
jyf2100 Apr 17, 2026
352adf0
feat: update gateway deployment for single-server + merged dashboard
jyf2100 Apr 17, 2026
576aa7c
feat: simplify pool.yaml for single-server deployment
jyf2100 Apr 17, 2026
c6b2e95
feat: add local PV + PVC for single-server storage
jyf2100 Apr 17, 2026
e78946f
feat: add Open WebUI K8s manifests
jyf2100 Apr 17, 2026
b52a5f2
feat: update ingress with three-route configuration
jyf2100 Apr 17, 2026
6586d4e
feat: add dashboard port to gateway NetworkPolicy
jyf2100 Apr 17, 2026
45015e1
fix: address expert review findings - security context, TLS, RBAC, lo…
jyf2100 Apr 17, 2026
4e1d26d
fix: address final review findings - docstrings, RBAC cleanup, timeou…
jyf2100 Apr 17, 2026
62032b5
fix: use actual hostname roc-epyc in PV nodeAffinity
jyf2100 Apr 17, 2026
d1a6898
docs: add hermes admin panel implementation plan (20 tasks, 6 phases)
jyf2100 Apr 18, 2026
1377649
feat(admin): scaffold backend project with FastAPI app and Pydantic m…
jyf2100 Apr 18, 2026
a0b5d60
feat(admin): add backend core modules (k8s client, config manager, te…
jyf2100 Apr 18, 2026
d86b420
feat(admin): wire all 28 API endpoints and SPA static serving
jyf2100 Apr 18, 2026
8c22760
feat(admin): scaffold frontend with Vite, API client, i18n, shared co…
jyf2100 Apr 18, 2026
e31918d
feat(admin): add dashboard page with cluster status bar and agent cards
jyf2100 Apr 18, 2026
2838b60
feat(admin): add agent detail page with overview/config/logs/events/h…
jyf2100 Apr 18, 2026
3fe0bec
feat(admin): add create agent wizard and settings page
jyf2100 Apr 18, 2026
32e69e8
feat(admin): add K8s manifests, Dockerfile, and deploy scripts
jyf2100 Apr 18, 2026
1deccfd
fix(admin): address code review issues and simplify frontend and backend
jyf2100 Apr 18, 2026
cdcc28a
fix(admin): resolve E2E deployment issues and code review feedback
jyf2100 Apr 18, 2026
e378652
fix: align backend Provider enum with frontend (zai -> zhipuai)
jyf2100 Apr 18, 2026
48adef1
fix(admin): resolve E2E bugs and add input validation
jyf2100 Apr 19, 2026
7cbb7dd
fix(admin): add SPA fallback middleware for browser navigation
jyf2100 Apr 19, 2026
5196bfc
fix(admin): fix SPA routing — remove basename prefix from navigate() …
jyf2100 Apr 19, 2026
622b0c3
fix: resolve yaml.dump enum serialization and multiple code quality i…
jyf2100 Apr 19, 2026
945e8c9
fix: resolve frontend CSS, routing, and API error handling issues
jyf2100 Apr 19, 2026
a4ab00f
chore: add nginx proxy timeout annotations and merged entrypoint
jyf2100 Apr 19, 2026
23e431f
fix: add resource usage data from metrics-server to admin API
jyf2100 Apr 19, 2026
dadbd9d
fix: address code review issues — RBAC, N+1 queries, detail resources…
jyf2100 Apr 19, 2026
decd80f
fix: remove hostNetwork and move asyncio.Lock to instance
jyf2100 Apr 19, 2026
bcda53f
feat: redesign admin frontend with neon cyberpunk theme
jyf2100 Apr 20, 2026
30cc471
refactor: clean up admin frontend — extract shared utils, deduplicate…
jyf2100 Apr 20, 2026
f2cf736
feat(admin): add WeChat integration, display_name, API key reveal, an…
jyf2100 Apr 24, 2026
bd1fe21
docs: add swarm collaboration supplementary design document
jyf2100 Apr 25, 2026
c5ce973
docs: merge swarm supplementary design into main design document
jyf2100 Apr 25, 2026
c9f9186
chore: add E2E test artifacts and OpenSandbox to .gitignore
jyf2100 Apr 25, 2026
232b5db
feat(swarm): add core runtime — messaging, circuit breaker, resilient…
jyf2100 Apr 25, 2026
acbc334
feat(swarm): add K8s manifests for Redis deployment
jyf2100 Apr 25, 2026
3553e05
feat(admin): add Swarm REST API and SSE endpoints
jyf2100 Apr 25, 2026
981944c
feat(admin): add Swarm frontend — overview page, SSE client, Zustand …
jyf2100 Apr 25, 2026
d3dfffe
test(admin): add Swarm E2E tests and update build artifacts
jyf2100 Apr 25, 2026
0f02bde
docs: add Swarm Phase 1 implementation plan and admin panel PRD
jyf2100 Apr 25, 2026
214a2ee
feat(admin): add CLAUDE.md dev/test specs and automated check fixtures
jyf2100 Apr 25, 2026
9a2b51e
fix(admin): add redis dependency and swarm package to Docker image
jyf2100 Apr 25, 2026
1798351
feat(swarm): integrate agent registration into runtime and admin pipe…
jyf2100 Apr 25, 2026
89d9e4a
fix(swarm): fix capabilities deserialization in admin API
jyf2100 Apr 26, 2026
e82c1a9
fix(e2e): fix swarm test assertions for base path and i18n
jyf2100 Apr 26, 2026
63cf202
chore: add .claude/, .coverage, admin/swarm/ to .gitignore
jyf2100 Apr 26, 2026
4c2f721
fix(security): address CRITICAL review findings
jyf2100 Apr 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 1 addition & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@

# Dependencies
node_modules
.venv

# CI/CD
.github
Expand Down
18 changes: 18 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,15 @@
# KIMI_BASE_URL=https://api.kimi.com/coding/v1 # Default for sk-kimi- keys
# KIMI_BASE_URL=https://api.moonshot.ai/v1 # For legacy Moonshot keys
# KIMI_BASE_URL=https://api.moonshot.cn/v1 # For Moonshot China keys
# KIMI_CN_API_KEY= # Dedicated Moonshot China key

# =============================================================================
# LLM PROVIDER (Arcee AI)
# =============================================================================
# Arcee AI provides access to Trinity models (trinity-mini, trinity-large-*)
# Get an Arcee key at: https://chat.arcee.ai/
# ARCEEAI_API_KEY=
# ARCEE_BASE_URL= # Override default base URL

# =============================================================================
# LLM PROVIDER (MiniMax)
Expand Down Expand Up @@ -89,6 +98,15 @@
# Optional base URL override:
# HERMES_QWEN_BASE_URL=https://portal.qwen.ai/v1

# =============================================================================
# LLM PROVIDER (Xiaomi MiMo)
# =============================================================================
# Xiaomi MiMo models (mimo-v2-pro, mimo-v2-omni, mimo-v2-flash).
# Get your key at: https://platform.xiaomimimo.com
# XIAOMI_API_KEY=your_key_here
# Optional base URL override:
# XIAOMI_BASE_URL=https://api.xiaomimimo.com/v1

# =============================================================================
# TOOL API KEYS
# =============================================================================
Expand Down
2 changes: 2 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Auto-generated files — collapse diffs and exclude from language stats
web/package-lock.json linguist-generated=true
30 changes: 24 additions & 6 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ body:
**Before submitting**, please:
- [ ] Search [existing issues](https://github.com/NousResearch/hermes-agent/issues) to avoid duplicates
- [ ] Update to the latest version (`hermes update`) and confirm the bug still exists
- [ ] Run `hermes debug share` and paste the links below (see Debug Report section)

- type: textarea
id: description
Expand Down Expand Up @@ -82,6 +83,25 @@ body:
- Slack
- WhatsApp

- type: textarea
id: debug-report
attributes:
label: Debug Report
description: |
Run `hermes debug share` from your terminal and paste the links it prints here.
This uploads your system info, config, and recent logs to a paste service automatically.

If you're in an interactive chat session, you can also use the `/debug` slash command — it does the same thing.

If the upload fails, run `hermes debug share --local` and paste the output directly.
placeholder: |
Report https://paste.rs/abc123
agent.log https://paste.rs/def456
gateway.log https://paste.rs/ghi789
render: shell
validations:
required: true

- type: input
id: os
attributes:
Expand All @@ -97,23 +117,21 @@ body:
label: Python Version
description: Output of `python --version`
placeholder: "3.11.9"
validations:
required: true

- type: input
id: hermes-version
attributes:
label: Hermes Version
description: Output of `hermes version`
placeholder: "2.1.0"
validations:
required: true

- type: textarea
id: logs
attributes:
label: Relevant Logs / Traceback
description: Paste any error output, traceback, or log messages. This will be auto-formatted as code.
label: Additional Logs / Traceback (optional)
description: |
The debug report above covers most logs. Use this field for any extra error output,
tracebacks, or screenshots not captured by `hermes debug share`.
render: shell

- type: textarea
Expand Down
12 changes: 12 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
Expand Up @@ -71,3 +71,15 @@ body:
label: Contribution
options:
- label: I'd like to implement this myself and submit a PR

- type: textarea
id: debug-report
attributes:
label: Debug Report (optional)
description: |
If this feature request is related to a problem you're experiencing, run `hermes debug share` and paste the links here.
In an interactive chat session, you can use `/debug` instead.
This helps us understand your environment and any related logs.
placeholder: |
Report https://paste.rs/abc123
render: shell
20 changes: 16 additions & 4 deletions .github/ISSUE_TEMPLATE/setup_help.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@ body:
Sorry you're having trouble! Please fill out the details below so we can help.

**Quick checks first:**
- Run `hermes doctor` and include the output below
- Run `hermes debug share` and paste the links in the Debug Report section below
- If you're in a chat session, you can use `/debug` instead — it does the same thing
- Try `hermes update` to get the latest version
- Check the [README troubleshooting section](https://github.com/NousResearch/hermes-agent#troubleshooting)
- For general questions, consider the [Nous Research Discord](https://discord.gg/NousResearch) for faster help
Expand Down Expand Up @@ -74,10 +75,21 @@ body:
placeholder: "2.1.0"

- type: textarea
id: doctor-output
id: debug-report
attributes:
label: Output of `hermes doctor`
description: Run `hermes doctor` and paste the full output. This will be auto-formatted.
label: Debug Report
description: |
Run `hermes debug share` from your terminal and paste the links it prints here.
This uploads your system info, config, and recent logs to a paste service automatically.

If you're in an interactive chat session, you can also use the `/debug` slash command — it does the same thing.

If the upload fails or install didn't get that far, run `hermes debug share --local` and paste the output directly.
If even that doesn't work, run `hermes doctor` and paste that output instead.
placeholder: |
Report https://paste.rs/abc123
agent.log https://paste.rs/def456
gateway.log https://paste.rs/ghi789
render: shell

- type: textarea
Expand Down
70 changes: 70 additions & 0 deletions .github/workflows/contributor-check.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
name: Contributor Attribution Check

on:
pull_request:
branches: [main]
paths:
# Only run when code files change (not docs-only PRs)
- '*.py'
- '**/*.py'
- '.github/workflows/contributor-check.yml'

jobs:
check-attribution:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0 # Full history needed for git log

- name: Check for unmapped contributor emails
run: |
# Get the merge base between this PR and main
MERGE_BASE=$(git merge-base origin/main HEAD)

# Find any new author emails in this PR's commits
NEW_EMAILS=$(git log ${MERGE_BASE}..HEAD --format='%ae' --no-merges | sort -u)

if [ -z "$NEW_EMAILS" ]; then
echo "No new commits to check."
exit 0
fi

# Check each email against AUTHOR_MAP in release.py
MISSING=""
while IFS= read -r email; do
# Skip teknium and bot emails
case "$email" in
*teknium*|*noreply@github.com*|*dependabot*|*github-actions*|*anthropic.com*|*cursor.com*)
continue ;;
esac

# Check if email is in AUTHOR_MAP (either as a key or matches noreply pattern)
if echo "$email" | grep -qP '\+.*@users\.noreply\.github\.com'; then
continue # GitHub noreply emails auto-resolve
fi

if ! grep -qF "\"${email}\"" scripts/release.py 2>/dev/null; then
AUTHOR=$(git log --author="$email" --format='%an' -1)
MISSING="${MISSING}\n ${email} (${AUTHOR})"
fi
done <<< "$NEW_EMAILS"

if [ -n "$MISSING" ]; then
echo ""
echo "⚠️ New contributor email(s) not in AUTHOR_MAP:"
echo -e "$MISSING"
echo ""
echo "Please add mappings to scripts/release.py AUTHOR_MAP:"
echo -e "$MISSING" | while read -r line; do
email=$(echo "$line" | sed 's/^ *//' | cut -d' ' -f1)
[ -z "$email" ] && continue
echo " \"${email}\": \"<github-username>\","
done
echo ""
echo "To find the GitHub username for an email:"
echo " gh api 'search/users?q=EMAIL+in:email' --jq '.items[0].login'"
exit 1
else
echo "✅ All contributor emails are mapped in AUTHOR_MAP."
fi
10 changes: 9 additions & 1 deletion .github/workflows/deploy-site.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,11 +41,19 @@ jobs:
python-version: '3.11'

- name: Install PyYAML for skill extraction
run: pip install pyyaml
run: pip install pyyaml httpx

- name: Extract skill metadata for dashboard
run: python3 website/scripts/extract-skills.py

- name: Build skills index (if not already present)
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
if [ ! -f website/static/api/skills-index.json ]; then
python3 scripts/build_skills_index.py || echo "Skills index build failed (non-fatal)"
fi

- name: Install dependencies
run: npm ci
working-directory: website
Expand Down
9 changes: 2 additions & 7 deletions .github/workflows/docker-publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -69,9 +69,7 @@ jobs:
file: Dockerfile
push: true
platforms: linux/amd64,linux/arm64
tags: |
nousresearch/hermes-agent:latest
nousresearch/hermes-agent:${{ github.sha }}
tags: nousresearch/hermes-agent:latest
cache-from: type=gha
cache-to: type=gha,mode=max

Expand All @@ -83,9 +81,6 @@ jobs:
file: Dockerfile
push: true
platforms: linux/amd64,linux/arm64
tags: |
nousresearch/hermes-agent:latest
nousresearch/hermes-agent:${{ github.event.release.tag_name }}
nousresearch/hermes-agent:${{ github.sha }}
tags: nousresearch/hermes-agent:${{ github.event.release.tag_name }}
cache-from: type=gha
cache-to: type=gha,mode=max
101 changes: 101 additions & 0 deletions .github/workflows/skills-index.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
name: Build Skills Index

on:
schedule:
# Run twice daily: 6 AM and 6 PM UTC
- cron: '0 6,18 * * *'
workflow_dispatch: # Manual trigger
push:
branches: [main]
paths:
- 'scripts/build_skills_index.py'
- '.github/workflows/skills-index.yml'

permissions:
contents: read

jobs:
build-index:
# Only run on the upstream repository, not on forks
if: github.repository == 'NousResearch/hermes-agent'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- uses: actions/setup-python@v5
with:
python-version: '3.11'

- name: Install dependencies
run: pip install httpx pyyaml

- name: Build skills index
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: python scripts/build_skills_index.py

- name: Upload index artifact
uses: actions/upload-artifact@v4
with:
name: skills-index
path: website/static/api/skills-index.json
retention-days: 7

deploy-with-index:
needs: build-index
runs-on: ubuntu-latest
permissions:
pages: write
id-token: write
environment:
name: github-pages
url: ${{ steps.deploy.outputs.page_url }}
# Only deploy on schedule or manual trigger (not on every push to the script)
if: github.event_name == 'schedule' || github.event_name == 'workflow_dispatch'
steps:
- uses: actions/checkout@v4

- uses: actions/download-artifact@v4
with:
name: skills-index
path: website/static/api/

- uses: actions/setup-node@v4
with:
node-version: 20
cache: npm
cache-dependency-path: website/package-lock.json

- uses: actions/setup-python@v5
with:
python-version: '3.11'

- name: Install PyYAML for skill extraction
run: pip install pyyaml

- name: Extract skill metadata for dashboard
run: python3 website/scripts/extract-skills.py

- name: Install dependencies
run: npm ci
working-directory: website

- name: Build Docusaurus
run: npm run build
working-directory: website

- name: Stage deployment
run: |
mkdir -p _site/docs
cp -r landingpage/* _site/
cp -r website/build/* _site/docs/
echo "hermes-agent.nousresearch.com" > _site/CNAME

- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: _site

- name: Deploy to GitHub Pages
id: deploy
uses: actions/deploy-pages@v4
2 changes: 1 addition & 1 deletion .github/workflows/supply-chain-audit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,7 @@ jobs:
---
*Automated scan triggered by [supply-chain-audit](/.github/workflows/supply-chain-audit.yml). If this is a false positive, a maintainer can approve after manual review.*"

gh pr comment "${{ github.event.pull_request.number }}" --body "$BODY"
gh pr comment "${{ github.event.pull_request.number }}" --body "$BODY" || echo "::warning::Could not post PR comment (expected for fork PRs — GITHUB_TOKEN is read-only)"

- name: Fail on critical findings
if: steps.scan.outputs.critical == 'true'
Expand Down
Loading
Loading