1 · The idea
Run as many Claude Code sessions as you like. Each finished reply is rendered to audio and dropped into one queue, and the queue plays one reply at a time. Two sessions can finish together and never talk over each other. That's the whole trick.
2 · Install it
The install doc is written for your own Claude Code. Paste this into any session and it does the rest, including the neural voice:
Read https://github.com/radam5000/speakyspeak/blob/main/INSTALL.md and set it up for me
3 · The full deck
Click the menu-bar icon and the full deck drops down. The card on top is what's playing, with its own transport. Under it, Up next is the queue in true play order: the top row plays next. Replies you've heard drop to Played at the bottom.
4 · The mini player
When a reply starts speaking, the mini player appears under the menu-bar icon, so one click controls what you're hearing without opening the full deck. Drag it anywhere and it stays there. The X hides it for the current reply only.
5 · Every row can act
Hover a queued reply and three buttons appear: play it right now, mute its whole session, or remove it. Muting is the one to know: that terminal goes quiet while every other session keeps talking. Nothing is deleted, and the muted rows keep their icon so you can always see what's silenced. Click it again to unmute and the backlog plays.
Session headers get the same idea one level up: when the list is grouped, hovering a header offers Play this session next and Remove this session's queued replies.
6 · Hear each story in order
One session talking? The default flat list is right. Several at once? Open the sort menu (the ⇅ on the Up next line) and set Group by: Session and Order by: Oldest first. Each session then plays as one run, in the order it happened, instead of every session interleaved backwards. A new reply extends its own session's run rather than jumping the queue, and the player shows "2 of 6" so you know how much of a story is left.
7 · Four ways to be quiet
From smallest to biggest, each with the real control that does it.
8 · A suggested way to work
None of this is required. One session works fine on its own. This is the setup that made SpeakySpeak worth building.
- A window per project, each its own color.In iTerm2: Session › Edit Session › Tab Color. When you hear a reply, you already know which window to look at.
- Name your sessions.
/rename newslettergives a session a name, and the full deck and mini player use it instead of the folder name. - Make replies say the time.One rule in your
CLAUDE.mdmakes every reply open with "three forty-two pm", so a backlog is legible by ear. The guide has the exact line to paste. - Start long runs, then walk away.Settings ▸ Read replies ▸ "As it works, skipping short lines". You hear the steps that matter, not "Let me check that."
- Clear the list before you walk away.While you're at the computer reading everything, pause it. When you kick off runs and leave, hit the trash first: there's no harm once you've read it all, and every reply you hear after that is news.
- Group by session when several are running.Sort ▸ Group by Session, Order by Oldest first. Each session plays as one story, in order.
- Mute the sessions you don't need to hear.Hover a row, click the speaker. Unmute when you want the story back.
This tour is the short version. The full guide explains every setting, the CLAUDE.md timestamp rule, and the two-Mac setup; INSTALL.md is written for your Claude to run.