Overview

horchd is a native multi-wakeword detection daemon written in Rust. It loads N user-defined ONNX classifiers in parallel, listens to the system microphone, and broadcasts a typed D-Bus signal the moment any wakeword fires. The audio thread runs once, the two universal preprocessing models load once, and adding the N-th wakeword costs one classifier evaluation per 80 ms input frame.

These docs cover the daemon, the horchctl CLI, the configuration schema, the D-Bus contract, and ready-to-paste subscriber snippets in Bash, Python, and Rust.

Where to start

  • Install — source install, AUR, or one-liner cargo install. Two ort variants (bundled vs dynamic) for the binary footprint trade-off.
  • Quickstart — register your first wakeword and verify the daemon fires.
  • Configuration — TOML schema, defaults, and how horchctl … --save edits the file in place without dropping comments.
  • D-Bus API — methods, signals, signatures, busctl examples — the canonical contract.

Subscribe from your stack

Language Recipe
Bash gdbus monitor snippet
Python dbus-next and jeepney
Rust zbus + horchd-client

License

Dual MIT OR Apache-2.0 — the standard Rust ecosystem dual-license. Either is yours to choose. Source-first on Codeberg; the GitHub repository is a read-only mirror.

Found a bug? Improve a section?

These docs live at codeberg.org/NewtTheWolf/docs.horchd.xyz. File an issue or send a pull request — even a typo fix is welcome.

For bugs and feature requests against the daemon itself, head to the horchd issue tracker.