Voice and Companion
frogg has three voice features. All speech runs on the daemon, locally by default.
| Feature | What it does | Status |
|---|---|---|
| Dictation | Speak into the composer instead of typing | Available |
| Voice alerts | Agents’ updates are spoken; reply or approve permissions by voice | Available |
| Companion | A voice conversation that dispatches and tracks coding agents | Preview, off by default |
Speech on the daemon
Section titled “Speech on the daemon”With no configuration, the daemon uses local models (sherpa-onnx) and downloads them in
the background into ~/.frogg/models/local-speech:
| Role | Default model | Alternatives |
|---|---|---|
| Speech-to-text | parakeet-tdt-0.6b-v2-int8 (English) |
parakeet-tdt-0.6b-v3-int8 (25 European languages) |
| Text-to-speech | kitten-nano-en-v0_8-fp32 (voice Rosie) |
kokoro-int8-multi-lang-v1_0, piper-ljspeech-medium, kokoro-en-v0_19 |
| Voice activity | Silero VAD |
Voice features are on when the local speech runtime is available. Turn them off with
FROGG_VOICE=0 or "features": { "voice": { "enabled": false } }.
To use OpenAI for speech instead:
{ "providers": { "openai": { "apiKey": "sk-..." } }, "features": { "dictation": { "stt": { "provider": "openai" } }, "voiceMode": { "tts": { "provider": "openai", "voice": "nova" } } }}All keys and env vars are in the configuration reference.
Dictation
Section titled “Dictation”Use the microphone button in the composer. The transcript lands in the composer for you to edit and send.
Voice alerts
Section titled “Voice alerts”Turn on Voice alerts per workspace from the composer. When an agent finishes, fails or needs a permission, the daemon synthesizes a short spoken update. The alert offers Play, Reply by voice and, for permissions, Allow/Deny by saying yes or no.
- Settings → General → Auto-play spoken alerts plays them as they arrive while the app is in the foreground.
- Confirm voice replies shows your transcript for two seconds before sending.
Voice alerts need a working text-to-speech provider on the daemon.
Companion
Section titled “Companion”Companion is a voice conversation with a model that works through your agents: ask it to start a task, check on a running agent, or answer a permission, and it speaks back results. It is labelled preview and experimental.
Turn it on
Section titled “Turn it on”-
Settings → General → Enable Companion (preview). It is off by default on each device, and enabling it does not start the microphone.
-
In a project workspace, press the Companion button in the composer, then allow the microphone.
Controls: Mute pauses the microphone while tasks continue. Minimize keeps the conversation running with an indicator. End closes it; coding tasks keep running. Type instead of speaking in the text field.
Only one Companion conversation per daemon is allowed. A second device gets
Another device is using Companion on this daemon. End that conversation first.
Conversation model
Section titled “Conversation model”Companion needs a model on the daemon, chosen by features.companion.backend:
| Backend | Uses |
|---|---|
subscription (default) |
Claude Code signed in with a Claude subscription, otherwise Codex signed in with ChatGPT |
claude, codex |
Only that one |
api |
ANTHROPIC_API_KEY or providers.anthropic.apiKey, billed as API usage. Used only when selected |
Default models: claude-haiku-4-5 (Claude) and gpt-5.6-luna (Codex). Override with
features.companion.model.
If the start fails with Sign in to Claude Code or Codex on this daemon., log in to one of
those CLIs as the daemon’s user.
Preferences
Section titled “Preferences”Settings → General → Companion applies to the next conversation: reply length (Brief or Detailed), spoken task updates, acknowledge tasks, audio mode (Call or Media on mobile), voice speed, pause before replying (0.8, 1.4 or 2.4 seconds), interrupt by speaking, animated graphics and reply text.
Limits
Section titled “Limits”- Preview quality: exercised on Linux daemons. Acceptance on physical mobile devices and other daemon platforms is still open, as are microphone and speaker latency tuning.
- Codex voice (preview) uses Codex’s native voice transport. It needs a ChatGPT
sign-in and
features.companion.nativeVoicePreview: trueon the daemon, and depends on your account. - Subscription backends consume your plan’s allowance. Check host settings → Usage.