SpeakySpeak

start some Claudes, walk away hear replies as they arrive

(rainbows = replies waiting)

What the demo replies say

  1. Terminal 1, events-site: “Deploy finished, the events site is live and the newsletter went out to 212 readers.”
  2. Terminal 2, markemark: “I found the memory leak. It was the image cache holding every thumbnail forever. One line fix, tests are green, ready for your review.”
  3. Terminal 3, everething: “The refactor is done, all 34 tests pass and the branch is pushed. The tricky part was the session cache. My notes are in the commit body.”

Free (and fully local voice processing)
for Claude Code on macOS

Install

What it does

One voice at a time

Replies queue up instead of talking over each other.

AirPods stem controls

Click to pause, skip ahead, or step back.

It waits for you

Pause it, and new replies queue up quietly.

The mini player

Drag it anywhere; the full queue lives in the menu bar.

Why a voice?

Because eyes are usually busy and ears usually aren't.

ADHD-friendly

Replies find you instead of waiting in a quiet window. No staring at a terminal, no forgotten tabs.

Blind and low-vision devs

Every reply read aloud in a natural voice, without steering a screen reader through terminal output.

Hands full

Feeding the baby, making dinner, pacing with a coffee – the work keeps talking while you live your life.

RSI and limited mobility

AirPods clicks and one global hotkey drive the whole thing. No mouse, no window-hunting.

A suggested way to work

None of this is required – one Claude Code session works fine on its own. It's my adapted version of how Boris Cherny, Claude Code's creator, works – tuned to my own workflows.

1

A window per project, each its own color

2

Start long runs, then walk away.

3

Replies aloud, one at a time, in order.

4

Timestamps on replies, so a backlog makes sense by ear.

5

Two Macs? A different voice for each.

Those tab colors are an iTerm2 setting: Session › Edit Session › Tab Color. How to use it is the five-minute visual tour of all of this; the full guide has the rest, including the one line to add to your CLAUDE.md so every reply says what time it was written.

Full Feature List

The queue

  • One at a time – replies play serially, never over each other
  • Newest plays next – or group by session and hear each one's replies in the order they happened
  • Pause holds everything – new replies wait; a rainbow glow reminds you
  • Skip one reply – drop the track you don't want without stopping the pipeline
  • Survives restarts – the queue is restored on launch, silently
  • Clear played / clear all from the full deck
  • Take control – play a reply now, remove it, or send a whole session to the front

Playback

  • Speed selector – 0.8× to 2×, right on the full deck
  • Volume slider, with every render loudness‑normalized so replies match
  • Back 10 / forward 10, restart, previous reply, full transport
  • Mute that keeps queueing – chats build up quietly until you're back
  • Global quiet hotkey (⌃⌥⌘Space) – silence the room from any app, no permission prompts

The voice

  • Kokoro neural voice – a free neural voice that runs on your own Mac (Apple Silicon), ~54 to choose from. English only for now; other languages fall back to a macOS voice
  • Warm renderer – replies become audio in under a second
  • Automatic fallback to the best installed macOS voice (Intel works too)
  • Voice preview in Settings; changing voice re‑renders what's still queued
  • Per-machine voices – tell your Macs apart by ear

AirPods & media keys

  • Stem clicks – click to pause, double for next, triple for back
  • Now Playing – Control Center scrubber while speaking, released when idle so your music keys come back
  • Two Macs, one pair – the two apps take turns instead of fighting over your AirPods

What it reads

  • The whole reply – every part of a long turn, not just the last paragraph
  • Tuned for the ear – emoji and markdown stripped, paths spoken as filenames, URLs as "link"
  • You choose when – at the end of a reply, or as a long run works, so you hear a request made twenty minutes in
  • Permission prompts, out loud – when Claude stops to ask "may I run this?", a distinct chime plays and you hear which session is waiting and what it asked

The app

  • Floating mini player – auto-appears while speaking, drag it anywhere, in three looks: Classic, Glassy or Glassier
  • Your accent colour – one slider repaints the whole app, colours or plain white, grey and black
  • Menu-bar icon with queue badge and a pulse while playing, and a slash through it whenever nothing will be heard
  • Works where Claude Code runs on your Mac – terminal, the desktop app, VS Code, Cursor. Not Claude Code on the web, and not sessions on another machine over SSH
  • Native Settings window – it writes plain text files in your home folder, so edits from the shell stay in sync
  • Built-in updates – an ↑ on the menu-bar icon when a new one is out, one button in Settings to install it
  • Fully local – no accounts, no telemetry, MIT-licensed, works offline

Install

There's no download. The installer is your Claude: it builds the app from source on your Mac, checking every step – and it's more fun this way, because you watch it get made, and later the same Claude can customize anything (the voice, the speed, when it speaks). Just ask it.

Paste into Claude Code
Install SpeakySpeak on this Mac: clone https://github.com/radam5000/speakyspeak and follow INSTALL.md step by step, verifying each step.

It clones the repo, installs what's missing, builds the app and wires up the hook. Needs macOS 15.6 or newer, Claude Code, Homebrew, and the Xcode command-line tools.

How to use it · GUIDE.md · INSTALL.md · github.com/radam5000/speakyspeak

Using Claude Code in the desktop app, VS Code or Cursor? Same install, same result. Claude Code on the web and sessions on a remote machine are out: the hook has to run on the Mac that plays the sound. Tested by hand in the terminal and the desktop app; VS Code and Cursor use the same hook mechanism. Want a particular voice, a slower speed, or two Macs sharing one pair of AirPods? Add that to the prompt – the instructions tell Claude how to adapt.

Also by Adam