Superwhisper voice integration extension for Pi.
Get voice notifications when your AI coding tasks complete, and respond with your voice. Your voice response is sent back to Pi as the next prompt, creating a hands-free coding loop.
- Pi (
@mariozechner/pi-coding-agent) installed (npm i -g @mariozechner/pi-coding-agent) - Superwhisper app for macOS
Install with pi's package manager. Pick whichever source you prefer — both work the same once installed.
pi install npm:@superwhisper/pipi install git:github.com/superultrainc/pi-superwhisperPi clones into ~/.pi/agent/git/github.com/superultrainc/pi-superwhisper and runs npm install automatically. Pin a version with @<ref> (e.g. ...pi-superwhisper@v1.0.0).
git clone https://github.com/superultrainc/pi-superwhisper.git
pi install ./pi-superwhisperPi loads .ts extensions directly via jiti, so there's no build step.
Restart pi to activate.
You speak → Pi works → Extension notifies Superwhisper → You speak back → loop
- Task completes → Pi fires
agent_endwithstopReason: "stop" - Extension extracts the response → reads the last assistant text content
- Extension notifies Superwhisper → writes message to temp file, opens deeplink
- Superwhisper shows notification → displays summary with voice recording UI
- You speak your response → Superwhisper transcribes and writes to response file
- Extension reads response → polls the response file, sends back to Pi via
pi.sendUserMessage - Pi continues → processes your voice input as the next instruction
| Pi Event | Superwhisper Status | Description |
|---|---|---|
agent_end (stop) |
completed |
Task finished |
Pi has no built-in permission popups or elicitation system, so only end-of-turn completions are surfaced today. If you wire up your own permission gate via tool_call blocking, file an issue and we'll plumb it through.
You can ask the agent to enable or disable Superwhisper voice notifications at any time during a session. The extension exposes a superwhisper_toggle tool the agent will use automatically when instructed.
Disable Superwhisper for the current session:
"Disable Superwhisper" / "Turn off voice notifications" / "Stop Superwhisper"
Re-enable Superwhisper for the current session:
"Enable Superwhisper" / "Turn voice notifications back on" / "Re-enable Superwhisper"
The toggle is session-scoped — it only affects the current Pi session and resets when you start a new one.
npm install
npm run typecheckSee From a local clone above for the standard pi install ./path flow. For tighter iteration on a single file, symlink it into pi's user extensions directory so edits are picked up on the next pi restart without re-running pi install:
mkdir -p ~/.pi/agent/extensions
ln -s "$PWD/extensions/superwhisper.ts" ~/.pi/agent/extensions/superwhisper.ts| Variable | Default | Description |
|---|---|---|
SUPERWHISPER_DEBUG |
unset | Set to 1 to write debug logs to /tmp/superwhisper-agent/debug.log |
SUPERWHISPER_SCHEME |
auto | Override deeplink scheme (superwhisper vs superwhisper-debug) |
extensions/
superwhisper.ts # Extension entry — pi loads this directly
constants.ts # Constants and shared types
inbox.ts # Inbox payload writes
message.ts # Pi AgentMessage helpers (extract text, summary, end-turn)
poll.ts # Response file polling
MIT