Voice for OpenCode
wispa adds a voice loop to OpenCode with a small plugin: when OpenCode finishes and goes idle, you answer out loud and your words are sent back as the next message.
3 min read
wispa adds a voice loop to OpenCode. Unlike the hook-based agents, OpenCode uses a small plugin that wispa drops in, and from then on you answer OpenCode by voice when it waits for you.
How the voice loop works with OpenCode
OpenCode signals when a session goes idle at the end of a turn. wispa's plugin catches that, reads the last message, and passes it to wispa. You speak your reply, and the plugin sends it back into OpenCode as your next message through OpenCode's own interface, so the session continues.
Set it up
- In wispa's Integrations, choose OpenCode and install. wispa writes a plugin to
$HOME/.config/opencode/plugin/wispa-voice-loop.js. - Start or restart OpenCode in your terminal so it loads the new plugin.
- When OpenCode finishes and waits, hold your wispa hotkey and speak your reply.
- The plugin sends your transcribed answer back into OpenCode, which continues.
Where it runs
OpenCode runs in the terminal, and that is where the voice loop drives it. For anything outside the loop, normal push-to-talk dictation still lets you speak text into any other app.
What wispa does in the background
wispa runs a local listener on 127.0.0.1 behind a private token, unreachable from the web. The plugin fetches it when OpenCode goes idle, sending the last message and the working folder. wispa records your reply and transcribes it with your voice-loop model, with no AI cleanup on it, and returns the text; the plugin then injects it into OpenCode framed as user input.
FAQ
Questions and answers
Does OpenCode need a config change?
No. OpenCode uses a plugin, so wispa just drops one file into its plugin folder and OpenCode loads it on the next start. There is no settings file to edit.
Why do I need to restart OpenCode?
OpenCode discovers plugins when it starts, so a fresh start loads the wispa plugin. After that the voice loop is live for every session.
Where is the OpenCode plugin stored?
At $HOME/.config/opencode/plugin/wispa-voice-loop.js. Removing OpenCode from wispa's Integrations deletes that file again.