@hxnnxs/opencode-voice
v0.1.9
Published
Local voice input plugin for OpenCode
Downloads
1,484
Maintainers
Readme
Installation
One command through OpenCode:
opencode plugin @hxnnxs/opencode-voiceRestart OpenCode after installing. First launch downloads the managed whisper.cpp engine and then the selected model. The user does not install whisper-cli manually.
Optional CLI installer. It runs the same OpenCode plugin install command and pre-downloads the managed engine:
npx @hxnnxs/opencode-voice installDo not clone the repo unless you want to develop the plugin.
[!TIP] First launch opens a model picker. Choose a Whisper model, let it download, then use
ctrl+rto dictate into the prompt.
Requirements
The plugin manages the STT engine and models:
- downloads
whisper.cppfrom the opencode-voice GitHub Release registry - stores it in
~/.cache/opencode-voice/engines/whisper.cpp/<platform>-<arch>/ - downloads the selected Whisper model on first setup
Manual whisper-cli install is optional. If a local binary already exists, opencode-voice can still import or use it.
Check your machine:
npx @hxnnxs/opencode-voice doctorInstall the managed engine without opening OpenCode:
npx @hxnnxs/opencode-voice engine install whisper.cppUsage
Commands:
/voice- toggle recording and append transcription/voice-submit- toggle recording, append transcription, and submit/voice-stop- cancel active recording or transcription/voice-settings- open model, hotkey, microphone, and diagnostics settings
Default hotkey:
ctrl+r -> start recording
ctrl+r -> stop, transcribe, and appendHold-to-talk is disabled by default because terminal release events vary by terminal. You can still configure a hold hotkey in /voice-settings.
Models
Available now through whisper.cpp:
| Model | Size | Notes | | -------------------- | ------ | ----------------------------- | | Whisper Small | 465 MB | default, multilingual | | Whisper Medium Q4_1 | 469 MB | better accuracy | | Whisper Turbo | 1.5 GB | large, faster than full large | | Whisper Large Q5_0 | 1.0 GB | accurate, slower |
Model downloads support resume, retry, progress, and SHA256 verification.
Planned sidecar models:
- Parakeet V3
- GigaAM v3
- Moonshine V2 Small
Platform Status
| Platform | Status |
| -------- | ------ |
| Linux | one-command engine/model install; recording uses arecord, ffmpeg, or sox |
| macOS | one-command engine/model install; recording uses ffmpeg AVFoundation until the native recorder sidecar ships |
| Windows | one-command engine/model/recorder install; recording uses DirectShow through a managed cached ffmpeg.exe, with system/bundled ffmpeg fallback |
Architecture
The package follows the public OpenCode TUI plugin shape used by community plugins.
- npm package exports
./tui - local development can point
tui.jsonat an absolute path - published install uses
opencode plugin @hxnnxs/opencode-voice - runtime settings live in OpenCode TUI plugin storage
Files:
index.js- TUI plugin entrypoint, commands, dialogs, keymap layerlib/models.js- model registry, cache paths, default settingslib/download.js- resumable model download and SHA256 verificationlib/engine.js- recorder selection, managed Windows recorder install, andwhisper-clitranscriptionlib/engines.js- managed native engine download, status, import, and removalbin/opencode-voice.js- install wrapper and diagnostics CLI
Voice input needs native audio and STT binaries. The JS plugin manages OpenCode UI, settings, engine/model downloads, and prompt insertion. A future native sidecar should replace shell recorders and add fast VAD plus Handy-style models.
Roadmap
- publish managed
whisper-clirelease assets before npm release - Rust recorder sidecar with
cpaland VAD - Parakeet, GigaAM, SenseVoice, Canary, and Moonshine model support
- Windows recorder stability and UX polish
- faster streaming-style transcription
Development
Run checks:
npm run check
npm pack --dry-runThis MVP has no build step.
Development install from a checkout:
git clone https://github.com/ihxnnxs/opencode-voice.git opencode-voice
cd opencode-voice
opencode plugin "$(pwd)"Project Status
This is an independent OpenCode plugin. It is not built by the OpenCode team and is not affiliated with OpenCode.
Credits
- OpenCode wordmark SVG adapted from the public OpenCode repository. The
voicemark was added for this plugin. - Local transcription uses
whisper.cpp. - Model download metadata follows the local-first UX researched from Handy.
