Voice
Hold Control+Shift and speak. Whisper dictation and Kokoro Read Aloud, both fully on-device, plus terminal voice for headless sessions.
Harmony hears and speaks without a cloud round-trip. Both voice models run entirely on your machine: faster-whisper for speech-to-text and Kokoro-82M for text-to-speech. No API keys, no per-word bill, and no audio leaves the device.
Dictation (Whisper)
| Control | Behavior |
|---|---|
| Hold Control+Shift | Push-to-talk: mic starts instantly, release to transcribe into the focused terminal. |
| Dictate (bottom bar) | Toggle listening without holding the key. |
| Esc | Cancel the current take. |
The push-to-talk key is rebindable in Settings → Dictation. If you bind Space itself, a short tap still types a normal space.
The engine defaults to faster-whisper's tiny.en model (39 MB, downloaded on first use) running on CPU with int8 compute: fast on ordinary machines, no GPU required. Larger models up to large-v3 are selectable in Settings → Dictation when you want accuracy over speed. It needs Python 3.10+ on PATH; on first use Harmony detects Python and offers to install faster-whisper for you.
Environment knobs:
| Variable | Default | Purpose |
|---|---|---|
NALA_WHISPER_MODEL | tiny.en | Model name (tiny … large-v3) |
NALA_WHISPER_PYTHON | python / python3 | Python executable |
NALA_WHISPER_PRELOAD | on | Warm the model after app start; set 0 to skip |
Read Aloud (Kokoro TTS)
Paste text and click the speaker icon, or use /read-aloud in the TUI. Kokoro-82M runs fully on-device via ONNX in a worker thread, with 15 curated English voices to choose from. The model (~90 MB) downloads once on first use; after that it works offline.
TTS settings (Settings → TTS): voice selection with preview, speed (0.75x–1.5x), quality (q4/q8/fp16/fp32), volume, and interrupt-on-paste. Two response styles ship live in the app; pick yours.
System-wide dictation
It does not stop at the terminal. Turn on system-wide dictation in Settings → Dictation, and one shortcut (Control+Shift+Space) dictates into any window (a browser tab, a doc, an email) even while Harmony sits quietly in the tray. Talk through a session when you are done, and the recap lands in that workspace's running notes.
Terminal voice (headless)
With the daemon running, voice works without the desktop window:
nala speak "the migration finished cleanly" # system TTS
nala dictate --wav recording.wav # local faster-whisper
nala voice status # what voice is doing
In the TUI: /speak on|last|stop for TTS control, /voice for dictation control, /play-back for session audio clips. The desktop remains the best path for push-to-talk and Kokoro quality.
Plan capture
The Plan button captures ideas by voice without running a shell command: speak the idea, and it becomes a plan-mode task with a Markdown artifact. The fastest way to get a thought out of your head and into the fleet's queue before it evaporates.
Why on-device matters
A router and a voice in the same process are the two raw parts for building specialized voice agents of your own, and prototyping one costs exactly nothing because the models are already on your machine. It also means voice works on a plane, in a Faraday cage of an office, and in any country your laptop happens to be in.