Skip to content

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

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:

~/.frogg/config.json
{
"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.

Use the microphone button in the composer. The transcript lands in the composer for you to edit and send.

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 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.

  1. Settings → General → Enable Companion (preview). It is off by default on each device, and enabling it does not start the microphone.

  2. 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.

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.

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.

  • 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: true on the daemon, and depends on your account.
  • Subscription backends consume your plan’s allowance. Check host settings → Usage.