Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
292 commits
Select commit Hold shift + click to select a range
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
e88aa8a
feat(web): re-apply dashboard UI improvements on top of i18n
austinpickett Apr 14, 2026
4ffaac5
fix(web): i18n fixes for sidebar and dropdown labels
austinpickett Apr 14, 2026
206259d
Merge pull request #9701 from NousResearch/fix/dashboard-routing-v2
austinpickett Apr 14, 2026
7061187
fix(cli): fix doctor checks for Kimi China credentials
Apr 14, 2026
449c17e
fix(gateway): support Telegram MarkdownV2 expandable blockquotes
coekfung Apr 11, 2026
420d270
fix(tools): keep memory tool available when fcntl is unavailable
Dusk1e Apr 14, 2026
5f36b42
fix: nest msvcrt import inside fcntl except block
teknium1 Apr 14, 2026
0e7dd30
fix(browser): fix Camofox JS eval endpoint, userId, and package renam…
teknium1 Apr 14, 2026
7636baf
feat(discord): extract reply text from message references
ChimingLiu Apr 14, 2026
8ea9ceb
fix: guard reply_to_text against DeletedReferencedMessage
teknium1 Apr 14, 2026
8a002d4
chore: add ChimingLiu to AUTHOR_MAP
teknium1 Apr 14, 2026
4b47856
fix: load credentials from HERMES_HOME .env in trajectory_compressor
Dusk1e Apr 14, 2026
b21b3bf
feat(plugins): namespaced skill registration for plugin skill bundles
N0nb0at Apr 14, 2026
a686dbd
feat(cli): add dynamic shell completion for bash, zsh, and fish
leozeli Apr 14, 2026
c95b1c5
fix(install): add fish shell support in install.sh
leozeli Apr 14, 2026
b867171
fix: preserve profile name completion in dynamic shell completion
teknium1 Apr 14, 2026
9bdfcd1
feat: sort tool search results by score and add corresponding unit test
Disaster-Terminator Apr 9, 2026
e964cfc
fix(gateway): trigger memory provider shutdown on /new and /reset
fancydirty Apr 11, 2026
1ace9b4
fix: memory_setup.py - write non-secret env vars, check all fields in…
ZaynJarvis Apr 13, 2026
90c9834
feat: gateway proxy mode — forward messages to remote API server
teknium1 Apr 14, 2026
8bb5973
docs: add proxy mode documentation
teknium1 Apr 14, 2026
b583210
fix(gateway): fix regression causing display.streaming to override ro…
asheriif Apr 12, 2026
99bcc2d
fix(security): harden dashboard API against unauthenticated access (#…
teknium1 Apr 14, 2026
064f8d7
fix(gateway/bluebubbles): remove invalid "message" from webhook event…
cypres0099 Apr 14, 2026
8b52356
fix(gateway/bluebubbles): fall back to data.chats[0].guid when chatGu…
cypres0099 Apr 14, 2026
326cbbe
fix(gateway/bluebubbles): embed password in registered webhook URL fo…
cypres0099 Apr 14, 2026
3e0bccc
fix: update existing webhook tests to use _webhook_register_url
teknium1 Apr 14, 2026
0bd3f52
fix: detect copilot provider via gh auth token in /model picker
Marvae Apr 14, 2026
a37a095
fix: detect qwen-oauth provider via CLI tokens in /model picker
teknium1 Apr 14, 2026
95d11df
docs: automation templates gallery + comparison post (#9821)
teknium1 Apr 14, 2026
fa8c448
fix: notify active sessions on gateway shutdown + update health check
teknium1 Apr 14, 2026
1aa7662
fix(feishu): keep approval clicks synchronized with callback card state
Roy-oss1 Apr 14, 2026
9bbf765
chore: add Roy-oss1 to AUTHOR_MAP
teknium1 Apr 14, 2026
eed891f
security: supply chain hardening — CI pinning, dep pinning, and code …
teknium1 Apr 14, 2026
397386c
fix: gateway auto-recovers from unexpected SIGTERM via systemd (#5646)
teknium1 Apr 14, 2026
45595f4
feat(dashboard): add HTTP health probe for cross-container gateway de…
Apr 14, 2026
6ed682f
fix: normalise GATEWAY_HEALTH_URL to base URL before probing
Apr 14, 2026
673acf2
fix: override stale 'stopped' state when health probe confirms gatewa…
Apr 14, 2026
139a5e3
docs(docker): add dashboard section, expose API port, update Compose …
Apr 14, 2026
353b5ba
test: add tests for /health/detailed endpoint and gateway health probe
teknium1 Apr 14, 2026
1525624
fix: block agent from self-destructing gateway via terminal (#6666)
teknium1 Apr 14, 2026
55ce76b
feat: add architecture-diagram skill (Cocoon AI port) (#9906)
teknium1 Apr 14, 2026
1e5e1e8
fix: ESC cancels secret/sudo prompts, clearer skip messaging (#9902)
teknium1 Apr 14, 2026
6448e1d
feat(zai): add GLM-5V-Turbo support for coding plan (#9907)
teknium1 Apr 14, 2026
039023f
diag: log all hermes processes on unexpected gateway shutdown (#9905)
teknium1 Apr 14, 2026
10494b4
feat(discord): register skills under /skill command group with catego…
teknium1 Apr 14, 2026
3b50821
feat(xai): add xAI/Grok to provider prefix stripping
Julientalbot Apr 14, 2026
b24e5ee
feat(google-workspace): add --from flag for custom sender display nam…
teknium1 Apr 14, 2026
cfa2453
fix(discord): register native /restart slash command
areu01or00 Apr 13, 2026
3ca7417
chore: add areu01or00 to AUTHOR_MAP
teknium1 Apr 14, 2026
56c34ac
fix(browser): add termux PATH fallbacks
adybag14-cyber Apr 14, 2026
ac1f8fc
docs(termux): note browser tool PATH auto-discovery
teknium1 Apr 14, 2026
e7475b1
feat: auto-continue interrupted agent work after gateway restart (#4493)
teknium1 Apr 14, 2026
a9c78d0
feat(setup): add recommendation badges to tool provider selection (#9…
teknium1 Apr 14, 2026
847d7cb
fix: improve CLI text padding, word-wrap for responses and verbose to…
teknium1 Apr 14, 2026
6c89306
fix: break stuck session resume loops after repeated restarts (#7536)
teknium1 Apr 15, 2026
2a98098
fix: hermes gateway restart waits for service to come back up (#8260)
teknium1 Apr 15, 2026
cda64a5
fix(mcp): resolve toolsets from live registry
g-guthrie Apr 14, 2026
c10fea8
fix(mcp): make server aliases explicit
g-guthrie Apr 14, 2026
498cb7a
chore(release): map greer guthrie attribution
g-guthrie Apr 14, 2026
4610551
fix: update stale comment referencing removed _sync_mcp_toolsets
teknium1 Apr 15, 2026
677f122
fix: remove @staticmethod from _context_completions — crashes on @ me…
kshitijk4poor Apr 14, 2026
da528a8
fix: detect and strip non-ASCII characters from API keys (#6843)
teknium1 Apr 15, 2026
d6c09ab
feat(api-server): stream /v1/responses SSE tool events
simon-marcus Apr 14, 2026
302554b
fix(api-server): format responses tool outputs for open webui
simon-marcus Apr 14, 2026
cf1d718
fix: keep batch-path function_call_output.output as string per OpenAI…
teknium1 Apr 15, 2026
31d0620
chore: add simon-marcus to AUTHOR_MAP
teknium1 Apr 15, 2026
82f364f
feat: add --all flag to gateway start and restart commands (#10043)
teknium1 Apr 15, 2026
9238567
fix: reset retry counters after compression and stop poisoning conver…
zzy-git Apr 14, 2026
23b87c8
chore: add zons-zhaozhy to AUTHOR_MAP
teknium1 Apr 15, 2026
ca0ae56
fix: add 402 billing error hint to gateway error handler (#5220) (#10…
teknium1 Apr 15, 2026
5cbb45d
fix: preserve session_id across previous_response_id chains in /v1/re…
teknium1 Apr 15, 2026
2871ef1
docs: note session continuity for previous_response_id chains (#10060)
teknium1 Apr 15, 2026
4b2a1a4
fix(tools): auto-discover built-in tool modules
g-guthrie Apr 14, 2026
fc6cb5b
fix: tighten AST check to module-level only
teknium1 Apr 15, 2026
ef04de3
docs: update tool-adding instructions for auto-discovery
teknium1 Apr 15, 2026
ba24f05
docs: fix stale docstring reference to _discover_tools in mcp_tool.py
teknium1 Apr 15, 2026
c5688e7
fix(gateway): break compression-exhaustion infinite loop and auto-res…
teknium1 Apr 15, 2026
8548893
feat: entry-level Podman support — find_docker() + rootless entrypoin…
teknium1 Apr 15, 2026
a8b7db3
fix: interrupt agent immediately when user messages during active run…
teknium1 Apr 15, 2026
93fe4ea
fix: warn on invalid context_length format in config.yaml (#10067)
teknium1 Apr 15, 2026
50c35dc
fix: stale agent timeout, uv venv detection, empty response after too…
teknium1 Apr 15, 2026
9855190
feat(compressor): smart collapse, dedup, anti-thrashing, template upg…
kshitijk4poor Apr 15, 2026
5d5d215
fix: sync client.api_key during UnicodeEncodeError ASCII recovery (#1…
teknium1 Apr 15, 2026
772cfb6
fix: stale agent timeout, uv venv detection, empty response after too…
teknium1 Apr 15, 2026
029938f
fix(cli): defensive subparser routing for argparse bpo-9338 (#10113)
teknium1 Apr 15, 2026
9932366
feat(doctor): add Command Installation check for hermes bin symlink
teknium1 Apr 15, 2026
da8bab7
fix(cli): restore messaging toolset for gateway platforms
Apr 13, 2026
df7be3d
fix(cli): /model picker shows curated models instead of full catalog …
teknium1 Apr 15, 2026
03446e0
fix(send_message): accept Matrix room IDs and user MXIDs as explicit …
bkadish Apr 8, 2026
180b144
test: add _parse_target_ref Matrix coverage for salvaged PR #6144
teknium1 Apr 15, 2026
e69526b
fix(send_message): URL-encode Matrix room IDs and add Matrix to schem…
teknium1 Apr 15, 2026
a4e1842
fix: strip reasoning item IDs from Responses API input when store=Fal…
teknium1 Apr 15, 2026
7b2700c
fix(browser): use 127.0.0.1 instead of localhost for CDP default (#10…
teknium1 Apr 15, 2026
2546b7a
fix(gateway): suppress duplicate replies on interrupt and streaming f…
teknium1 Apr 15, 2026
8bc9b5a
fix(skills): use `is None` check for coordinates in find-nearby to av…
haileymarshall Apr 15, 2026
dedc460
fix(skills): handle missing fields in Google Workspace token file gra…
haileymarshall Apr 15, 2026
1c4d321
fix(cron): include job_id in delivery and guide models on removal wor…
teknium1 Apr 15, 2026
4bcb2f2
feat(send_message): add native media attachment support for Discord
sprmn24 Apr 15, 2026
47e6ea8
fix: file handle bug, warning text, and tests for Discord media send
teknium1 Apr 15, 2026
33ae403
fix(gateway): fix matrix lingering typing indicator
asheriif Apr 15, 2026
4da598b
docs: clarify hermes model vs /model — two commands, two purposes (#1…
teknium1 Apr 15, 2026
41e2d61
feat(discord): add native send_animation for inline GIF playback
sprmn24 Apr 15, 2026
722331a
fix: replace hardcoded ~/.hermes with display_hermes_home() in agent-…
teknium1 Apr 15, 2026
1828ec3
fix(codex): drop reasoning item ids > 64 chars to avoid API error
Linux2010 Apr 16, 2026
4bbe23e
Fix JSON truncation causing 'Unterminated string' errors (#12643)
Apr 19, 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
13 changes: 13 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 @@ -136,6 +145,10 @@
# Only override here if you need to force a backend without touching config.yaml:
# TERMINAL_ENV=local

# Override the container runtime binary (e.g. to use Podman instead of Docker).
# Useful on systems where Docker's storage driver is broken or unavailable.
# HERMES_DOCKER_BINARY=/usr/local/bin/podman

# Container images (for singularity/docker/modal backends)
# TERMINAL_DOCKER_IMAGE=nikolaik/python-nodejs:python3.11-nodejs20
# TERMINAL_SINGULARITY_IMAGE=docker://nikolaik/python-nodejs:python3.11-nodejs20
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
73 changes: 73 additions & 0 deletions .github/workflows/contributor-check.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
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'

permissions:
contents: read

jobs:
check-attribution:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # 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
20 changes: 14 additions & 6 deletions .github/workflows/deploy-site.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,24 +28,32 @@ jobs:
name: github-pages
url: ${{ steps.deploy.outputs.page_url }}
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4

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

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

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

- 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 All @@ -65,10 +73,10 @@ jobs:
echo "hermes-agent.nousresearch.com" > _site/CNAME

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

- name: Deploy to GitHub Pages
id: deploy
uses: actions/deploy-pages@v4
uses: actions/deploy-pages@d6db90164ac5ed86f2b6aed7e0febac5b3c0c03e # v4
23 changes: 9 additions & 14 deletions .github/workflows/docker-publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,21 +23,21 @@ jobs:
timeout-minutes: 60
steps:
- name: Checkout code
uses: actions/checkout@v4
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
with:
submodules: recursive

- name: Set up QEMU
uses: docker/setup-qemu-action@v3
uses: docker/setup-qemu-action@c7c53464625b32c7a7e944ae62b3e17d2b600130 # v3

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3

# Build amd64 only so we can `load` the image for smoke testing.
# `load: true` cannot export a multi-arch manifest to the local daemon.
# The multi-arch build follows on push to main / release.
- name: Build image (amd64, smoke test)
uses: docker/build-push-action@v6
uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6
with:
context: .
file: Dockerfile
Expand All @@ -56,36 +56,31 @@ jobs:

- name: Log in to Docker Hub
if: github.event_name == 'push' && github.ref == 'refs/heads/main' || github.event_name == 'release'
uses: docker/login-action@v3
uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}

- name: Push multi-arch image (main branch)
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
uses: docker/build-push-action@v6
uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6
with:
context: .
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

- name: Push multi-arch image (release)
if: github.event_name == 'release'
uses: docker/build-push-action@v6
uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6
with:
context: .
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
9 changes: 6 additions & 3 deletions .github/workflows/docs-site-checks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,16 @@ on:
- '.github/workflows/docs-site-checks.yml'
workflow_dispatch:

permissions:
contents: read

jobs:
docs-site-checks:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4

- uses: actions/setup-node@v4
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with:
node-version: 20
cache: npm
Expand All @@ -23,7 +26,7 @@ jobs:
run: npm ci
working-directory: website

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

Expand Down
5 changes: 4 additions & 1 deletion .github/workflows/nix.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@ on:
- 'run_agent.py'
- 'acp_adapter/**'

permissions:
contents: read

concurrency:
group: nix-${{ github.ref }}
cancel-in-progress: true
Expand All @@ -26,7 +29,7 @@ jobs:
runs-on: ${{ matrix.os }}
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
- uses: DeterminateSystems/nix-installer-action@ef8a148080ab6020fd15196c2084a2eea5ff2d25 # v22
- uses: DeterminateSystems/magic-nix-cache-action@565684385bcd71bad329742eefe8d12f2e765b39 # v13
- name: Check flake
Expand Down
Loading
Loading