cloudaxe-opencode/packages/desktop/docs/voice-control.md
axcho 78bf9a35eb
Some checks failed
deploy / deploy (push) Waiting to run
generate / generate (push) Waiting to run
nix-eval / nix-eval (push) Waiting to run
publish / version (push) Waiting to run
publish / build-cli (push) Blocked by required conditions
publish / sign-cli-windows (push) Blocked by required conditions
publish / build-electron (map[bun_install_flags:--os=darwin --cpu=arm64 host:macos-26 platform_flag:--mac --arm64 target:aarch64-apple-darwin]) (push) Blocked by required conditions
publish / build-electron (map[bun_install_flags:--os=darwin --cpu=x64 host:macos-26-intel platform_flag:--mac --x64 target:x86_64-apple-darwin]) (push) Blocked by required conditions
publish / build-electron (map[host:blacksmith-4vcpu-ubuntu-2404 platform_flag:--linux target:x86_64-unknown-linux-gnu]) (push) Blocked by required conditions
publish / build-electron (map[host:blacksmith-4vcpu-ubuntu-2404-arm platform_flag:--linux --arm64 target:aarch64-unknown-linux-gnu]) (push) Blocked by required conditions
publish / build-electron (map[host:blacksmith-4vcpu-windows-2025 platform_flag:--win target:x86_64-pc-windows-msvc]) (push) Blocked by required conditions
publish / build-electron (map[host:windows-2025 platform_flag:--win --arm64 target:aarch64-pc-windows-msvc]) (push) Blocked by required conditions
publish / publish (push) Blocked by required conditions
test / unit (linux) (push) Waiting to run
test / unit (windows) (push) Waiting to run
test / e2e (linux) (push) Waiting to run
test / e2e (windows) (push) Waiting to run
typecheck / typecheck (push) Waiting to run
containers / build (push) Has been cancelled
docs-locale-sync / sync-locales (push) Has been cancelled
nix-hashes / compute-hash (blacksmith-4vcpu-ubuntu-2404, x86_64-linux) (push) Has been cancelled
nix-hashes / compute-hash (blacksmith-4vcpu-ubuntu-2404-arm, aarch64-linux) (push) Has been cancelled
nix-hashes / compute-hash (macos-15-intel, x86_64-darwin) (push) Has been cancelled
nix-hashes / compute-hash (macos-latest, aarch64-darwin) (push) Has been cancelled
storybook / storybook build (push) Has been cancelled
nix-hashes / update-hashes (push) Has been cancelled
feat(desktop): add voice control
2026-07-30 16:20:14 -04:00

2.1 KiB

Desktop Voice Control

Overview

OpenCode Desktop includes built-in microphone voice control for Windows (and other Electron platforms). Speak to fill the prompt, or issue short voice commands such as send, clear, and stop.

Requirements

  1. OpenCode Desktop app (Electron)
  2. One cloud STT API key in the environment:
    • DEEPGRAM_API_KEY (recommended for streaming)
    • GROQ_API_KEY
    • OPENAI_API_KEY
  3. Optional native recorder: SoX (winget install sox) or FFmpeg
    If missing, the app automatically falls back to browser getUserMedia capture in the renderer.

Usage

  1. Open Settings → Voice
  2. Choose provider, language, and hotkey (default Alt+Space)
  3. Press the microphone button next to Send, or press the global hotkey
  4. Speak
  5. Press the hotkey / button again to stop
  6. Review the inserted text, then send (or say send if commands are enabled)

Voice commands

When Voice commands is enabled, short phrases are treated as commands instead of dictation:

Phrase Action
send / submit / go Submit prompt
run / execute Submit prompt
accept / approve / yes Allow pending permission once
reject / deny / no Deny pending permission
clear / reset / erase Clear prompt
stop / cancel / abort Stop generation
scroll up / scroll down Scroll timeline
focus Focus prompt
new line / line break Insert newline

Longer utterances are always treated as dictation text.

Architecture

Hotkey / Mic button
  → Desktop main VoiceManager
  → Native SoX/FFmpeg capture OR renderer PCM stream
  → Cloud STT (Deepgram WS / Groq / OpenAI Whisper)
  → IPC transcription event
  → App VoiceProvider
  → Command parser OR prompt insert

Packages

  • packages/desktop/src/main/voice/ — main-process capture, STT, IPC, hotkeys
  • packages/app/src/voice/ — UI, context, command parser, settings
  • packages/opencode/src/config/voice.ts — Effect Schema for voice config

Security

API keys are read only from environment variables. They are never written to opencode.json or electron-store.