LOOK MOM, NO HANDS
Every kid has that moment on a bike: arms out wide, wobbling down the street, yelling “look mom, no hands!” It’s terrifying and thrilling, and you feel invincible right up until the curb.
This is my grown-up version. I spend most of my day in Claude Code, and at some point I stopped wanting to type to it. So I built a setup where I talk to my computer, and Claude talks back.
IT STARTED WITH SUPERWHISPER
Superwhisper is what started it all. It’s a paid program, and one I highly recommend: it does a great job of transcribing, with both local and cloud models.
At first I used it with hotkeys, and then with a foot pedal. Neither lasted. With hotkeys my fingers were still on the keyboard, which defeated the point of dictating. The foot pedal freed my hands, but I’m not taking it with me when I carry the machine around the house. I needed something that just listens. Here’s where it ended up:
WAKE WORDS: THE EARS
The listening part is hey_claude, a small macOS listener built on openWakeWord. It waits for a word, fires an action, then releases the mic so Superwhisper can use it.
The stock wake words didn’t work for me. My Danish-flavoured English made them fire constantly, and it took a while to find words that work well. The rule is simple: it must never trigger by accident. A word has to be either rare, or long enough that it won’t show up in ordinary speech.
So I used both approaches. My start words are rare. My end words are common, but long enough not to turn up at random, and needing both makes the combination rarer still. I trained the models on my own voice.
| I say | It does |
|---|---|
| joxate | start dictating |
| zaibatsu | ”computer” mode - the next thing is a command |
| obsidian out | finish - paste it and hit Return |
| barada nikto | cancel - throw the dictation away |
Joxate is an invented word. Zaibatsu is Japanese (財閥), the big industrial conglomerates. “Obsidian out” sounds a lot like “over and out”, which makes it easy to remember. And yes, the cancel word is from The Day the Earth Stood Still. It’s the phrase that stops the robot.
THE CONTROLLER: WHAT DID I MEAN?
Once the end word closes the dictation, Superwhisper has text. Normally it would just type it. Instead, I use the fact that it can send its transcript to any OpenAI-compatible endpoint, and point it at a small controller app on localhost. The controller decides what my words mean. It either inserts them as text or acts on them as a command, then replies with nothing, so Superwhisper types nothing itself.
INSERTING TEXT, WITH A SHARPENER
Most of the time I’m just dictating, and the controller pastes the text where I was typing.
But I ramble. I start a sentence, change my mind, circle back, and trail off. So when a dictation runs past about 50 words, it doesn’t get pasted yet. It goes to Claude Haiku as an editor, not an assistant: clean it up, don’t answer it. Saying “sharpen” or “ramble” at the start forces this on shorter dictations too. A picker opens with my raw words, and the rewrites land next to them:
- Tightened: my voice, but coherent
- Concise: just the point
- Considered: a slower pass that thinks first and works out what I finally meant
I click the one I want, or abort if none of them is right. Long-winded stuff gets caught before it’s sent anywhere. That makes voice safe in apps where I’m talking to other people, like Teams, where I’d never paste a raw ramble. It stays out of the way in the terminal, where a scattered brain-dump to Claude is the whole point.
COMPUTER, DO THE THING
Say zaibatsu first, and the words become a command. The controller gives an LLM (Claude Haiku again) a set of tools and lets it pick the right one for what I said. The tools are small and concrete: focus a window or app, switch to a particular Claude session, jump to an iTerm tab, tile my windows, mute a session’s voice, tell me which sessions are waiting on me, open a Teams chat.
Along with my words, the model gets a live list of my running Claude sessions. That’s how “the one with the postback project” resolves to the right window, without my words having to match a fixed command. If it’s unsure which window I mean, it asks. If nothing fits, it tells me. If the model is unreachable, the controller falls back to a plain list of commands.
It’s the closest I’ve gotten to the Star Trek version: say a thing, the ship does the thing.
TALKING BACK
That’s me talking to Claude. The other half is hearing it answer.
I run a local voice server that supports multiple TTS engines. I tried Kokoro, Qwen and Supertonic, and settled on Pocket TTS as my favourite.
It hooks into Claude Code, so every Claude window gets its own name and its own voice. It’s a bit of a mind hack: when I have several agents running, I know who’s talking and what it’s about before I’ve processed a single word. My brain gets the context for free.
Two more things keep it from turning into noise:
- Summaries, not transcripts. I’ve told Claude to end each reply with a short summary wrapped in “read aloud” tags, and only that part is spoken.
- Earcons. If that summary starts with a cue emoji, a short sound plays first: 🎉 a fanfare, ❌ the classic Mac OS 8 error quack, ⚠️ an alert chime, 🔔 a “hey, I need you” ping, 💡 a light note. The emoji itself isn’t read out, and no emoji means no sound. Permission and idle prompts get a bare ding with no speech at all.
Here’s what the end of a reply looks like. Everything above the tags stays on screen, only the tagged block is spoken, and the 🎉 plays the fanfare first:
The build passes and the branch is pushed. The preview link is in the
list above, and the diagram is the main thing left to check.
## STARTVOICE ##
🎉 The build passes and the branch is pushed. Should I open the pull request?
## ENDVOICE ##
HANDS OFF
Put together, this is what the hotkeys and the foot pedal never managed. I can carry the laptop around the house, say a wake word, dictate, send it, jump to the right Claude session, and hear what happened. No keyboard, no pedal, no hotkey.
That makes for genuinely hands-free coding sessions. My hands are free for something else entirely, like folding socks or cleaning the kitchen, while the agents keep working and tell me when they need me.
Look mom, no hands.
CONTINUE?