Voice for Pi
wispa adds a voice loop to the Pi coding agent with a small extension: when Pi finishes a turn, you answer out loud and your words go back as the next message.
3 min read
wispa adds a voice loop to the Pi coding agent. Like OpenCode, Pi uses a small extension that wispa installs, so when Pi finishes a turn and waits, you answer by voice.
How the voice loop works with Pi
Pi emits an agent-end event when a turn finishes. wispa's extension catches it, reads the last message, and passes it to wispa. You speak your reply, and the extension sends it back into Pi as a follow-up message, so the session continues without typing.
Set it up
- In wispa's Integrations, choose Pi and install. wispa writes an extension to
$HOME/.pi/agent/extensions/wispa-voice-loop.ts. - Start or restart Pi in your terminal so it loads the extension.
- When Pi finishes and waits, hold your wispa hotkey and speak your reply.
- The extension sends your transcribed answer back into Pi as a follow-up, and Pi continues.
Where it runs
Pi runs in the terminal, and that is where the voice loop drives it. 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. Pi's extension fetches it at the end of a turn, 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 extension then delivers it to Pi as a follow-up message framed as user input.
FAQ
Questions and answers
Does Pi need a config change?
No. Pi uses an extension, so wispa drops one file into Pi's extensions folder and Pi loads it on the next start. There is no settings file to edit.
Do I still type my replies to Pi?
No. When Pi finishes and waits, you answer by voice and the extension sends it back as a follow-up. Typing stays available whenever you want it.
Where is the Pi extension stored?
At $HOME/.pi/agent/extensions/wispa-voice-loop.ts. Removing Pi from wispa's Integrations deletes that file again.