hermes-agent/website/docs/user-guide/features
brooklyn! 7e16241825
feat(wake): hands-free wake word for remote desktop via client mic streaming (#79491)
* feat(wake): client-capture wake word for remote desktop

Remote headless backends have no PortAudio mic, so "hey hermes" fails even
when openWakeWord is installed. Let the desktop stream 16 kHz int16 PCM via
wake.feed while detection stays server-side.

- wake_word.capture: auto|local|client (+ GUI client_capture prefer)
- WakeWordDetector external_audio queue + feed_audio API
- wake.feed RPC; wake.start/status report capture + frame_length
- Desktop getUserMedia feeder; stop on wake.detected, re-arm after voice
- Docs + unit tests (26 pass in tests/tools/test_wake_word.py)

* fix(wake): address review on client-capture re-arm and feed queue

- wake.status reports effective capture from the armed detector (client vs
  local), plus frame_length/sample_rate; GUI status probes prefer client
- Gateway test doubles accept external_audio on start_listening
- Desktop PCM feeder uses a bounded ordered queue instead of dropping frames
  while a wake.feed RPC is in flight
- /wake on and status/re-arm paths pass client_capture so remote reattach works

* fix(wake): auto capture keeps the backend mic when one exists

With capture:auto the desktop always preferred client streaming, so a local
desktop with a working backend mic silently switched from PortAudio to
getUserMedia default-device — dropping wake_word.input_device selection
(#74363). A ready backend input now wins under auto; client capture is the
fallback for a preferring surface on a mic-less backend, and capture:client
still forces streaming.

Also removes the dead auto branch (both arms returned local) and lets the
client-feed test skip cleanly when numpy is absent.

* perf(desktop): coalesce wake.feed frames

Sending one 80 ms frame per RPC is ~12.5 gateway calls/s for as long as the
ear is armed. Drain up to 4 queued frames into a single wake.feed payload
(backend feed() already splits long buffers into engine frames) — ~3 RPCs/s
steady-state. Fix the wake.feed size-cap comment (64000 bytes = 2 s, not
0.5 s).

* docs(config): document wake_word.capture in cli-config.yaml.example

---------

Co-authored-by: Andrew <drew@kainotomic.com>
2026-08-05 10:32:38 -06:00
..
_category_.json
…
acp.md feat(runtime)!: require Node 26 across all installers, heal, and upgrade paths 2026-08-01 21:17:51 -04:00
api-server.md docs: accuracy sweep + coverage for 2 months of shipped features 2026-07-29 08:48:05 -07:00
batch-processing.md feat(reasoning): add max and ultra effort levels (#62650) 2026-07-12 00:26:49 -07:00
browser.md fix: widen headed-mode gate to config, add browser.headed default, tests, docs 2026-07-18 10:07:46 -07:00
built-in-plugins.md docs: accuracy sweep + coverage for 2 months of shipped features 2026-07-29 08:48:05 -07:00
code-execution.md docs: accuracy sweep + coverage for 2 months of shipped features 2026-07-29 08:48:05 -07:00
codex-app-server-runtime.md docs(codex): document live app-server display; AUTHOR_MAP entries 2026-07-17 13:44:12 -07:00
computer-use.md feat(computer_use): align cua-driver 0.10 permission modes 2026-07-29 12:19:37 -07:00
context-files.md docs: accuracy sweep + coverage for 2 months of shipped features 2026-07-29 08:48:05 -07:00
context-references.md
…
credential-pools.md docs: teach providers: dict as the canonical custom-provider format 2026-07-29 09:44:59 -07:00
cron.md fix: correct cron mid-run restart claim in salvaged docs 2026-08-05 21:33:44 +05:30
curator.md docs: sync overnight sweep with registry, gateway, curator, cron 2026-07-29 09:45:11 -07:00
delegation.md docs(delegation): note in-flight model waits count as progress 2026-08-05 14:00:25 +05:30
deliverable-mode.md docs: accuracy sweep + coverage for 2 months of shipped features 2026-07-29 08:48:05 -07:00
extending-the-dashboard.md docs: accuracy sweep + coverage for 2 months of shipped features 2026-07-29 08:48:05 -07:00
fallback-providers.md feat: reset-aware primary restore — stay on fallback until the rate-limit window resets 2026-08-03 19:02:12 +05:30
goals.md docs: state the /goal vs Kanban boundary on both pages 2026-08-05 21:33:44 +05:30
honcho.md docs(honcho): clarify pinUserPeer pins only non-agent users 2026-06-15 21:34:09 +00:00
hooks.md fix(hooks): single delivery_id across header+body, never follow redirects 2026-08-02 15:01:11 -07:00
image-generation.md fix(file-sync): serialize concurrent sync cycles 2026-08-03 22:53:32 +05:30
kanban-tutorial.md docs: accuracy sweep + coverage for 2 months of shipped features 2026-07-29 08:48:05 -07:00
kanban-worker-lanes.md refactor(kanban): fold worker/orchestrator skills into injected guidance (#50473) 2026-06-21 17:06:48 -07:00
kanban.md docs: state the /goal vs Kanban boundary on both pages 2026-08-05 21:33:44 +05:30
lsp.md fix(lsp): expose lsp.idle_timeout in config, harden reaper, log reaps 2026-07-29 17:11:30 +05:30
mcp.md docs: four small accuracy fixes 2026-08-05 21:33:44 +05:30
memory-providers.md docs: accuracy sweep + coverage for 2 months of shipped features 2026-07-29 08:48:05 -07:00
memory.md docs: warn against pointing two agents at one Hermes home (memory, profiles, FAQ) 2026-08-05 21:33:44 +05:30
mixture-of-agents.md feat(moa): default advisor fanout to user_turn — the cheapest cadence 2026-07-23 21:07:18 -07:00
overview.md fix(wake-word): enforce single-owner lifecycle 2026-07-28 07:58:01 -07:00
personality.md docs: document /personality none|default|neutral reset across personality docs 2026-08-03 12:29:49 -07:00
pets.md docs: accuracy sweep + coverage for 2 months of shipped features 2026-07-29 08:48:05 -07:00
plugins.md docs: Plugins subcategory under Extending + secret-source plugin guide + 1Password sidebar fix (#59613) 2026-07-06 12:11:31 -07:00
provider-routing.md fix(routing): preserve profile and delegation parity 2026-07-10 13:10:45 +05:30
skills.md docs: accuracy sweep + coverage for 2 months of shipped features 2026-07-29 08:48:05 -07:00
skins.md docs: accuracy sweep + coverage for 2 months of shipped features 2026-07-29 08:48:05 -07:00
spotify.md docs(spotify): document 6-month re-auth cycle and add client-level invalid_grant test 2026-06-20 23:23:47 -07:00
subscription-proxy.md feat(cli): make `hermes portal` the human-readable Portal onboarding alias 2026-06-04 01:19:28 +05:30
tool-gateway.md docs: deep audit — registry drift, stale claims, 2-week PR coverage, dashboard screenshot (#40952) 2026-06-07 01:39:06 -07:00
tool-search.md perf(tools): shrink lazy tool catalog overhead 2026-08-03 19:11:30 +05:30
tools.md Revert "remove Vercel AI Gateway and Vercel Sandbox (#33067)" 2026-07-29 19:48:37 -07:00
tts.md docs: accuracy sweep + coverage for 2 months of shipped features 2026-07-29 08:48:05 -07:00
vision.md
…
voice-mode.md fix(voice): full-duplex agent-turn listener — interrupt by voice during generation AND playback 2026-07-29 10:08:53 -07:00
wake-word.md feat(wake): client-capture wake word for remote desktop 2026-08-05 10:03:48 -06:00
web-dashboard.md docs: accuracy sweep + coverage for 2 months of shipped features 2026-07-29 08:48:05 -07:00
web-search.md docs: accuracy sweep + coverage for 2 months of shipped features 2026-07-29 08:48:05 -07:00
x-search.md docs(xai): clarify x_search vs xurl routing without schema cross-refs 2026-07-23 21:06:47 -07:00