hermes-agent/website/docs/user-guide/features
Ben Barclay 76ac204846 fix(wake): run openWakeWord on tflite on macOS ARM64
openWakeWord's ONNX backend returns near-zero scores on Apple Silicon
(dscripka/openWakeWord#336), so "Hey Hermes" never crossed the 0.5
threshold: the listener armed, the microphone worked, and nothing fired.

Bisecting the pipeline puts the fault in exactly one stage — feeding the
same audio through both backends, the melspectrogram front-end is
bit-identical (maxdiff 0.00000) and the wake classifier agrees on
identical features, while the shared embedding model diverges by 45.44.
Cross-feeding confirms it: tflite features scored through the *onnx*
classifier give 0.9948 vs 0.000009 for onnx features. A telling
secondary symptom is that scores fall as input gets louder (0.5x ->
0.00031, 8x -> 0.000066), which is garbage inference rather than a weak
detection.

Selecting tflite in config alone does not fix it. openWakeWord hardcodes
`import tflite_runtime.interpreter` but declares tflite-runtime for
`platform_system == "Linux"` only; on macOS the equivalent wheel is
ai-edge-litert, so that import always fails and model.py silently
downgrades back to onnx. The result is a detector that reports itself
listening and can never fire.

- default the backend per platform (tflite on macOS ARM64, onnx
  elsewhere) instead of hardcoding onnx, and pick the matching bundled
  model artifact
- bridge tflite_runtime -> ai_edge_litert through sys.modules, in-process,
  with no writes to site-packages
- refuse the silent onnx downgrade on macOS ARM64 and report the missing
  runtime through check_wake_word_requirements() so the GUI surfaces an
  actionable hint rather than arming a dead ear
- lazy-install ai-edge-litert via its own feature key, because lazy-dep
  specs cannot carry PEP 508 markers (_spec_is_safe rejects ";")

An explicit `inference_framework` in config still wins, so anyone pinning
a backend keeps it.

Verified on macOS 26.5.2 / M-series: "hey hermes" scores 0.0005 on onnx
and 0.9423 on tflite from the same clip, with cross-phrase controls at
0.0003. Live over-the-air through the real microphone fires 4/4
utterances (peak 0.9532).
2026-07-28 13:35:37 +10:00
..
_category_.json
…
acp.md
…
api-server.md docs(delegation,api): document stall detection, timeout metadata, /agents live status, runs-stream subagent lifecycle 2026-07-27 11:33:53 -07:00
batch-processing.md
…
browser.md
…
built-in-plugins.md docs: Plugins subcategory under Extending + secret-source plugin guide + 1Password sidebar fix (#59613) 2026-07-06 12:11:31 -07:00
code-execution.md
…
codex-app-server-runtime.md
…
computer-use.md
…
context-files.md
…
context-references.md docs: comprehensive documentation audit — fix stale info, expand thin pages, add depth (#5393) 2026-04-05 19:45:50 -07:00
credential-pools.md
…
cron.md
…
curator.md fix(curator): make the autonomous write policy consistent (#67140) 2026-07-25 19:27:17 -07:00
delegation.md docs(delegation,api): document stall detection, timeout metadata, /agents live status, runs-stream subagent lifecycle 2026-07-27 11:33:53 -07:00
deliverable-mode.md
…
extending-the-dashboard.md
…
fallback-providers.md
…
goals.md
…
honcho.md
…
hooks.md feat(delegate): expose redacted child tool history 2026-07-26 20:36:47 -07:00
image-generation.md
…
kanban-tutorial.md
…
kanban-worker-lanes.md
…
kanban.md
…
lsp.md
…
mcp.md feat(mcp): fnmatch glob support in tools.include/exclude filters 2026-07-26 08:26:09 -07:00
memory-providers.md
…
memory.md
…
mixture-of-agents.md
…
overview.md
…
personality.md
…
pets.md
…
plugins.md
…
provider-routing.md
…
skills.md
…
skins.md
…
spotify.md
…
subscription-proxy.md
…
tool-gateway.md
…
tool-search.md feat(tools): tier-2 server-summary hint + per-server listing degradation; 5% default budget 2026-07-26 08:26:09 -07:00
tools.md docs: reconcile docs with code across last 3 releases (#54254) 2026-06-28 12:47:50 -07:00
tts.md
…
vision.md
…
voice-mode.md
…
wake-word.md fix(wake): run openWakeWord on tflite on macOS ARM64 2026-07-28 13:35:37 +10:00
web-dashboard.md
…
web-search.md
…
x-search.md
…