VibeRadio
Your agent's output as audio.
Turns an agentic coding session into something you can listen to instead of read. Narration is the core β spoken monologue, two-host podcast, or reactive music β so you can follow a Claude Code / Codex / Gemini agent's progress while away from the desk, commuting, or multitasking. Reactive music (below) is one style among several.
Styles: spoken monologue Β· two-host podcast Β· reactive music (lo-fi, synthwave, ambient, classical, 8-bit).
Modes: ambient stream (narrates live as the agent works) Β· task summary (one message when a task finishes) Β· session recap (a longer podcast/musical wrap).
Timing: sync/live (updates as the agent works) or async (after a turn/session) β user-configurable, per-hook. See spec.md.
Demo
βΆ Watch the launch video β four coding agents, four radios, each tuned to its own station.
https://github.com/pooriaarab/viberadio/raw/main/branding/launch-video.mp4
Quick start
viberadio say "hello"
viberadio recap session.json
viberadio recap session.json --style podcast
Works offline, on-device, with zero keys. v0 routes all narration through the
on-device tier of the shared @pooriaarab/vibe-core model cascade β macOS say /
Linux espeak / spd-say β so it runs with nothing configured and nothing leaves
your machine. Bring-your-own-key TTS (ElevenLabs, OpenAI, β¦) plugs into the same
cascade later; the createNarrator() seam is already there.
Use it as a library too:
import { narrate, recap, buildRecapScript } from 'viberadio-fm';
await narrate('build passed');
const { script } = await recap(events, { style: 'podcast' });
buildRecapScript(events);
MCP
viberadio mcp starts a stdio MCP server exposing narrate({ text, style? }) and
recap({ events, style?, mode? }) tools, so an agent can ask for an audio recap
mid-session. Add it to your client's MCP config:
{
"mcpServers": {
"viberadio": { "command": "viberadio", "args": ["mcp"] }
}
}
Why Build This
- Developers already listen to lo-fi while coding β this makes it reactive and personal
- Extremely visual and shareable β imagine a tweet: "My code literally makes music"
- No one has done reactive music for coding before β genuinely novel
- Combines two massive communities: developers and lo-fi/music lovers
- The demo video alone could go viral β watching music change as code is written
Features
- Reactive soundtrack β Music dynamically shifts based on coding events
- Commit β beat drop
- Test pass β melodic resolution
- Test fail β minor key shift
- Error/exception β dramatic tension
- Idle β ambient drone
- Deploy β triumphant crescendo
- Genre modes β Lo-fi, synthwave, ambient, classical, 8-bit
- Visualizer β Terminal-based audio visualizer that shows the music reacting
- Session recording β Save your coding soundtrack as an MP3/WAV
- Spotify-style wrap β Weekly "Your Vibe Radio Wrapped" with stats and generated playlist
- Collaborative mode β Team coding sessions merge into one shared soundtrack
- Stream mode β OBS integration for streaming your reactive coding music
Distribution
- CLI β
viberadio start β runs in background, hooks into git/terminal events
- npm package β
npm install -g viberadio-fm
- Claude Code hook β Auto-starts when Claude Code session begins
- Claude Code skill β
/viberadio to control playback
- skills.sh β Listed on skills.sh marketplace
- macOS menubar app β Visual controls + now-playing display
Voices & models (bring your own, mix freely)
Text-to-speech follows the shared @vibe/core cascade and is mix-and-match: use
your agent's existing provider if it does audio β or a TTS key you supply
(ElevenLabs, OpenAI, etc.) β or a local/on-device voice so it works with no key
and no network. Different styles can use different models β e.g. an ElevenLabs voice
for the monologue, two distinct voices for the podcast hosts, on-device TTS when
offline. Per-style voice/model selection is a user setting.
Tech Stack
- Node.js + TypeScript
- TTS:
@vibe/core cascade (agent provider β BYO key β on-device); Web Speech /
system TTS as the local tier
- Tone.js / Web Audio API (reactive-music style)
- Claude Code hooks + git/watcher (event detection, via
@vibe/core)
- Electron or Tauri (optional desktop app)
Prototype
Interactive, self-contained UX prototype (no build, no network): open
docs/prototype.html in a browser. The "Speak this line"
button uses your browser's on-device speech synthesis β real, offline narration.
Local-first
Runs on your own machine. Nothing leaves it unless you opt a flow into a hosted
provider; the on-device tier works fully offline. Enforced by the @vibe/core
consent model.
Vibe Suite
Part of the Vibe Suite β companion tools for agentic coding CLIs (Claude Code,
Codex, Cursor, Gemini, Grok, pi, Kimi, and other harnesses). Ships as CLI + npm
package + MCP server.
Revenue Potential
- Free tier: basic narration + lo-fi mode, on-device voices
- Pro: all styles, premium voices, recording, visualizer, Wrapped
- Creator tier: OBS integration, custom sound/voice packs