Voice router
Voice
Hold the iPhone's Action Button and say what you want built: about 20 seconds later a coding session is on it, and a follow-up goes to the session that already has the context.
- ~20 sfrom speech to a session link
- ~5 sto transcribe 11 s of speech on a Pi 5
- <1 sto route a spoken cue
- 0.8confidence needed to continue a session
Where a prompt goes
Every prompt, spoken or typed, goes through this one router. It reads what is running, then continues one session or starts a new one.
- New session
- The default, and where every unsure branch ends.
- Continue
- Only on a cue that names one session, or a judgement of 0.8 or more.
- Relay fails
- A new session starts in that session's repo.
→ continued '…' or → new in homelab, so a wrong route shows at once.
For prompts on the move
-
Knows what's open
The judge reads each running session's name, repo and first 200 characters of its opening prompt, so a follow-up reaches the session with the context.
-
Unsure means a new session
A prompt in the wrong session muddles its work, so below 0.8 confidence, or when the judge or the relay fails, the router starts a new session.
-
Transcribed on the Pi
Whisper runs on the Raspberry Pi, given a word list so names such as
phemtencome out spelled right. No speech service gets the recording. -
A fresh worktree per session
Each new session starts on its own branch off the repo's default branch, so sessions running side by side never share a checkout.
Under the hood
- Transcription
faster-whisper,basemodel, int8 on the CPU, English- Judge
claude-haiku-5-5with a JSON schema; sees up to 12 sessions active in the last 24 h- Relay
- A headless
claude -pwithSendMessageas its only tool and no MCP servers: 3–5k tokens, ~4.6 s - New session
homelab-session: a worktree off the default branch, Claude in the background, the link once it registers- Repos
- homelab and registered work clones, monorepo folders included; the list is read on every request
- API
POST /promptwithaudioortext; returns the transcript, a one-line summary and the link