Hermes Live Voice: continuous voice sessions over delegated Hermes runs

Hermes Live Voice is a community-built MIT voice gateway and Dashboard plugin that keeps an interruptible realtime voice session open while long-running work is delegated to Hermes durable runs, so you can steer tasks, get bounded progress and spoken completion notices, and find a persistent task in

Hermes Intermediate Copied: 0
1 resource

Requirements

  • Requires Hermes Agent 0.18.2+ (tested through 0.20.0) and Node.js 20+. The managed local voice stack on Apple Silicon additionally needs uv and at least 12 GB RAM (a 16 GB Apple Silicon Mac is recommended); non-Apple-Silicon hosts run the upstream realtime server and point HERMES_LIVE_LOCAL_URL at it.
  • Hermes Agent 0.18.2+ with the Dashboard plugin enabled.
  • The hermes-live-voice npm package installed globally.
  • A voice provider: local S2S (Apple Silicon), Gemini Live, or OpenAI Realtime.
  • Hermes /v1/runs durable runs, with one worker per accepted task.
  • For non-loopback binds: a strong HERMES_LIVE_AUTH_TOKEN, an exact allowed origin, TLS, and edge rate limits.

How to use

This fits the case the first-party mic loop and voice note modes do not: one turn in, one turn out, with no way to ask for bounded progress, steer a run, or get told when it is done while work continues in the background.

Durability ceiling: in-progress Hermes runs do not survive a Hermes Agent restart, and missing or ambiguous outcomes become unknown — the main gotcha versus a true durable queue.

The task store is a single-process file store meant for one gateway process, not multi-tenant or multi-node use; do not front it with multiple writers.

Parallelism is opt-in and policy-based: it requires HERMES_LIVE_TRUST_DECLARED_READ_ONLY=true, and model-declared read-only scope is policy input, not a sandbox or isolation.

After npm updates, run hermes-live upgrade then hermes-live launch-check.

/quit in the terminal client detaches; it does not cancel work.

Set up the gateway by installing the package globally, running setup (which writes the private config and picks a free local port), loading the Dashboard plugin, and finishing with the launch-check gate that rejects mock mode and validates the voice provider, plugin, gateway and one bounded worker.

npm install --global hermes-live-voice
hermes-live setup        # writes ~/.hermes/hermes-live/config.env, picks a free local port
hermes dashboard         # load the Dashboard plugin
hermes-live launch-check # pre-demo/prod gate: rejects mock mode, validates voice provider, plugin, gateway, one bounded worker

Config lives at $HERMES_HOME/hermes-live/config.env with private permissions; env vars override the managed config, and project .env files are never loaded or executed.

Task state is single-writer at ~/.hermes/hermes-live/tasks-v1.json.

Prompts are spoken exactly as typed, since the voice layer is I/O only. The useful shapes are the ones the mic loop cannot do, such as starting a new chat, delegating longer work like a refactor plus test run, and saying you will keep talking while it takes its time.

Prompts are spoken the same as typed because the voice layer is I/O only; the useful shapes are the ones the mic loop can't do.

Start a new chat. I want you to refactor the auth module and run the test suite — take your time, I'll keep talking.

While that run is live, ask for bounded progress only, not the full log.

Where is it up to? Just the bounded progress, not the full log.

Stop task <task-id>.  // stopping always targets the exact task ID; barge-in never cancels work

After a disconnect and reconnect, ask what finished while you were away.

What finished while I was away?

Source: aliaihub/awesome-hermes-usecases and its contributors. License: CC-BY-4.0. Source license notice.

Translation and editorial adaptation by ClawCases.

>Resources

>Related Use Cases

>More at this level: Intermediate