Back to blog

Hermes Agent 0.20: voice, A2A, and the desktop shift

August 10, 2026Dedimarco
AI agents voice A2A Nous-Research
Hermes Agent 0.20: voice, A2A, and the desktop shift

Nous Research released Hermes Agent 0.20 “Herald” on August 3, 2026. According to the team, it is the most ambitious release in the project’s history. Four pillars structure this delivery: real-time voice conversations, the A2A v1.0 protocol for agent interoperability, the desktop elevated to a full-fledged platform, and a CLI enriched with diagnostic commands. If you are new to the project, our April 2026 comparison with OpenClaw lays the groundwork; here, let’s focus on what changes.

Feature Category Impact
Real-time voice with barge-in Interface Hands-free, full-duplex interaction
On-device wake words Privacy No audio sent before activation
A2A v1.0 (Agent-to-Agent) Interoperability Heterogeneous agents discover and talk to each other
Agent Card JSON-RPC 2.0 Interoperability Hermes exposed as a target for other agents
Outbound webhooks signed with HMAC-SHA256 Security Integrity of sent events
Search with verifiable citations Reliability Fact-checking anchored in sources
Artifacts with live preview Desktop Visual iteration without leaving the session
Plugin SDK + Kanban Desktop Native extension ecosystem
Multi-window + SSH remote Desktop Parallel sessions, remote control
Per-turn micro-compaction + /focus Context Continuously optimized context window

Hermes Agent at a glance

Hermes Agent is developed by Nous Research under the MIT license. Its founding principle remains a closed learning loop: the agent creates skills from experience and refines them across sessions, with persistent memory. Everything below concerns v0.20 exclusively; for a project overview, see the April article.

Real-time voice conversations

v0.20 introduces a full voice mode, designed for natural interactions rather than classic dictation.

Streaming with barge-in

The microphone stays active during both generation and audio playback. You can interrupt the model mid-sentence: it is notified of the interruption and stops. TTS synthesis runs clause by clause, which reduces perceived latency compared to monolithic synthesis. This is full-duplex: both parties can speak at the same time, just like a phone conversation.

On-device wake words

Wake word detection (“hey hermes” by default) runs locally, with no audio stream leaving the machine until the wake word is detected. This is a notable privacy gain over cloud-based solutions. The configuration looks like this:

# config.yaml — voice excerpt
voice:
  enabled: true
  barge_in: true            # user can interrupt the model
  stop_phrases:             # phrases that stop voice generation
    - "arrête-toi"
    - "silence"
    - "stop"
  wake_word: "hey hermes"   # default wake word, detected locally
  tts_engine: "kokoro"      # local TTS engine, clause-by-clause

A2A v1.0: heterogeneous agents that talk to each other

The Agent-to-Agent (A2A) protocol is an open standard led by the Linux Foundation (a2a-protocol.org). It is compatible with LangChain, CrewAI, Google ADK, and any implementation built on the a2a-sdk.

Hermes is bidirectional in this protocol. On one hand, it can call other agents through three dedicated tools: a2a_discover (find a competent agent), a2a_call (send it a task), and a2a_orchestrate (chain multiple agents). On the other hand, it exposes itself: an Agent Card is served at /.well-known/agent-card.json in JSON-RPC 2.0 format, which allows any A2A client to reach it.

Security-wise, exchanges use bearer tokens, listening is limited to localhost by default, and rate limiting plus an anti-loop turn cap prevent an agent from spiraling into a circular conversation. A concrete example: a Hermes agent specialized in writing can delegate a fact-check to a Hermes agent specialized in research, with no human intervention.

Signed outbound webhooks

Webhooks emitted by Hermes are now signed with HMAC-SHA256. The recommended version is V2, with the X-Webhook-Signature-V2 and X-Webhook-Timestamp headers. The digest is computed over "<timestamp>.<body>", and a ±300-second tolerance guards against replay attacks. Here is what server-side verification looks like:

import hmac, hashlib, time

def verify_webhook(payload: bytes, signature: str, timestamp: str, secret: str) -> bool:
    # Reject if the timestamp is too old (replay protection)
    if abs(time.time() - int(timestamp)) > 300:
        return False
    # Recompute the expected digest
    message = f"{timestamp}.".encode() + payload
    expected = hmac.new(secret.encode(), message, hashlib.sha256).hexdigest()
    # Constant-time comparison to prevent timing attacks
    return hmac.compare_digest(expected, signature)

Search with verifiable citations

The grounded-citations skill produces anchored responses: citations are matched against the actual text of the pages that were consulted. A fact-checking mode explicitly flags what is verified, what fails, and what cannot be checked. The release notes describe this feature at a high level; expect implementation details in upcoming versions.

The desktop becomes a platform

The desktop app goes beyond a graphical terminal.

Artifacts with live preview

Artifacts are versioned cards (code, rendering, data). A live preview appears in a sandboxed side panel, so you can iterate on HTML, SVG, or executable code without leaving the conversation.

Plugin SDK

A proper plugin SDK is emerging, with Kanban as the founding plugin. The API exposes ctx.download for fetching files and floating panels for the interface. Full SDK details are still being documented.

Multi-window

You can open parallel sessions in separate windows. A quick-entry window, accessible via a global shortcut, lets you ask a quick question without switching context. An SSH backend lets you drive a Hermes instance running on a remote machine, which is handy for a dev server or a GPU cluster.

CLI: shell mode and new commands

The CLI gains commands that avoid wasting model turns on trivial operations:

! ls -la src/     # run a shell command without consuming a model turn
/init             # analyze the project and generate/update AGENTS.md
/diff             # show changes (staged, session)
/context          # detail what fills the context window
/focus            # condensed view with retrieval of hidden lines

The ! prefix is especially useful: it runs a system command with zero token cost. Also note Ctrl+S for prompt stashing (save an in-progress prompt to resume later) and hermes import-agent, which migrates configurations from Claude Code or Codex CLI.

Smarter context compression

Context management improves with per-turn micro-compaction: instead of one giant pause, the cost is spread across every interaction. Proactive pruning of tool results frees space continuously. A guaranteed queue of recent user messages (compression.min_tail_user_messages) preserves the conversation thread, and per-model thresholds (compression.threshold_tokens) adapt compression to the model in use. [SKILL_PRUNED] markers flag when a skill has been trimmed, so it does not silently haunt the session. All of this remains transparent to the user.

Conclusion

With v0.20, Hermes Agent moves from terminal agent to full platform: voice, desktop, A2A interoperability. If you are looking for a local voice agent or want to orchestrate heterogeneous agents, this version is worth a try. The A2A protocol, backed by the Linux Foundation, could well become the de facto standard for the AI agent ecosystem — and Hermes is already positioned as a bidirectional node in that ecosystem.

Sources: GitHub release v2026.8.3, A2A docs, webhooks docs, voice-mode docs, a2a-protocol.org (consulted on 2026-08-10).