Keep a conversation running hands-free
Enable listening from the tray or mute shortcut; utterances then pass through recognition, dialogue and speech workers.
- Voice-activity detection separates utterances; the settings control microphone, recognition model and end-of-speech silence.
- Local faster-whisper recognition is separate from the selected dialogue and speech providers.
- Warm-up prepares recognition and voice resources, then work continues through queues.
Interrupt an answer that is no longer useful
New speech marks the old turn interrupted, stops playback and prevents its stale answer becoming the next spoken response.
- Discard queued sentences from an interrupted turn.
- Check interruption during model streaming and after recognition.
- Buffer sentences until a completed non-tool answer, then hand them to the speech worker.
Turn a request into a supported action
Registered tools resolve or remember contacts, compose email drafts, send a known draft and read the day’s calendar.
- A separate executor parses arguments, checks required fields and verifies draft state before sending.
- Tool results return to dialogue for another model round; tool-call text is not spoken as a final answer.
- The current send policy can persist across turns; its prototype confirmation behaviour is explained in Technical details.
Configure speech without coupling it to credentials
The settings window separates provider/model selection, recognition, voice playback and interaction controls.
- Select an online or available local voice, rate, silence threshold and barge-in behaviour.
- Keep saved model selection when provider model discovery fails.
- Store API credentials in a separate usage-specific key registry; the settings list displays masks rather than key contents.
Keep evidence for a turn
JSONL session records retain recognized text, replies, tool calls/results, usage and stage timings.
- Track failures and exhausted tool rounds as recorded outcomes.
- Bound the conversation context while retaining valid tool-call/result boundaries.
- There is no transcript or performance dashboard in this prototype; the graphical surface is the settings window and native tray menu.
Who does what
The user enables listening. Subsequent turns are automatic; action execution follows the configured confirmation policy.