VOICE · LINUX DAEMON
heard
Voice-controlled tooling daemon for Linux. Hold Shift, speak, release.
Deployed on real hardware with systemd, single-instance flock, unix-socket IPC, and a GNOME Shell extension.
Problem
Voice assistants on Linux are either cloud-dependent, privacy-invasive, or too generic. There is no lightweight, offline, intent-based voice interface for developer tooling that runs entirely on local hardware.
Why it's hard
Voice-to-intent on Linux requires: real-time PTT capture without X11/Wayland dependency, offline STT that runs on consumer hardware, a classifier that maps spoken phrases to tool invocations across two languages, and a security model that prevents arbitrary command execution via voice. The two-stage classification (MiniLM centroids → Needle LLM fallback) must complete in <500ms to feel responsive.
Architecture
Push-to-talk via evdev
Captures raw keyboard events directly. No X11/Wayland dependency. Works across all desktop environments.
Two-stage classification
MiniLM embedding centroids for fast local intent matching. Falls back to Needle LLM for ambiguous or novel commands. Bilingual EN/ES classifier with measured accuracy.
Shell allowlist
Tool handlers use a strict allowlist for shell commands. Arbitrary command execution is blocked by design.
System integration
Systemd unit with single-instance flock. Unix-socket IPC. JSONL event log. GNOME Shell extension for visual feedback. Daemon mode for background operation.
Results
Tradeoffs
- ·Linux-only (evdev dependency)
- ·Requires local STT model download on first run
- ·Bilingual classifier accuracy varies by accent and noise level