Vibe Coding, Now With Sound
Your AI writes a 200-line explanation. You don't want to stop coding to read it. Select it — CastReader reads it aloud while your hands stay on the keyboard.
Download for Mac — FreemacOS 13+ · Free · Works in any terminal, IDE, or browser
The Problem With Vibe Coding Today
AI agents are generous with words. You only have two eyes.
Responses keep growing
Claude Code and Cursor often output 100-300 lines per turn — reasoning, diffs, warnings, citations.
Your eyes are on the code
Reading every explanation pulls you out of the diff you're reviewing. Flow breaks, context resets.
Scrolling is slow
You end up skimming, missing the important line, then asking the agent to repeat itself.
Three Steps, Zero Setup
Select the AI response
In Claude Code, Cursor, Gemini CLI, or any terminal — just drag-select the text.
Click the orange bubble
A small square button appears next to your selection. One click starts playback.
Keep coding
Your eyes stay on the diff. The AI's explanation plays in the background with word-level highlighting.
Demo: select any AI response → orange bubble → listen while you code
Works With Every Vibe Coding Tool
No integration needed. If you can select text, CastReader can read it.
Claude Code
Listen to long explanations, diffs, and plan-mode output
Cursor
Read Composer and chat responses while reviewing the diff
Gemini CLI
Hear full responses from Google's terminal agent
Aider
Listen to code changes and explanations in aider's REPL
Codex CLI
OpenAI's agent CLI — same workflow, hands-free playback
Warp
Warp AI's suggestions spoken aloud inside the terminal
Windsurf
Listen to Cascade's thinking and summaries while coding
Chat apps & browsers
ChatGPT, Claude.ai, Gemini web — same bubble, same shortcut
Built For Developers, Not Readers
Zero-config selection
No extension, no API keys, no setup per app. Select text anywhere on macOS, the bubble shows up.
Adjustable speed
1.5× default for fast skimming. Bump to 2× for TL;DR, or 1× for complex reasoning.
Word-level highlight
Current word highlights as it plays. You can glance and still know where you are.
Natural voices
Kokoro TTS — English female (Heart) and Chinese voices. Not the robotic macOS Say.
Stays out of the way
A menubar app. No Dock icon. No notifications. It only appears when you select text.
Free forever
No signup. No quota. No paywall. We pay for the TTS server, you vibe code.
FAQ
Does this work inside Claude Code / Cursor / Gemini CLI?
Yes. CastReader listens for text selection anywhere on macOS. Whether you're in iTerm, Ghostty, Warp, VS Code, Cursor, or a web-based Claude.ai tab, the orange bubble appears when you drag-select text. One click to start playback.
Is this better than macOS's built-in Say / VoiceOver?
For code and long AI responses, yes. macOS Say is robotic and monotone. CastReader uses Kokoro TTS with natural voices and gives you word-level highlighting — you can still see the code while listening. VoiceOver is an accessibility tool designed for screen-reading every UI element; CastReader is designed for reading the text you specifically selected.
What about ChatGPT's voice mode or Claude's audio feature?
Those only work inside their own apps, and only for content generated inside that session. CastReader works across every AI tool, every terminal, every browser, every PDF, every Notion doc. One tool, every selection.
Does it slow down my terminal or IDE?
No. CastReader is a separate menubar app. It only activates when you drag-select text. Terminal and IDE performance are untouched.
Can I use it on Windows / Linux?
Not yet. The desktop app is macOS-only for now (Apple Silicon + Intel). If you're on Linux/Windows, you can use the CastReader browser extension for Chrome, Edge, or Firefox — that covers your web-based AI chats (Claude.ai, ChatGPT, Gemini web).
Is my AI conversation sent to a server?
Only the text you selected is sent to our TTS server (api.castreader.ai) to synthesize audio. We don't log, store, or train on it. If you need fully offline TTS, you can point CastReader at a self-hosted Kokoro instance in settings.
Start vibe coding with sound
Free forever. Works with every AI coding tool you already use.
Download for Mac — FreeVibe Coding Has an Audio Problem
Vibe coding — the term Andrej Karpathy coined in 2025 for the new way of writing software by feel, with an AI agent handling most of the keystrokes — changed what a developer actually does during a session. Instead of typing every line, you orchestrate: prompt, read, steer, prompt again. The bottleneck moved from the keyboard to the reading queue. Every turn your agent produces a long explanation, a diff rationale, a tradeoff summary, or a plan. None of that is optional to read — but reading it means your eyes leave the code you're actually trying to ship.
This is where audio comes in. If your AI's 200-line response plays in your ears while your eyes scan the diff, you multiply your throughput. You don't skip the explanation, you absorb it in parallel. Your working memory keeps the plan active while your fingers stay on the keyboard. It's the same reason truckers listen to audiobooks and surgeons listen to music: when your eyes are committed, your ears are the spare channel.
CastReader is built specifically for this. Select any text — inside Claude Code, inside Cursor's Composer panel, inside a Gemini CLI output, inside a ChatGPT tab, inside a Markdown preview — and a small orange bubble appears next to the selection. Click it, or press the keyboard shortcut, and playback starts. Word-level highlighting tracks the spoken position, so if something catches your attention you can glance over and see exactly where. Speed is adjustable from 0.8× to 2.5×; most developers settle at 1.5× for AI output.
It works because it doesn't try to integrate with any specific tool. There's no plugin for Claude Code, no extension for Cursor, no API wrapper for Gemini. It listens for macOS text selection at the OS level, which means it works everywhere text selection works — and that's everywhere. New AI tool launches next month? CastReader already supports it. Your terminal of choice isn't popular enough to get plugins? CastReader doesn't care. You select, it reads.