Release Date: August 3, 2026
Since v0.19.0: ~3,650 commits · ~1,400 merged PRs · ~5,200 files changed · ~559,000 insertions · ~405,000 deletions · ~1,200 issues closed · 650+ contributors
The Herald Release. Hermes is the herald of the gods, and this release makes him one in earnest: he speaks (real-time conversational voice with streaming TTS, barge-in, on-device wake words, and hands-free control across the CLI, desktop, and every audio-capable gateway platform), he carries word to other agents (A2A v1.0), he announces events to your systems (signed outbound webhooks), and he cites his sources (grounded research with verifiable citations and fact-checking). Around that spine: the desktop app became a platform (artifacts with live preview, a plugin SDK, quick-entry from anywhere, multiple windows), the CLI got a wave of power commands (! shell mode, /init, /diff, /context, /focus), compression got smarter and gentler, and the tools themselves now recover from their own failures instead of making the model guess. This release rolls up everything from the v0.19.1 infrastructure patch tag — that window is fully documented here.
✨ Highlights
Talk to Hermes — streaming, conversational voice with barge-in — Voice mode used to mean: speak, wait for the whole reply to generate, then listen to one long audio file. Now Hermes speaks clause-by-clause as the response streams, you can interrupt it mid-sentence by just talking (it stops, listens, and the model is told you cut in), and busy-aware silence detection means it doesn't talk over you. This works in CLI voice mode, on the desktop, and through gateway adapters. Talking to Hermes finally feels like a conversation, not a voicemail exchange. (, , , , — , , — , )
Outbound webhooks — Hermes pushes events to your systems — Until now, integrating with Hermes meant polling or listening on a platform. Now Hermes pushes signed lifecycle events (session activity, turn completions, tool events) to any HTTP endpoint you register — with HMAC signatures so your receiver can verify authenticity. Wire Hermes into your CI, your home automation, your dashboards, or any service that speaks HTTP, with no polling loop. ()
The desktop app becomes a platform — artifacts, plugin SDK, quick entry — Hermes desktop now renders artifacts: versioned cards with sandboxed live preview in a right-rail viewer, so generated HTML/apps run safely next to the chat. A real plugin SDK landed with Kanban as its founding plugin,
ctx.downloadfor handing users files, floating pane placement, and multiple GUI windows. A global-hotkey quick-entry window captures a thought into any session from anywhere in your OS. The desktop stopped being a chat client and started being a workbench. (, , — )
Hermes speaks Agent-to-Agent — A2A v1.0 — A new bundled plugin implements the Agent-to-Agent protocol, so Hermes can discover, talk to, and be driven by other A2A-compatible agents. This closes issue — , , , — , — , , , — , , — , salvaging multiple community PRs)
Smart approvals grow up —
hermes approvals suggestmines your approval history into allowlist proposals, operators can customize the smart-approval policy, a consecutive-denial circuit breaker stops a misbehaving loop cold, and desktop pairing approvals are profile-correct with a proper surface to answer them from. Plus a new approval gate for docker/podman daemon-redirect commands. Less clicking "approve", without giving an inch of control. (, , , , , , — , , , – — , , , , )- On-device wake words with open-vocabulary phrases + multi-profile voice routing; say "stop" to end voice chat hands-free on every surface (, )
- The model is told when the user interrupts its spoken reply; desktop speaks the whole turn and idle-flushes held narration ( — )
- 15-item CLI/TUI voice-mode UX and environment fix wave ()
TTS / STT infrastructure
- Unified spoken-text preprocessing + speed/instructions/provider tool params; unified STT language resolution (fixes the wrong-language transcription class); global
stt.languagedefaults toen(, ) - Fully configurable STT —
hermes toolscategory, GUI toggle/matrix, dashboard dropdowns, setup status; OpenAI gpt-transcribe support ( — , ) - Command TTS/STT provider hardening — idle timeouts, env scrubbing, no-shell, path guards ()
- Sync per-sentence TTS synthesis pipelined with playback — the next sentence renders while the current one speaks ()
- Discord voice PCM streams to ffmpeg stdin instead of a temp file ()
🏗️ Core Agent & Architecture
Compression & context
- Proactive tool-result pruning for large-window models; per-turn micro-compaction; N-user tail guarantee (
compression.min_tail_user_messages); bounded summarizer input with head+tail retention (, — ) - Ghost-skill defense —
[SKILL_PRUNED]markers, protected prune, deterministic survival; progress-aware timeouts; lock-contended compression soft-defers instead of exhausting (, ) - Per-model threshold overrides; absolute token threshold (
compression.threshold_tokens); opt-in idle-triggered compaction; opt-in progress notices; structured local logging for compression attempts (, , ) - Context-engine ABC grows
select_context()+on_turn_complete()verbs (salvage of , ) - Strict redaction applied at every compaction text boundary ()
Prompt caching & hot-path performance
- Tool schemas cached on native Anthropic without history loss + consolidated cache-plan internals ( — , , , , , , , , )
- Cold-start ~14s GIL stall during backend init mitigated; turn flush batched into one SQLite transaction; provider-capability-gated prompt cache keys (implied for api.openai.com) (, )
- AIAgent hot-path salvage — prompt-cache copy, reasoning-timeout precompute, lazy compressor init ()
Approvals & the agent loop
hermes approvals suggestmines approval history into allowlist proposals; operator-customizableapprovals.smart_policy; consecutive-denial circuit breaker; cross-surface approvals mode command (, — , )- Mid-turn redirects — user corrections steer the active turn, preserving in-flight work and the original prompt ( — , , )
- Single-owner refactors for backend identity + failure-scoped skips, empty-content wire repair, call_id/reasoning sanitization, model-switch parsing (, — , )
Tool self-recovery wave
- Terminal: recoverable truncation (full output spilled + pre-truncation size), cwd echoed when a command changes directory, output-pattern failure hints (, )
- Patch: already-applied edits return success no-op, whitespace-visualized no-match diagnosis, ambiguous-match locations listed (, )
- Search: zero-match probes + multi-path recovery, auto-multiline for newline patterns; read_file default limit 500 → 2000 lines; negative-result cache for read/search misses; write_file verifies on-disk content (, , , , , — — , , )
- Bedrock Converse API prompt caching (cachePoint) ()
- OpenAI data-residency endpoints get declared transport + correct catalog; provider-aware API-server request routing; backend-acknowledged session model lock; Nous sticky routing via top-level session_id (, — )
- Model picker: curated defaults + collapsible providers + select-all; stale caches served instantly with background refresh; custom-endpoint probe capped at 1.5s; honcho OAuth device-code login (, — , )
- ACP: named custom providers in the model selector; authenticated cross-provider model choices; non-blocking startup via background MCP discovery (, , )
Secrets & config
- Command-helper secret source (composes with all vaults); one-command token rotation + actionable startup errors; opt-in encrypted break-glass cache for Bitwarden; vault-injected keys scoped per profile home; orchestrator preserve_existing + profile aliasing (, , )
${env:VAR}SecretRef parity between config.yaml and MCP config; secret-source env vars reach stdio MCP servers ( — , , )
🌐 Gateway, Relay & Fleet
- Session activity heartbeats, stall watchdog, and bounded compression waits — re-landed hardened after an in-window revert cycle (originally ) ()
- SessionState consolidation (19 session-keyed dicts → one turn/conversation/persistent-scoped object); TurnContext/TurnRunner seam extraction; declarative busy_policy on CommandDef (, )
- Relay parity waves: Phase 1 (supported_ops discovery, identity fields, /handoff aliasing), Phase 2 media, Phase 3 interactive prompts, Phase 4 thread lifecycle; egress typing indicators (, , )
- HSP skill sync: personal client (M1) + org-skills client (M2) + org-skill namespace with token-gated discovery (, )
- Buzz (Block/Nostr) platform adapter with native WebSocket inbound transport + NIP-42 auth ( — — , , )
- Discord auto-thread sessions keyed on prospective_thread_id; reply references built from ids (no fetch_message); WhatsApp configurable inbound read receipts (, , , , , — , )
🖥️ Hermes Desktop App
The platform wave
- Artifacts — versioned cards, sandboxed live preview, right-rail viewer ()
- Plugin SDK — Kanban as the founding desktop plugin;
ctx.downloadhands the user a file; widget-app SDK (apps as state+reducer+render) with three reference apps; widget-grid layout engine + background-aware theme engine (, — , , — ) - SSH remote-backend connection mode; event-driven live sync replaces always-on polls; remote profile routing/sessions/pool lifecycle repaired (, , , , — )
Composer & UX
- Attach files/folders/links via picker; composer chips for @ paths and pasted links; composer undo stack; double-ESC discards draft; double-Enter sends the queued turn; type-to-focus (, , , )
- 2-keypress model switching (⌘⇧M); YOLO in ⌘K with live toggle state; keyboard-first pickers; keyboard navigation for clarify choices; server-owned pins that follow you between apps (, , )
- Grouped, live-ticking tool-activity line; improved tool call detail views; @session links resolve to clickable titles; brand icons on known-domain links; iMessage-style emoji reactions (opt-in, two-way); double-click to heart (, , — )
- Sidebar date dividers + pinned section + opt-in stale-session auto-archive; sessions stop lying about running state; credit-usage toasts; configurable attachment size limit; Cron Blueprints + Webhooks pages; searchable timezone picker (, , , , , , — )
- Keep-computer-awake toggle + notch wake indicator; /battery status-bar toggle; UI zoom 90% default preset; status bar hideable (, , , , , )
- Hidden-pane timers paused (agents view, cron sidebar, floating pet), scroll/status loops stopped in busy sessions (); idle CPU near zero in the background; sidebar/overlay render churn killed; statusbar + transcript stop re-rendering per token/sash-drag/session-switch; ⌘K opens instantly; renderer cold start keeps shiki/mermaid off the boot path (, , , )
- State diagnostics (render + store churn counters) + a lint rule banning atom-mirrored refs so the stale-read bug class cannot return; Playwright E2E suite with visual regression diffs (, , )
🖥️ CLI, TUI & Dashboard
!shell mode;/initAGENTS.md generation;/diff(staged/all/session, cross-surface);/contextbreakdown;/focusreduced-output view; Ctrl+S prompt stash; persistent/goalindicator; multi-select clarify (checkboxes) across CLI/gateway/TUI (, , , — , + more)hermes import-agent— one-command migration from Claude Code / Codex CLI setups ()- Per-turn summary line + live token flow in the spinner; cross-surface theme SDK (one skin themes CLI, TUI, and desktop, live) ( — )
- TUI: reach the model picker without wrecking your draft + mid-turn switching; slash menu leads with your most-used skills; attachments live in the composer; Arabic (ar) locale with RTL across desktop/dashboard/agent (, — , , , , , )
🧩 Skills, Plugins & MCP
- A2A v1.0 — Agent-to-Agent protocol plugin (closes — , , , )
- Office skills bundled: docx, xlsx, pdf + refreshed powerpoint; skills-tree debloat continues (yuanbao, segment-anything, jupyter, heartmula, audiocraft → optional-skills; claude-marketplace source removed; hub restructure absorbing themes/desktop-plugins/tui-widgets) (– — , — ) ()
- NeMo Relay observability integration — re-landed after an in-window revert, on stable NeMo Relay 0.6 ()
- Gateway health & diagnostics OTLP export ()
🔒 Security & Reliability
- Iron-proxy credential-injection egress firewall re-landed ()
- DNS-pinned SSRF-safe fetches + Slack CDN allowlist; strict redaction at compaction boundaries; ReDoS eliminated in config-key redaction patterns; prose words embedding a secret keyword no longer masked (, — , )
- Windows hardening wave: text-mode subprocess decode bug class closed repo-wide, console flashes hidden across daemons/env probes/LSP/installer paths, residual encoding gaps (MCP stdio, gateway update I/O, STT/TTS, desktop spawn) (, — , , , — , )
- Config-driven memory allocator trim with telemetry; holographic memory vectors stored float32; loop-invariant HRR encodes hoisted (, )
🐛 Notable Bug Fixes
- Voice: full-duplex interruption during generation AND playback; whole-turn desktop speech; auto-TTS delivery gaps (, )
- Desktop: Stop parks the queue instead of firing the next queued prompt; branch-in-new-chat restart loss; false remote-gateway reauthentication; cross-session composer leaks (, — , )
- Gateway: session lists scoped before limiting; relay-backed home delivery after restart; timeline display events persisted (, , )
- Agent: context-length fallback logging + batch trajectory durability; Codex OAuth context windows revalidated against the live catalog ( — )
- ...plus roughly 770 more
fix:PRs across every subsystem this window.
👥 Contributors
647 contributors shipped this release (commit authors, co-authors, and salvaged-PR credits).
Core
(desktop, voice, perf), (runtime, E2E, desktop), , , , , , , , , , , , , , , , , ,
, , , ,
, , , ,
, , , , , , , , , , , ,
, , , ,
, , , , , , , ,
, , , ,
, , , ,
, , , , , , , , , , , ,
, , , ,
, , , , , , , , ,
, , , ,
, , , , ,
, , @evgyur, @f-trycua, @faikwo, @falkoro,
, @giladbau, @glesperance, @gnanam1990, , @HeLLGURD, @hellofrommorgan, @hereicq, @hermz580, @HexLab98, @hinablue, @HOYALIM, @hrnbld,
@huntsyea, @iamwongeeeee, @ianks, @ibaldr89, @Icather, @ijevin, @ildunari, @Imgaojp, @imgyf, @immuhammadfurqan,
@iniak, , @itsflownium, @IvanMiao, @iveywest, @izumi0uu, @Jaaneek,
@JabberELF, @jackjin1997, @jakelongvu-bot, @Janig88, @jasoisjaso, @jbbottoms, @jeeaay, @jeeves-assistant,
@jeff-mettel, @JeffStone69, @JeliTron, @jethac, @jfmusa2024-cyber, @Jiahui-Gu, @jinglun010-cpu, , @kuangmi-bit, @kudi88, @kylezh,
@kyssta-exe, @Kyzcreig, @lanyusea, @LauraGPT, @LavyaTandel, @LeonSGP43, @leoprodz, @LevSky22, @lEWFkRAD,
@lewis4x4, @lexgenius, @LFDMcore, @LiangYang666, @lidises, @light-merlin-dark, @lihengming, @Linux2010,
@LionGateOS, @liuhao1024, @liusencomic-cyber, @ljsdut, @lkevincc0, @LLQWQ, @locker95, @logical-and,
@LordNikon1983, @lost9999, @Love-JourneY, @LunarNexus, @luxiaolu4827, @lxman, @m4r13y, @MaartenDMT,
@MacroAnarchy, @maff-t2b, @MahdiHedhli, @mahdiwafy, @malaiwah, @mannnrachman, @mapu-og, @markoub, @matarbot,
@materemias, @matt-strawbridge, @mattezell, @MattMaximo, @mattmillerai, @mattshapsss, @MaxFreedomPollard,
@maxmilian, @McHermes, @mehmetkr-31, @menhguin, @metamon-p, @mijanx, @MLcogTech, @moeadham, @mollusk,
@monerostar, @MorAlekss, @morolab, @motoblurr, @MrAbsaroka, @mrzlab630, @ms-alan, @muctobi, @MustafaK99,
@mwbrooks, @myk0la-b, @mzkarami, @namredips, @nanami7777777, @nanckh, @natebransc, @nateEc, @navahc09,
@Ne0teric, @necoweb3, @nftpoetrist, @nickkarhan, @Ninso112, @nkreadly07, @nnnet, @NPFernando, @nrmjeremy,
@nu476, @null-runner, @nullptr0807, @NYTEMODEONLY, @obelisk-complex, @OfficialDelta, @okalentiev,
@oliviaaaa7788, @OmarB97, @omid3098, @ooiuuii, @oppenheimor, @oreoluwa, @ousiaresearch, , @simonmmafs,
@skyer-flyyy, @Skywind5487, @sl4m3, @Slopez2023, @SmallNew2003, @smfworks, , @vigilancetech-com,
@virtuadex, @Vissirexa, @VittoriaLanzo, @VIVAAN-DHAWAN, @wangyunyou, @waroffchange, @wayne1992127, @web3blind,
@webtecnica, @WeiYusc, @wen0531, @wernerhp, @wesleysimplicio, @westkite1201, @wgd753, @wgu9,
@wjj1872744570-source, @wjq990112, @WojtekMR3, @WOLIKIMCHENG, @Wpnx330, @wreed4, @wuli666, @WXBR, @wz-heng,
@x7peeps, @xcompass, @xd-Neji, @xenodmc, @Xipong, @xrazai, @Xue-1997, @xxxigm, @y0shua1ee, @yaleman,
@yemi-lagosinternationalmarket, @ygd58, @yingliang-zhang, @yinkev, @yitang, @YLChen-007,
SOCIAL SHARE CARD GENERATOR