hermes-agent/website
Brooklyn Nicholson 07648318ad feat(voice): "Hey Hermes" wake word to start a hands-free session
Opt-in, fully on-device wake word — the "Hey Siri" pattern — across all three
local surfaces (CLI, TUI, desktop GUI), with one configurable owner. Say the
phrase and Hermes opens a fresh session and starts hands-free voice; talk
back-and-forth; end it and the wake word re-arms. "Hey Hermes" works out of the
box (a trained model ships with Hermes). Off by default — nothing listens until
you turn it on.

Footprint: no new core model tool (config + a CLI command + gateway RPCs);
cache-safe (on wake we hand a transcript to the normal input path, never a
system-prompt/toolset mutation); .env only carries PORCUPINE_ACCESS_KEY.

- tools/wake_word.py: shared, engine-pluggable detector (openWakeWord default,
  free/local; Porcupine premium) over the existing 16 kHz sounddevice capture.
  Background daemon thread with pause()/resume() so it yields the mic during a
  voice turn, and reset() on every (re)start so a resume can't re-fire on stale
  audio. Ships a bundled "hey hermes" openWakeWord model (tools/wakewords/,
  trained with the openWakeWord pipeline, Apache-2.0) as the default; a built-in
  name or a custom .onnx/.tflite path still works. download_models() is called
  for any model so a fresh install fetches the shared feature models (else it
  crashed on a missing melspectrogram.onnx).
- wake_word.surface ("auto"|"cli"|"tui"|"gui") + wake_surface_enabled() gate so
  exactly one surface owns the listener and the session it opens.
- CLI: in-process detector; on wake → new session + single-utterance capture via
  the existing voice pipeline, with an idle watchdog that re-arms the mic.
  /wake [on|off|status] command.
- TUI + desktop GUI: share the Python tui_gateway, which runs the detector
  server-side and exposes wake.start/stop/pause/resume/status + a wake.detected
  event (routed back over the same transport that armed it). Desktop arms it on
  connect, opens a fresh session + starts voice on wake, and hands the mic
  between the detector and its browser voice loop.
- config.yaml wake_word section; [wake] extra + uv.lock; packaging ships the
  bundled model in wheel and sdist.
- Also: collapse ElevenLabs voice-list 401 log spam; treat an empty STT
  transcript (silence) as a quiet re-listen, not a "transcription failed" toast.
- Tests (mocked, no live audio/network) + packaging guard + feature docs.
2026-07-22 10:36:37 -05:00
..
docs feat(voice): "Hey Hermes" wake word to start a hands-free session 2026-07-22 10:36:37 -05:00
i18n/zh-Hans/docusaurus-plugin-content-docs/current fix(secrets): validate bitwarden status token 2026-07-22 03:20:09 -07:00
scripts refactor(cron): rebrand Cron Recipes -> Automation Blueprints 2026-06-11 10:49:47 -07:00
src refactor(cron): rebrand Cron Recipes -> Automation Blueprints 2026-06-11 10:49:47 -07:00
static fix: regenerate model-catalog.json to dedupe sonnet-5 entries 2026-07-20 02:25:44 -07:00
.gitignore feat(skills-hub): health checks, freshness badge, and a watchdog cron (#32345) 2026-05-25 23:10:45 -07:00
docusaurus.config.ts fix(docs): disable fuzzy matching in docs search (exact word or prefix only) (#65103) 2026-07-15 09:57:46 -07:00
package-lock.json docs(website): redirect old automation-templates URL to automation-blueprints 2026-06-12 09:46:27 -07:00
package.json docs(website): redirect old automation-templates URL to automation-blueprints 2026-06-12 09:46:27 -07:00
README.md docs: replace ASCII diagrams with Mermaid/lists, add linting note 2026-03-21 17:58:30 -07:00
sidebars.ts feat(skills): bundle docx, xlsx, and pdf office skills; refresh powerpoint (#68595) 2026-07-21 05:39:23 -07:00
tsconfig.json change(tooling): typecheck in CI, update ts to 6 2026-06-10 11:59:34 -04:00

Website

This website is built using Docusaurus, a modern static website generator.

Installation

yarn

Local Development

yarn start

This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server.

Build

yarn build

This command generates static content into the build directory and can be served using any static contents hosting service.

Deployment

Using SSH:

USE_SSH=true yarn deploy

Not using SSH:

GIT_USER=<Your GitHub username> yarn deploy

If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the gh-pages branch.

Diagram Linting

CI runs ascii-guard to lint docs for ASCII box diagrams. Use Mermaid (````mermaid`) or plain lists/tables instead of ASCII boxes to avoid CI failures.