Free — no API keys
No paid tier, no cloud TTS account, no API keys for Aftertone. Install once; speech stays on your machine with ONNX.
Free · No API keys · Local · Open source
Aftertone plays a brief spoken summary after each reply — local Supertonic ONNX, no cloud TTS API, no subscription.
Short response — quick dev question ·
Long task — clone a repo, skim the README, hear the summary — you do not have to read everything.
Claude Code with /aftertone_on.
/aftertone-lang; write the spoken tag in that languagecurl -fsSL https://raw.githubusercontent.com/omarelkhal/aftertone/main/scripts/install.sh | bash -s -- --install-uv --start-daemon
irm https://raw.githubusercontent.com/omarelkhal/aftertone/main/scripts/install.ps1 | iex
Free install — no API keys, no Aftertone subscription, no cloud TTS account.
One command installs uv, models, hooks, and the daemon to ~/aftertone or %USERPROFILE%\aftertone.
In Cursor: enable Hooks and trust your workspace — spoken TTS is already on in config.
Cursor runs your coding agent; the reply lands in the hook payload.
Speaks the <spoken_summary> tag (repo default). Set summary_mode = "auto" for heuristic fallback when the tag is missing.
Models stay loaded; POST /say stays fast.
One concise line — glance at the screen less often.
Aftertone is the local spoken layer after your agent replies — not another SaaS bill.
| Cost | $0 — open source (MIT). Optional donations only; no paid tier for speech. |
|---|---|
| API keys | None — synthesis runs on localhost only. No cloud TTS signup. |
| Subscription | None for Aftertone — install once, use in every project. |
| Setup | One command — downloads free ONNX weights from Hugging Face (public models; no token required by default). |
| Languages | Many locales via Supertonic — /aftertone-lang in Cursor; write <spoken_summary> in that language. |
Your coding agent (Cursor, Claude, etc.) may have its own plan or API keys — that is separate from Aftertone, which only adds local voice after each reply.
Stay in flow when the model writes a wall of text. Listen for the gist while you read the details.
No paid tier, no cloud TTS account, no API keys for Aftertone. Install once; speech stays on your machine with ONNX.
Audio is synthesized locally. Your reply text is not sent to a hosted text-to-speech service.
The heavy work lives in tts_daemon.py. Each hook only prepares text and posts JSON. On Windows, Cursor may delay calling hooks longer than on Linux or macOS — see docs.
Cursor afterAgentResponse, Claude Code Stop, and Codex Stop hooks — same daemon. OpenCode comes next.
Cursor (/aftertone-lang, …), Claude Code (/aftertone_lang, …), and Codex skills ($aftertone-on, …) — each runs one python -m aftertone call. Codex setup · Full list
<spoken_summary>End substantive replies with one short flow briefing — state, significance, optional next move — written for listening, not the screen.
<spoken_summary>
The hook fix is on main!! Send another reply with only one tag at the end??
</spoken_summary>
Repo default summary_mode = "tag_only" — agents should end substantive replies with the tag. Set language with /aftertone-lang; write the tag in that language (no auto-translation).
The hook reads the last tag pair only. Use !! / ?? per sentence for livelier TTS.
Spoken summary rules · Slash commands.