Speaklna with Claude Code
Hear a one-sentence report when Claude Code finishes a turn, and ask it to read things aloud.
Needs the Speaklna app from the Mac App Store, opened at least once, and Node.js 18 or later.
Set it up
npm install -g speaklna
speaklna setup claude
Or without installing: npx -y speaklna setup claude. A global install is better, because the hook then points at a stable path.
Setup shows every change first and asks y/N. Originals are saved once as <file>.speaklna-bak.
What it changes
~/.claude.jsonadds the MCP server “speaklna” (mcpServers.speaklna)~/.claude/settings.jsonadds a Stop hook (hooks.Stop) that runs at the end of every turn~/.claude/rules/speaklna.mda new rules file telling Claude to end each reply with a🔊(speaker emoji) line
If you set CLAUDE_CONFIG_DIR, the files above live there instead.
Test it
Start a new Claude Code session and let it finish one turn, for example by asking a simple question. You should hear something like “Claude Code, myproject: …”. The name after the comma is the folder you ran it in.
To check only that the app and the package are connected, run this in a terminal:
speaklna say "Hello"
If the model did not end its reply with a 🔊 line, nothing is spoken. Starting a fresh session makes it read the rule.
Ask it to read something aloud
Setup also gives Claude Code the Speaklna tools. Just ask, for example:
Read the summary above aloud.
Claude Code calls the speak tool and Speaklna reads it with your chosen voice. This is separate from the automatic report. Press ⌥S any time to stop, or ask “stop reading”.
Good to know
- The MCP entry is added at user level, so it works in every project, not just one folder.
- Reports queue, only the newest per session is kept, and AI is quiet while another app uses the microphone. ⌥T and ⌥S always win. Details.
Uninstall
speaklna uninstall claude
It lists what it will remove for Claude Code and asks first. Only what setup added is removed.