Hermes merged 190 PRs on November 2
The ones worth knowing:
- The gateway no longer freezes every minute for memory trims, and gateway and serve stop hoarding free memory across ~160 malloc arenas
- Grok Bot and OpenBot users can move to Hermes from setup, and hermes migrate
installs the importer for you
- Each Desktop terminal tab now owns its own gateway, and SSH gateways list every profile at launch
- Old phone app chats now continue in Desktop instead of opening read only
- Desktop renders mermaid diagrams with Pele instead of mermaid.js, so they draw faster
- A transient 401 on a valid Nous agent key no longer kills your turn in about 1.5 seconds
- The local web server (Webapp, dashboard, serve) now trusts only the bound loopback origin for CORS and WebSockets
- MCP servers started for a profile use that profile's home, and recovered MCP servers show up in new sessions without /reload-mcp
- Slack gets an opt in thread_followup_silence setting for unaddressed thread replies
- A killed update no longer leaves lock files behind that block the next update
- Background /bg results and async delegation completions now reliably reach the right chat
- Over 100 plugin catalog adds and bumps, including the Fortytwo model provider, Upstash Box terminal backend and bubblewrap sandboxed file tools
Here is the full list:
DESKTOP IMPROVEMENTS (21 PRs)
- perf(desktop): render mermaid fences with Pele instead of mermaid.js
- fix(desktop): gateway pins stay with the gateway that owns them
- fix(desktop): gateway picks keep the batched sidebar read and the user's draft route
- refactor(desktop): name the relay-lease vs pinned-open predicates; count kept-route holders
- fix(desktop): the gateway keeper checks the route it keeps, stops re-probing This device, and batches the launch list refreshes
- fix(desktop): drop python-docx's unzipped template so MakeAppx can pack the Windows MSIX
- test(desktop): remote-topology allows This device's kept gateway; the chat still goes remote
- Desktop status bar shows each session's own cache hit and t/s on switch
- Capabilities switches now say On/Off instead of the confusing Enable/Disable
- Plugin package switch no longer says On while its Desktop half is off
- Old phone-app chats continue in Desktop instead of opening read-only
- fix(desktop): the approval chip on a remote-only profile reads that gateway, not a local backend
- fix(desktop): the launch restore never closes a chat the person opened
- fix(desktop): publish the request connection and its profile together
- test(desktop): kept-gateway redial test passes under CI load
- fix(desktop): SSH gateways list every profile at launch and switch without a per-profile remote backend
- fix(desktop): every gateway's sessions stay visible in Gateway & profile and Project grouping
- fix(desktop): a launch that fell back never switches gateways on its own; This window shows the window's gateway
- fix(desktop): boot every primary on a profile its gateway serves
- fix(desktop): start on a profile the selected remote gateway actually has
- feat(desktop): each terminal tab owns its gateway
VOICE & REAL-TIME (5 PRs)
- feat(catalog): add breeze-tts, a Breeze Blue TTS provider
- plugin-catalog: fish-audio v1.9.0
- feat(plugin-catalog): bump kokoro-tts to 0.4.0 (Linux, Italian)
- fix(plugin-catalog): update wyoming-voice-bridge to bc3588a
- feat(plugin-catalog): bump hermes-whatsapp-voice to 0.2.1
DEVELOPER TOOLS & PLUGINS (108 PRs)
- catalog: add word-peek
- catalog: add agentmemory, tallybuy and idealphase-elevenlabs-audio-tags
- plugin-catalog: bubblewrap 1.3.0 (file tools run inside the sandbox)
- catalog: bump antigravity-subscription-directsdk pin to v1.0.23
- feat(plugins): list Nexus Recovery Peer in catalog
- plugin-catalog: add upstash-box (Upstash Box terminal backend)
- feat(plugin-catalog): add toll plugin
- fix(plugin-catalog): re-pin hermes-project-stewardship to 1e6792c (v0.5.5)
- catalog: bump hermes-lang-pt-br to 1.2.3 (99a24cd)
- feat(catalog): add aircraft-doppler-geolocation v0.1.1
- chore(catalog): update genealogy recipes to v1.7.0
- catalog: git-autosave 0.3.3
- plugin-catalog: add kanban-empowered
- docs(catalog): add tokenjuice terminal output plugin
- chore(plugin-catalog): bump deja-memory sha to v0.23.4
- feat(plugin-catalog): add switch402 (approval-gated x402 web data tools)
- chore(catalog): bump hermes-guide pin to v0.9.0
- catalog(nexus): point nexus at 0.22.45
- chore(plugin-catalog): bump hermes-lang-el to c232c96 (+408 v0.22.5 strings)
- feat(plugin-catalog): add proxy
- Plugin catalog: hermes-band, local music composition and rendering (4 tools, skill)
- Plugin catalog: ethics-filter, six-module ethics evaluation engine (tool, skill)
- Plugin catalog: soul-finder, SOUL.md builder/refiner (tools, hook, skill)
- feat(plugin-catalog): add neuralmind plugin
- Plugin-catalog: deepseek-search-fetch 1.0.10
- catalog: add mqtt entry
- catalog: re-pin limbic 0.9.4 to release commit 4b9c2e6
- plugin-catalog: bump mnemoverse to 1.0.3
- chore(plugin-catalog): bump Hermes Fleet Connector to 0.3.1
- chore(plugin-catalog): bump better-session-appearance to 1.2.4
- chore(plugin-catalog): re-pin ctx_checkpoint to 0.6.2
- Add StateJar memory provider to plugin catalog
- chore(plugin-catalog): bump provider-status to 1.6.8
- feat(plugin-catalog): add LFG Alarm
- chore(plugin-catalog): bump machine-library to 0.1.1
- catalog: add Cadence local usage page
- catalog: bump agent-hint to 0.7.1 (sha f9ee87b)
- plugin-catalog: re-pin hermes-finance to v0.2.6 (apelabs-dev repo, new screenshot)
- Catalog: bunny_space-platform v1.0.7 (pin + version)
- feat(plugin-catalog): add priors plugin
- feat(plugin-catalog): add iwork-studio
- chore(catalog): update CLI Session Tabs to 1.1.0
- feat(plugin-catalog): add recued portable plugin
- catalog: update hermes-auto-titler to v0.3.1
- chore(plugin-catalog): bump yantrikdb to v0.27.1
- fix(plugin-catalog): bump web-search-plus to 5.1.7
- feat(catalog): add model-presets plugin
- plugin-catalog: bump hermes-cron to 1.5.4 (doctor reads a WAL executions.db without write access)
- chore(plugin-catalog): update Magi to v1.8.4
- fix(catalog): update hermes-ledgerline to 0.1.9
- fix(catalog): update hermes-resetwatch to 0.2.27
- feat(plugin-catalog): update DSers to v0.1.2 with bundled skills
- feat(plugin-catalog): add stablelens 0.1.0
- plugin-catalog: huddo 0.10.2
- feat(plugin-catalog): update fxmacrodata to 0.3.0
- feat(plugin-catalog): update redline to 0.3.0
- plugin-catalog: add FilmEase movie discovery and tracking
- feat(plugin-catalog): add olympus
- feat(plugin-catalog): add limits-monitor
- feat(plugin-catalog): add hermes-tabs
- Add Nous Girl to the plugin catalog
- plugin-catalog: shipframe 1.1.0
- feat(plugin-catalog): add Decisions predicate API plugin
- plugin-catalog: bump honcho to 1.1.0 (pin 7dd3702)
- feat(plugin-catalog): add handydandy
- feat(catalog): add Pulldown public page reader
- feat(catalog): add Cartograph repository analysis tools
- plugin-catalog: add model-usage (Claude/Codex triple-ring usage gauge + limit alerts)
- fix(plugin-catalog): bump levea-video-editor to 1.0.1
- docs(catalog): update Epistemic Harness to 1.4.4
- plugin-catalog: bump modular to 0.1.1
- plugin-catalog: bump zoth to 1.1.4
- chore(plugin-catalog): bump cognee entry sha to v1.4.1
- feat(plugin-catalog): bump agent-station to 3.1.0
- feat(plugin-catalog): add hermes-windows-devices (which device is unhappy, what it needs, and what drives it)
- chore(catalog): update vk-platform to 0.2.8
- feat(plugin-catalog): add chmod-ref
- plugin-catalog: update hermes-kame-api-rotation + hermes-kame-provider to 1.8.3.1
- feat(plugin-catalog): add scar
- plugin-catalog: bump hermes-lang-cs to 989cd3a (sync with main 40b56650)
- plugin-catalog: holographic 0.26.2
- catalog: update hermes-dreaming to 3.8.3
- fix(plugin-catalog): update switchbot-control to f0ecbf2
- feat(plugin-catalog): bump astro-agents to 1.8.3
- chore(catalog): update deferred-questions to 0.3.0
- fix(plugin-catalog): update talaria-webui to 1.5.2
- feat(catalog): add Hermes-iOS-sim community plugin
- feat(plugin-catalog): add withhuman
- catalog: add mariadb-dev, mariadb-sql and mariadb-guard
- feat(plugin-catalog): add search-sources (Desktop reply source capsule & cited-first side panel)
- Add muse-harness plugin catalog entry
- catalog: add REVamp alpha.6
- chore(plugin-catalog): crew 0.10.6, re-pin to d81551a
- Add ram-first-context to the plugin catalog
- plugin-catalog: add writing-guard (style check for answers: dashes, AI phrases, du/Sie)
- Add surplus-intelligence-seller to plugin catalog
- catalog: add webmint (community)
- feat(catalog): add mediarag entry
- plugin-catalog: add squad-hub (Hermes Agent Squads Hub)
- feat(plugin-catalog): add nyx memory provider
- Add disciplined-vibe-coding to plugin catalog
- catalog: update iowap to v0.4.0
- Add lithermes to the plugin catalog
- feat(plugin-catalog): add `artil` plugin
- feat(plugin-catalog): add hermes-plexus (vault graph, file tree and editor for Desktop)
- catalog: add gameforge 1.1.0
- plugin-catalog: add tirith (community)
- feat(plugin-catalog): add courier-by-autolane
SECURITY & SECRETS (5 PRs)
- fix(web-server): trust only the bound loopback origin for CORS and WebSockets (Webapp, dashboard, serve)
- plugin-catalog: airlock 0.2.3 to 0.3.0 (Windows security fix, context files)
- fix(nous): an older shared login never replaces a newer profile login
- fix(providers): a named profile missing its provider key says so instead of a misleading 401
- fix(nous): a transient 401 on a valid agent key no longer kills the turn in ~1.5 s
INTEGRATIONS & CHAT (18 PRs)
- feat(slack): add opt-in thread_followup_silence for unaddressed thread replies
- fix(relay): keep a turn's Slack status on its own message when DM turns overlap
- fix(relay): recover from one transient connector failure instead of staying broken
- chore(relay): upgrade to 0.11.0
- fix(gateway): restored chats answer through the right bot, not an old saved guess
- fix(gateway): completions of sessions routed through another profile's bot reach that bot
- fix(gateway): heal a secondary profile's platform whose plugin failed to load at boot
- Grok Bot and OpenBot users can move to Hermes from setup and hermes migrate; hermes migrate installs the importer
- Plugin catalog: agent-importers 1.2.1 brings Grok Bot import from real exports
- Plugin catalog: agent-importers 1.2.0 brings the Grok Bot and OpenBot importers
- feat: Daybreak switch for catalog-listed ChatGPT subscription models
- fix(image_gen): OpenRouter's Grok image row is x-ai/grok-imagine-image-2.0
- feat(catalog): add Fortytwo model provider
- feat(plugin-catalog): add hashference-provider
- Add Iris Chat to the community plugin catalog
- catalog: add Postroom portable social publishing connector
- feat(plugin-catalog): bump signal-notify to v1.1.0
- catalog: hermes-chat-share 1.1.8
STABILITY & FIXES (33 PRs)
- MCP servers started for a profile now use that profile's home, not the default
- fix(cli): reasoning footers show elapsed time without repeating text
- Main CI no longer goes red when OpenRouter renames an image model (OpenRouter image backend test)
- test(install-e2e): classify v2026.7.30 macOS DMG app-update refusal as a known failure
- fix(update): reclaim the shallow.lock a killed update's shallow fetch left behind
- fix(update): reclaim the ref locks a killed update's fetch left behind
- test(install-e2e): judge only the live desktop app, not rollback copies beside it
- test(install-e2e): chat smoke waits out the boot overlay without scrolling the app
- docs(skills): add the projects-and-folders reference to the hermes-agent skill
- test(e2e/pm): the managed-env update check never reaches the GitHub API
- fix(cron): a one-shot due while a gateway drain holds dispatch fires once afterwards
- test(cron): the virtual-clock soak models run-now as an extra fire and admits 'missed' rows
- test(e2e): the PTY leftover check exempts the attached gateway's own supervisor
- Install/update E2E: bundle-inputs job runs on the locked Node 26
- Install/update E2E: HEAD to NEXT legs accept the reused desktop app
- perf(gateway): retire closed local and idle API sessions from the authority's memory
- perf(agent): the token-count cache keeps no more idle entries than it always had
- Gateway no longer freezes every minute for memory trims
- fix(gateway): run local and API turns' post-delivery callbacks; closed local sessions leave memory
- perf(gateway): free an ended session's replay ring and counters
- perf: token-estimate memo is an LRU with a 64 MiB idle budget; active conversations never evicted
- fix(delegation): finished async delegations stop pinning the parent session's agent
- Gateway and serve no longer hoard free memory across ~160 malloc arenas
- perf(memory): read the models. dev catalog only when asked and let long-lived caches forget dead entries
- test(docker): join teardown workers of dropped envs before the fakes unwind (CI SIGABRT in test_docker_ownership_handback)
- fix(gateway): keep every queued turn at the interrupt recursion cap
- fix(tui): park a closed or reaped session's notifications until it resumes
- fix(delegation): re-offer a live owner's lost completion from the ledger
- fix(gateway): deliver background results to routes whose entry lost its origin
- fix(gateway): /bg joins its background delegations so the result reaches the chat
- test(telemetry): settle the export worker before engagement assertions read the store
- fix(pm): a corrupt cached package no longer blocks every install
- fix(tools): recovered MCP servers reach tool_search and new sessions without /reload-mcp; live tools[] stays frozen
190 new features and fixes
Hermes merged 40 PRs on November 1
The ones worth knowing:
- Lock a skill so the agent can't rewrite it, through skill_manage, write_file, patch or terminal
- Plugins and shell hooks can now block a turn before it ever reaches the model
- Approval prompts reveal hidden Unicode, control bytes and padding instead of hiding them
- /model reset puts a pinned session back on your configured default across CLI, TUI, Desktop and gateway
- Cron jobs now know when they fired: the run time is in every scheduled prompt
- Desktop keeps every gateway connected, and picking one no longer blanks your session list
- Desktop sessions waiting on subagents or background work stay highlighted and stop spinning when done
- Claude subscription catalog installs use about 1.7x less of the 5-hour window
- Telegram video notes now reach the agent instead of being dropped
- Slack thread context shows emoji reactions, so reacted-to messages read as answered
- New opt-in cap on how long a streaming response can live (agent. stream_max_lifetime)
- hermes update stops stashing untracked folders it never touches, and asks before stashing
Here is the full list:
DESKTOP IMPROVEMENTS (14 PRs)
- fix(desktop): every gateway stays connected, and picking one no longer asks to switch or blanks the session list
- fix(desktop): a session stops spinning when its background work finishes off screen
- Desktop status bar names the profile when another profile's messaging is down
- fix(desktop): sidebar rows off screen and after reload/reconnect show running subagents and background work
- fix(desktop): Pinned names the filter that hides every pin
- fix(desktop): Korean and other pack languages: load installed packs on a cold gateway, sync them at boot, and only offer languages with Desktop strings
- fix(desktop): sessions waiting on subagents or background processes stay highlighted in the sidebar
- Desktop sidebar no longer shows the confusing "automatic continuation" notice on compressed sessions
- fix(desktop-plugins): host reconcile treats Windows junctions as links; Desktop tested on a real case-insensitive volume
- fix(desktop): restore session-tab close button spacing
- perf(desktop): avoid theme updates for sidebar geometry changes
- perf(desktop): skip unchanged terminal snapshots and hidden row paints
- perf(desktop): keep streamed tokens out of navigation context
- fix(desktop): a native plugin install never replaces a folder outside desktop-plugins
VOICE & REAL-TIME (2 PRs)
- feat(streaming): opt-in cap on a streaming response total lifetime (agent. stream_max_lifetime)
- fix(gateway): background jobs that finish during a busy turn come back as one turn, not one each
DEVELOPER TOOLS & PLUGINS (10 PRs)
- feat(plugin-catalog): add simular-sai (Sai by Simular)
- Plugins and shell hooks can block a turn before it reaches the model (pre_llm_call block directive)
- fix(middleware): tool_request middleware sees the model's pre-Relay call as original_args
- feat: /model reset returns a pinned session to the configured default (CLI, TUI, Desktop, gateway)
- Cron jobs know what time they fired: run time in every scheduled prompt
- feat(telemetry): see when people wait on a busy agent (busy arrivals + daily peak of busy chats)
- fix(telemetry): Spotify and old browser_vault tool names from older releases export as recorded again
- refactor(aux): the auxiliary client keeps the main runtime only per context
- fix(kanban): kanban_task_blocked fires after commit for dependency waits
- fix(background-review): memory review saves only grounded facts, not guesses
SECURITY & SECRETS (3 PRs)
- feat(skills): lock a skill so the agent can't change it (skill_manage, write_file, patch, terminal)
- Approval prompts show hidden Unicode, control bytes and padding instead of hiding them (CLI, gateway, TUI/Desktop)
- fix(profiles): hermes update never copies the default .env into a profile
INTEGRATIONS & CHAT (6 PRs)
- Telegram video notes reach the agent instead of being dropped
- fix(mattermost): setup stops pointing at a profile dialog with no user ID
- fix(photon): setup only reports success once your number can receive iMessages (opt-in wait)
- Approval cards keep the command and reason after a decision or timeout on Telegram, Feishu and Teams
- feat(slack): show emoji reactions in thread context so reacted-to messages read as answered
- Claude subscription provider: catalog installs use ~1.7x less of the 5-hour window
STABILITY & FIXES (5 PRs)
- hermes update no longer stashes untracked folders it never touches, and asks before stashing
- fix: two CI races, PTY drain test sleep and a process reaped mid-/proc-probe
- test(cron): profile-timezone test no longer fails the day before a DST change
- fix(update): update-lock tidy-ups from review feedback
- fix(agent): name the phase and the setting in transport-timeout error summaries
40 new features and fixes
もっと見る