Hermes Agent

Hermes proposes open-vocabulary wake words that route to named profiles

An open Hermes Agent proposal adds opt-in on-device wake words to CLI, TUI and desktop. Typed phrases need no training, and phrases such as “hey coder” can open a fresh session in the matching profile. A 96-utterance synthetic matrix reported 23-of-24 detections and no wrong-profile routes.

← Back to homeOriginal source ↗

NousResearch/hermes-agent PR #70509 is the inspected primary source: “feat(voice): on-device wake words with open-vocabulary phrases and multi-profile voice routing.” PR #70509 combines a bundled openWakeWord model with an optional sherpa-onnx path that tokenizes arbitrary phrases at runtime. The sherpa model is described as a roughly 13 MB one-time fetch; Porcupine remains an access-key-backed third engine. Every wake-enabled profile can enroll a phrase, defaulting to “hey” plus the profile name, while single-profile CLI and TUI processes print a profile-switch hint rather than silently changing identity. A cross-process microphone lease gives ownership to one local surface so desktop, TUI and CLI cannot steal callbacks from each other. The author’s synthesized matrix used six profile phrases, four voices and four negative phrases: 23 of 24 positives detected, all 23 routed correctly, and zero of 16 negatives fired. The test inventory includes 38 wake-word tests, desktop and TUI suites, type checks and docs build. Adjacent PR #69437 proposes one-time setup and first-success metrics through NeMo Relay, while PR #73012 fixes a concurrent execute_code race that can replace process-wide stdout with a closed file.

The facts

- NousResearch/hermes-agent PR #70509 was created 2026-07-24T03:18:38Z and updated 2026-07-28T00:58:01Z; state is open. - NousResearch/hermes-agent returned 221422 GitHub stars, 25953 open issues, default branch main, and last push 2026-07-28T00:57:56Z. - Latest tagged-release baseline checked: v2026.7.20 published 2026-07-20T18:35:55Z. - PR #70509 combines a bundled openWakeWord model with an optional sherpa-onnx path that tokenizes arbitrary phrases at runtime. - The sherpa model is described as a roughly 13 MB one-time fetch; Porcupine remains an access-key-backed third engine. - Every wake-enabled profile can enroll a phrase, defaulting to “hey” plus the profile name, while single-profile CLI and TUI processes print a profile-switch hint rather than silently changing identity. - A cross-process microphone lease gives ownership to one local surface so desktop, TUI and CLI cannot steal callbacks from each other. - The author’s synthesized matrix used six profile phrases, four voices and four negative phrases: 23 of 24 positives detected, all 23 routed correctly, and zero of 16 negatives fired.

What changed

PR #70509 combines a bundled openWakeWord model with an optional sherpa-onnx path that tokenizes arbitrary phrases at runtime. The sherpa model is described as a roughly 13 MB one-time fetch; Porcupine remains an access-key-backed third engine. Every wake-enabled profile can enroll a phrase, defaulting to “hey” plus the profile name, while single-profile CLI and TUI processes print a profile-switch hint rather than silently changing identity. A cross-process microphone lease gives ownership to one local surface so desktop, TUI and CLI cannot steal callbacks from each other. The author’s synthesized matrix used six profile phrases, four voices and four negative phrases: 23 of 24 positives detected, all 23 routed correctly, and zero of 16 negatives fired. The test inventory includes 38 wake-word tests, desktop and TUI suites, type checks and docs build. Adjacent PR #69437 proposes one-time setup and first-success metrics through NeMo Relay, while PR #73012 fixes a concurrent execute_code race that can replace process-wide stdout with a closed file. The primary record was inspected with its timestamps, state, body and adjacent project records. ClawCharts supplied the assignment list; it does not establish the claim.

Why it matters

Wake words turn profile boundaries into a physical interface. That is useful only if microphone ownership, phrase ambiguity and profile selection are explicit; the wrong profile can carry different tools, history and credentials. Open-vocabulary phrases also move quality from a fixed vendor model into local calibration and negative testing. The useful boundary is where persisted state, visible control and runtime behavior are expected to agree.

Current

The feature remained an open pull request and was off by default in its own design. Hermes Agent’s latest tag was v2026.7.20. The reported matrix used synthesized speech rather than a broad field deployment, and no inspected release says the wake system ships today. Repository metadata, current issues and pull requests, release baseline, Hacker News discovery and the rendered ranking row were checked. Weak search residue and historically used source spines were not promoted.

Evidence

The primary URL is https://github.com/NousResearch/hermes-agent/pull/70509. Supporting links are inspected current project records that establish implementation, adjacent direction or boundary conditions. Dates, reproductions, test totals and deployment observations remain attributed to their authors unless this brief explicitly says they were independently rerun.

Source boundary

Open work is described as open, closed work as closed, and operator reports as reports. Closure can reflect a documentation decision or triage outcome; it is not silently translated into a shipped code fix. Ranking explains why the project was scanned; it does not prove correctness, adoption or package behavior.

Operator take

Treat each profile phrase as an authority selector, not a cosmetic alias. Require visible confirmation of the selected profile before tool use, keep wake detection local where promised, log only bounded outcome metadata, and field-test accents, rooms, television audio and simultaneous surfaces before enabling unattended voice actions. Preserve a before-state receipt and verify the narrowest invariant where state changes. Do not broaden permissions or delete state merely because the visible symptom is inconvenient.

Caveat

Public project records are mutable. Source state was captured at publication time, and later revisions may change status, scope or evidence. No source here authorizes automatic mutation of a reader’s deployment.

Source inspected; source state, environment and release boundary remain explicit.