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
…
api-server.md
…
batch-processing.md
…
browser.md
…
built-in-plugins.md
…
code-execution.md
…
codex-app-server-runtime.md
…
computer-use.md
…
context-files.md
…
context-references.md
…
credential-pools.md
…
cron.md fix: correct cron mid-run restart claim in salvaged docs 2026-08-05 21:33:44 +05:30
curator.md
…
delegation.md docs(delegation): note in-flight model waits count as progress 2026-08-05 14:00:25 +05:30
deliverable-mode.md
…
extending-the-dashboard.md
…
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
…
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
…
kanban-worker-lanes.md
…
kanban.md docs: state the /goal vs Kanban boundary on both pages 2026-08-05 21:33:44 +05:30
lsp.md
…
mcp.md docs: four small accuracy fixes 2026-08-05 21:33:44 +05:30
memory-providers.md
…
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
…
overview.md
…
personality.md docs: document /personality none|default|neutral reset across personality docs 2026-08-03 12:29:49 -07:00
pets.md
…
plugins.md
…
provider-routing.md
…
skills.md
…
skins.md
…
spotify.md
…
subscription-proxy.md
…
tool-gateway.md
…
tool-search.md perf(tools): shrink lazy tool catalog overhead 2026-08-03 19:11:30 +05:30
tools.md
…
tts.md
…
vision.md
…
voice-mode.md
…
wake-word.md feat(wake): client-capture wake word for remote desktop 2026-08-05 10:03:48 -06:00
web-dashboard.md
…
web-search.md
…
x-search.md
…