Hermes merged 117 PRs on October 25
The ones worth knowing:
• The agent can now pick and search ElevenLabs voices on its own when it speaks
• Desktop group chats get rename, disband, mentions and attachment paste
• The gateway now serves the Desktop workspace to the web app
• Your vault key can live in the OS keychain (opt-in), and one-time-code fills now check the saved login's site
• Password-manager plugins can back browser_vault, each one isolated to its own logins
• CLI, TUI and Desktop show the real error when a turn crashes instead of "Something went wrong"
• hermes update no longer restarts a gateway mid-swap or reports a failure just because systemd stopped slowly
• Updates stop disabling plugins over Android-less dependencies like mnemosyne and torch, and your memory provider survives a plugin being switched off
• Model downloads keep their progress after a kill or a flaky connection
• Kanban wakes, heartbeats and cron results now land in local chats
• browser_exec stops telling vision models they can't see, and 4 tool schemas shed 319 tokens per call
• New in the catalog: atmorouter, openpaths and runcrate providers, Keenable MCP, a Nextcloud Talk platform and a Czech language pack
Here is the full list:
DESKTOP IMPROVEMENTS (7 PRs)
• fix(gateway): remote Desktop session edits for served logins and SSH serve
• fix(desktop): cap group-chat preview downloads in flight
• fix(desktop-e2e): stop the gateways Playwright runs leave behind, including a killed run's
• fix(desktop): source hand-off test echoes the Desktop's started-at stamp
• fix(desktop): a guest with connected apps can always find the sign-in
• feat(desktop): group chat rename, disband, mentions and attachment paste
• feat(webapp): serve the Desktop workspace from the gateway
VOICE & REAL-TIME (4 PRs)
• fix(tts): find_voices={} browses voices instead of falling to speech
• fix(tts): stop downgrading tts-1/tts-1-hd on the managed audio gateway
• feat(tts): let the agent pick and search ElevenLabs voices (voice_id + find_voices on text_to_speech)
• fix(audio): accept the local Desktop runtime ticket on voice stream sockets
DEVELOPER TOOLS & PLUGINS (50 PRs)
• Update refusal plugin: 0.1.1 to 0.2.0 (retry preprompt, session hooks, log correlation)
• feat(plugin-catalog): add mixar plugin
• chore(plugin-catalog): re-pin kanban-gantt to 1.7.1 @ 77aa2ee
• plugin-catalog: add card image for mock-review
• feat(catalog): add gemini-media
• chore(catalog): git-review v0.2.0
• plugin-catalog: add hermes-lang-cs (Czech language pack)
• catalog: add hermes-chat-share (desktop UI plugin)
• feat(plugin-catalog): add astro-agents plugin
• catalog: point nexus at 0.22.32
• chore(catalog): update Model Router to v0.4.8
• feat(plugin-catalog): add unibaseio-membase memory provider
• feat(plugin-catalog): add b64-ref
• plugin-catalog: bump hermes-dreaming to 3.3.4 (the holographic 0.18.2 screen)
• fix(plugins): hosted providers keep their declared types across the plugin-host wire
• chore(plugin-catalog): bump ai-subscriptions to 0.3.5
• plugin-catalog: holographic 0.18.3 (optional rescoring by a cross-encoder; disclosure updated)
• A plugin in both plugins.enabled and plugins.disabled is reported by the loader and hermes doctor
• chore(catalog): bump hermes-guide to 0.8.11
• fix(plugin-catalog): re-pin provenance-gate to 0.1.3
• feat(plugins): replies stay hidden until a hold_stream transform rewrites them
• chore(plugin-catalog): move the hermes-windows-* entries to the current monorepo head
• feat(plugin-catalog): add hermes-windows-process (what is running, who started it, what outlived its parent)
• An update that turns a plugin off keeps your memory provider and turns the plugin back on once it fits
• Add loaded-skills-indicator to the plugin catalog
• feat(plugin-catalog): bump codex-theme to v1.2.0
• Plugins with Android-less dependencies (mnemosyne, torch) no longer get disabled on update
• feat(plugin-catalog): add terraform-drift
• Blank Slate: re-enabling web brings web_search back, and tools list/doctor flag partly disabled toolsets
• feat(plugin-catalog): add ctx_checkpoint
• chore(catalog): bump hermes-frihet pin to v0.2.1 (7249323)
• feat(plugin-catalog): bump ha-sidebar-navigator to 0.9.1
• feat(plugin-catalog): add conxt memory provider
• plugin-catalog: pin hermes-lcm-x 0.28.1 to its runtime-only payload
• tool_search keeps small servers' descriptions beside a huge MCP server; an interactive plugin install loads into the running gateway
• fix(skills): the skills index stops printing category blurbs, duplicate names and mid-word fragments
• browser_exec stops telling vision models they can't see, and 4 tool schemas shed 319 tokens per call
• docs(catalog): clarify FlashData search and YouTube capabilities
• plugin-catalog: add true402-swap-guard (free edition)
• plugin-catalog: add de-law (German federal law, EU law and federal court decisions)
• feat(plugin-catalog): add webly
• chore(plugin-catalog): add community plugin model-leaderboard 1.2.0
• plugin-catalog: add sgme (self-hosted long-term memory engine)
• catalog: add agent-run-debugger
• feat(plugins): ctx.side_question asks the session's own agent after a turn
• feat(plugin-catalog): add cut-sprite-sheet
• feat(plugin-catalog): add web-crawler-spider
• add print3d plugin for modelling and slicing on hermes
• Add hermes-proton to the plugin catalog (community)
• plugin-catalog: update hermes-kame-api-rotation + hermes-kame-provider to 1.8.2.9
SECURITY & SECRETS (5 PRs)
• diff-review re-pinned to 1.1.0, which fixes git option injection
• hermes-resetwatch's catalog disclosure names every credential it reads
• fix(vault): one-time-code fills check the saved login's site like every other fill
• Vault key can live in the OS keychain (opt-in, verified migration); manager unlock tokens leave module globals
• feat(tools): password-manager plugins for browser_vault, isolated to their own logins
INTEGRATIONS & CHAT (22 PRs)
• fix(gateway): keep text with uncached media, satellite cron delivery and Relay profile tags
• fix(gateway): settle a sibling profile's server request from the shared socket
• fix(gateway): deliver Kanban wakes, heartbeats and cron results into local chats
• fix(gateway): keep a bare custom launch pick on the profile's route
• feat(plugin-catalog): add atmorouter provider
• feat(plugin-catalog): add Keenable MCP plugin and skills
• feat(plugin-catalog): add openpaths (model-provider plugin)
• plugin-catalog: CoreWeave Inference tier verified
• feat(plugin-catalog): add callmemcp (/call-me gateway platform)
• catalog: add runcrate-provider
• fix(gateway): end local sessions left with no viewer
• fix(gateway): open routeless stored chats read-only
• fix(acp): list gateway editor threads, add config pickers, stop on cancel
• fix(gateway): fill the context breakdown without a live agent
• fix(groups): allow member actor fields and send retry coordinates on serve
• fix(gateway): defer a reasoning pick made while a reply streams
• fix(gateway): resolve a bare custom provider to its named entry
• fix(gateway): publish message.complete for an active-session refusal
• fix(gateway): stop only the stopped turn and settle stuck admission heads
• fix(gateway): admit automation wakes on route identity, not display fields
• feat(catalog): add RentAHuman plugin and MCP
• feat(plugin-catalog): add Nextcloud Talk platform plugin entry
STABILITY & FIXES (29 PRs)
• fix(gateway): Windows cold start with stray schtasks lines and non-ASCII paths
• fix(terminal): keep the idle reaper off busy environments; start the classic CLI on docker/ssh profiles
• fix(gateway): run managed workers on WSL2 and on their resolved provider route
• fix(gateway): stay up degraded when every platform fails non-retryably at start
• Cron worktree prune runs one sweep at a time on a multiplexed gateway
• hermes update no longer restarts a gateway mid-swap or reports it failed when its systemd unit stops slowly
• A multiplexed gateway walks each repo's .worktrees once, not once per profile
• Tests no longer mint real guest identities on the live Nous Portal
• Connector RPC tests stop failing when the Nous Portal is slow (no live guest mint in tests)
• Cron timeout fork-race test no longer fails while a killed child is still exiting
• A lazily installed SDK the CLI's backend can't load no longer breaks the next attempt for 10 minutes
• CLI/TUI/Desktop show the real error when a turn crashes, not "Something went wrong"
• OpenAI provider E2E suite green again: fake Responses server sends the cache_write_tokens openai 2.54 requires
• Memory entries stay removable after the char limit is lowered
• Offline model picker no longer waits ~16 s on every build when the model catalog is unreachable
• The model-picker usage test and the ACP editor-MCP fork test no longer flake under CI load or a slow network
• fix: transform_llm_output rewrites now replace the streamed reply in the TUI and desktop app
• Prompt-trim follow-ups: one-shot-started sessions keep synchronous delegation; compression tail cap covers big windows
• Model downloads keep their progress when the process is killed or the connection keeps dropping
• test(gateway): compress-preview tests stop leaking owned/ into the repo root
• fix(agent): abandon a streaming worker that stale kills cannot unwind
• fix(run_tests): import/collection failures and missing named paths no longer read green
• fix(prompt): one-shot runs drop steering, clarify and delegate live-control; skill-safety rule moves to compaction
• chore(deps): bump npm dependencies to latest minor/patch releases
• fix(fs): serve /workspace files from the session's docker workspace sandbox
• fix(tui): declare clarify_batch so a multi-question clarify is one form
• fix(cli): keep live reasoning after session switches and add /discard
• fix(agent): record piped verification runs and stop the double nudge
• fix(nix): extraPythonPackages no longer drops the default package's dependency groups
117 new features and fixes
Show more