Hermes Agent v0.20.0 — The Herald Release
Overview
v0.20.0 — The Herald Release. Released August 3, 2026. ~3,650 commits · ~1,400 merged PRs · ~5,200 files changed · ~559,000 insertions · ~405,000 deletions · ~1,200 issues closed · 650+ community contributors.
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 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 sandboxed 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.
Community reaction was immediate — the Digg Tech thread hit 900K+ combined views and 5,400+ likes within 24 hours. Teknium called it “heralding the new era”. This release also rolls up everything from the v0.19.1 infrastructure patch tag.
Highlights
1. 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 is a qualitative change, not a quantitative one — talking to Hermes finally feels like a conversation, not a voicemail exchange. Works in CLI voice mode, on the desktop, and through gateway adapters.
# Enter voice mode from CLI or TUI
hermes chat --voice
# Hermes speaks clause-by-clause, you say "wait" and it stops
# Completely hands-free — no keyboard needed
2. Wake Words and Hands-Free Control — Talk from Across the Room
Pick your own open-vocabulary wake phrase (“hey Hermes,” or anything you choose) and Hermes starts listening — detection runs on-device, so no audio leaves your machine while it waits. Multi-profile voice routing means different wake words can reach different profiles, and saying “stop” ends the voice chat on every surface without touching the keyboard. Your terminal is now something you can talk to from across the room.
# Register a custom wake word (voice enrollment, 3 samples)
hermes voice wake-word register --phrase "hey assistant"
# Bind different profiles to different wake words
hermes voice wake-word bind --profile work --phrase "time to work"
hermes voice wake-word bind --profile personal --phrase "hey hermes"
Community reaction: developers are calling this the “Alexa/Google Home killer” moment. Wake word detection runs silently in the background without consuming model budget.
3. Voice Everywhere — WhatsApp, Feishu, DingTalk, LINE, QQ, WeChat
Send a voice note to Hermes on WhatsApp, Feishu, DingTalk, LINE, QQ, Photon, or Weixin and it’s transcribed and answered. Auto-TTS replies are delivered platform-aware (opus where platforms want opus, captions attached correctly).
STT is now fully configurable — its own hermes tools category, GUI toggle matrix, dashboard dropdowns, setup status display. Unified language resolution fixes the “transcript comes back in the wrong language” problem that has plagued voice users. OpenAI gpt-transcribe is now supported.
All TTS providers share one unified spoken-text preprocessor — markdown, code blocks, and URLs are intelligently stripped from speech output.
4. Research You Can Trust — Grounded Citations with Fact-Checking
The new grounded-citations skill makes Hermes produce research where every claim is backed by a verifiable source: quotes are matched against actual page text (not hallucinated), citations link to the exact evidence. A fact-checking mode turns the same machinery on any document or claim you hand it — it tells you what checks out, what doesn’t, and what couldn’t be verified.
If you use Hermes for research, this is the difference between “sounds right” and “provably sourced.”
# Activate grounded research mode in conversation
/grounded-citations
# Fact-check an existing document
/fact-check "Is this report on AI safety accurate?"
5. Agent-to-Agent Communication — A2A v1.0 Protocol
A new bundled plugin implements the Agent-to-Agent protocol — Hermes can discover, talk to, and be driven by other A2A-compatible agents. This closes issue #514 — one of the oldest open feature requests in the repository.
If you’re building multi-agent systems with heterogeneous stacks, Hermes now has a standard wire protocol for joining them.
# Enable the A2A plugin
hermes plugins enable a2a
# Hermes auto-discovers agents on the local network
# Can delegate sub-tasks to other agents autonomously
Teknium highlighted this as one of the most significant infrastructure changes in this release — agents finally have a standard communication protocol instead of being isolated black boxes.
6. 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/CD pipelines, home automation, monitoring dashboards, or any service that speaks HTTP, with no polling loop.
# hermes.config.yaml
webhooks:
- url: "https://your-service.example.com/hermes-events"
events: ["turn_complete", "tool_invocation", "session_activity"]
hmac_secret: "${env:WEBHOOK_HMAC_KEY}"
7. The Desktop App Becomes a Platform — Artifacts, Plugin SDK, Quick Entry
The desktop app stopped being a chat client and started being a workbench:
- Artifacts: versioned cards with sandboxed live preview in a right-rail viewer — generated HTML or web apps run safely next to the chat
- Plugin SDK landed: Kanban as the founding desktop plugin;
ctx.downloadhands users files from plugins; widget-app SDK (state + reducer + render); widget grid layout engine with background-aware theme engine - Global hotkey quick-entry window: capture a thought into any session from anywhere in your OS
- Multiple GUI windows; floating pane placement
# Desktop: Ctrl+Space pops up the global quick-entry window
# Type "build me a login page in HTML"
# Hermes generates it as an Artifact with live preview in the right panel
Julian Goldie’s review video called Artifacts live preview the most important desktop addition, turning “seeing code” into “seeing results.”
8. CLI Power-User Wave — Less Undo, More Control
A wave of high-impact CLI commands lands, ending the “mess up and start over” era:
| Command | What It Does |
|---|---|
!command |
Run a shell command instantly — no model turn spent, results immediately |
/init |
Scan your project, generate or update an AGENTS.md context file |
/diff |
View staged / all / session diffs from any surface |
/context |
Show exactly what’s filling your context window |
/focus |
Reduced-output view with hidden-line recovery |
Ctrl+S |
Stash a half-written prompt into a browsable panel |
hermes import-agent |
One-command migration from Claude Code or Codex CLI |
# Fast shell — no model budget consumed
! ls -la && cat package.json
# See exactly what's eating your context window
/context
# Output:
# System prompt: 12,450 tokens
# Last 3 turns: 2,100 tokens
# Tool definitions: 4,800 tokens
# Active skill docs: 3,200 tokens
# Remaining: 15,450 / 38,000 tokens
# Migrate from Claude Code — one command
hermes import-agent
AICrier noted that /context is one of the most requested diagnostic commands — no more guessing what’s filling up the context window.
9. Correct the Agent Mid-Turn — Redirect Instead of Restart
If Hermes is heading the wrong way, you no longer have to /stop, rewrite the prompt, and wait for a replay. Type a correction while it works and the active turn is redirected: work in flight is preserved, the original prompt is kept, and the agent course-corrects with your new guidance.
Paired with double-ESC draft discard and a composer undo stack, steering Hermes feels like editing, not restarting.
# Hermes is executing, and you realize it's going the wrong way
# Don't /stop — just type a correction:
> Wait, check the Node version first before deciding which package manager to use
# Hermes immediately redirects, preserving completed work, and continues
10. Tools That Fix Themselves — No More Tool-Friction Turns
A systematic sweep of self-recovery upgrades means the agent wastes far fewer turns on tool friction:
- Truncated terminal output spills to a file the agent can read back
patchcommand detects already-applied edits and diagnoses whitespace mismatches- Zero-result searches probe for near-misses and recover
write_fileverifies content on disk- Common failure classes come back with actionable recovery hints
The default tool-calling iteration limit also jumped from 90 to 500 — long autonomous runs stopped hitting an artificial wall.
# Default tool iteration limit dramatically increased
# Old: auto-stop after 90 iterations
# New: 500 iterations, enough for complex multi-step task chains
AICrier analysis calls tool self-recovery a “silent productivity win” — you don’t notice it, but it saves 5–10 wasted turns every day.
Voice & Speech
Conversational Voice
- Streaming, clause-by-clause TTS with barge-in across all surfaces (CLI voice mode + gateway adapters)
- Full-duplex turn listener — interrupt by voice during generation AND playback
- Busy-aware silence detection, stop hints, thinking sounds, barge-in fixes
- The model is told when the user interrupts its spoken reply — context stays coherent
- Desktop speaks the whole turn and idle-flushes held narration
TTS / STT Infrastructure
- Unified spoken-text preprocessing + speed/instructions/provider tool params; unified STT language resolution (fixes the wrong-language transcription class)
- Fully configurable STT —
hermes toolscategory, GUI toggle matrix, dashboard dropdowns, setup status; OpenAIgpt-transcribesupport - Platform-aware auto-TTS delivery (opus platforms handled correctly, captions attached)
- Inbound voice classification/routing for WhatsApp, Feishu, DingTalk, LINE, QQ, Photon, Weixin
- Command TTS/STT provider hardening (idle timeouts, env scrubbing, no-shell, path guards)
- Per-sentence TTS synthesis pipelined with playback — next sentence renders while current one speaks
- Discord voice PCM streams to ffmpeg stdin instead of temp files
Wake Words & Hands-Free
- On-device open-vocabulary wake words (voice enrollment, 3 samples)
- Multi-profile voice routing — different wake words reach different profiles
- Say “stop” to end voice chat hands-free on every surface
- 15-item CLI/TUI voice-mode UX and environment fix wave
Core Agent & Architecture
Compression — Smart and Gentle
- Proactive tool-result pruning for large-window models
- Per-turn micro-compaction — compression cost amortized across turns instead of one giant pause
- Guaranteed N-user-message tail (
compression.min_tail_user_messages) — recent conversation always survives - Ghost-skill defense — pruned skills can never silently haunt a session
- Progress-aware timeouts — slow summary models are no longer punished
- Per-model threshold overrides; absolute token threshold (
compression.threshold_tokens); opt-in idle-triggered compaction
Long sessions stay coherent and stop stalling.
Mid-Turn Redirects
- User corrections steer the active turn, preserving in-flight work and the original prompt
- Double-ESC discards draft
- Composer undo stack
Approvals — Smarter, Less Clicking
hermes approvals suggestmines approval history into allowlist proposals- Customizable smart-approval policy (
approvals.smart_policy) - Consecutive-denial circuit breaker — three consecutive denials force-stop the loop
- Docker/podman daemon-redirect commands now require additional approval
- Cross-surface approvals mode command
- Desktop pairing approvals: profile-correct, with a proper surface to answer from
Prompt Caching & Hot-Path Performance
- Tool schemas cached on native Anthropic without history loss
- DeepSeek prompt caching on OpenCode gateways
- Per-API-call token accounting off the turn thread
- OpenAI wire client reused across sequential LLM calls
- Send-path tool-call canonicalization memoized
Providers & Models
- Vercel AI Gateway provider + Vercel Sandbox terminal backend return, modernized (SDK 0.7.2, telemetry off)
- Gemini 3.1 Pro + 3.6 Flash in catalogs; Gemini salvage cluster
- claude-opus-5 in OpenRouter and Nous Portal
- deepseek-v4-flash-0731 onboarded
- Bedrock Converse API prompt caching (cachePoint)
- Model picker: curated defaults + collapsible providers + select-all
- Stale caches served instantly with background refresh
Delegation & Subagents
- Structured timeout/stall metadata + live per-child status in
/agents - Subagents can use
execute_code - Redacted child tool history exposed in
subagent_stop - Public subagent lifecycle API for plugins
Desktop — From Chat App to Development Platform
Platform Capabilities
- Artifacts: versioned cards + sandboxed live preview in right-rail viewer
- Plugin SDK: Kanban as the founding desktop plugin;
ctx.downloadhands users files; widget-app SDK (state + reducer + render); widget-grid layout engine + background-aware theme engine - Quick-entry window: global hotkey → any session
- Multiple GUI windows: parallel sessions side by side
- Floating pane placement — panes anywhere
- SSH remote-backend connection mode
- Let the agent drive the shell (preview pane + pane focus) AND inspect the desktop app it’s building
Composer & UX
- Attach files/folders/links via picker; @path and pasted-link composer chips
- Composer undo stack; double-ESC discards draft; double-Enter sends queued turn
- 2-keypress model switching (⌘⇧M); YOLO in ⌘K with live toggle state
- Sidebar date dividers + pinned section + opt-in stale-session auto-archive
- Grouped, live-ticking tool-activity line; @session links resolve to clickable titles
- iMessage-style emoji reactions (opt-in, two-way); double-click to heart
- Credit-usage toasts
- RFC 8252 native desktop sign-in (system browser + PKCE, no webview cookies)
- Keep-computer-awake toggle + notch wake indicator
Desktop Performance — 60fps Wave 2
- Streaming cost independent of transcript length — stays smooth no matter how long you’ve been talking
- 60fps on real sessions (reflow-gated pins, adaptive flush)
- 60fps drag with five streaming tabs
- Hidden-pane timers paused, scroll/status loops stopped in busy sessions
- Idle CPU near zero in the background
- Sidebar/overlay render churn killed
- ⌘K opens instantly
- Renderer cold start: shiki/mermaid stay off the boot path
- State diagnostics (render + store churn counters) + lint rule banning atom-mirrored refs
- Playwright E2E suite with visual regression diffs
CLI, TUI & Runtime
| Command/Feature | Description |
|---|---|
!command |
Fastest shell — no model turn spent |
/init |
Scan project → generate/update AGENTS.md |
/diff |
Three diff views — staged / all / session |
/context |
Precise context window breakdown |
/focus |
Reduced-output view + hidden-line recovery |
Ctrl+S |
Stash a prompt to browsable panel |
/goal |
Persistent goal indicator |
hermes import-agent |
One-command migration from Claude Code / Codex CLI |
| Multi-select clarify | Checkbox interaction across CLI/gateway/TUI |
| Per-turn summary line + live token flow in spinner | Transparent progress |
| Cross-surface theme SDK | One skin themes CLI, TUI, and desktop |
hermes -w cold start |
~14s → ~1.8s |
hermes update no-ops |
2–6s faster |
| Runtime | Node 26 across installers; brew/pip/PyPI channels retired (shell installer / Docker / Nix remain) |
TUI: model picker no longer wrecks your draft, slash menu leads with your most-used skills, attachments live in the composer. Arabic (ar) locale with RTL across desktop/dashboard/agent.
Gateway, Platforms & Relay
New Platforms
- Buzz: Block’s Nostr-based messenger with native WebSocket transport + NIP-42 auth
- Photon: native polls, effects, clarify-as-poll, rich links (4-PR salvage)
- Vercel AI Gateway provider + Vercel Sandbox terminal backend return
- Slack: native Block Kit clarify buttons; opt-in reaction triggers; outbound payload sanitization
- Discord: auto-thread sessions keyed on
prospective_thread_id; reply references built from ids - WhatsApp: configurable inbound read receipts
- Kanban wakes resume the creator’s DM/thread session; kanban/delegate wake-ups reach api_server sessions
Relay Phase Parity
- Phase 1:
supported_opsdiscovery, identity fields,/handoffaliasing - 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
Delivery Reliability
- Session activity heartbeats, stall watchdog, bounded compression waits — re-landed hardened after an in-window revert
- SessionState consolidation: 19 session-keyed dicts → one turn/conversation/persistent-scoped object
Skills, Plugins & MCP
New & Updated
- A2A v1.0: Agent-to-Agent protocol plugin (closes #514)
grounded-citationsskill: source citations + fact-checking mode- Curator: surface unmanaged skills +
curator adopt - Office skills bundled: docx, xlsx, pdf + refreshed PowerPoint
- Skills-tree debloat continues: yuanbao, segment-anything, jupyter, heartmula, audiocraft → optional-skills
tldraw-offlinescripting skillsimplify-codev1.1
MCP
- Comfy Cloud catalog entry with curated 20-tool default
- MCP lazy server startup — from a fingerprint-keyed on-disk tool-schema cache; configured servers no longer all boot at session start
- Hidden-whitespace warnings in MCP config
- NeMo Relay observability integration (re-landed on stable 0.6)
Security & Reliability
Credential & Secret Hardening
- 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
- Tier-3 credential reads scoped
- CVE dependency pins refreshed
- Windows hardening wave: text-mode subprocess decode bug class closed repo-wide, console flashes hidden, residual encoding gaps (MCP stdio, gateway update I/O, STT/TTS, desktop spawn)
- Command-helper secret source (composes with all vaults)
${env:VAR}SecretRef parity between config.yaml and MCP config
Session & State Integrity
- Four session-state fixes (safe close tracking, flush-cursor class fix, row-retry, usage-PK healer)
- Compact v23 FTS layout +
hermes sessions optimize+ CJK-bigram FTS - Read-path split with per-thread read-only connections
- OpenViking memory-provider hardening
- Credential pool: reset-aware primary restore + deferred-refresh locking fixes
Upgrade
hermes update
For new installations:
# macOS / Linux / WSL2
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
# Windows (PowerShell)
iex (irm https://hermes-agent.nousresearch.com/install.ps1)
If you’re coming from Claude Code or Codex CLI, migration is one command:
hermes import-agent
← Hermes Agent Changelog