Hear your build.
Don't watch it.

A radio station for AI coding sessions. Ambient music plays continuously. When your agents finish work, hit failures, or pick up new tasks, a voice announces it over the stream. Peripheral awareness without a screen.

curl -sSL https://radioagent.live/install.sh | bash
Radio Agent dashboard showing now playing, wire feed with typing animation, and player controls

Three audio channels, one stream

Agent Radio mixes three independent channels into a single Icecast stream. Each serves a different layer of awareness. Each can be muted independently.

Music
Continuous ambient music from your library. Random shuffle, crossfade between tracks. Always playing unless you pause it.
Peripheral. The background texture of your session.
Voice
Spoken announcements from Kokoro TTS. Music ducks, the voice speaks, music returns. Triggered by webhook events from your agents.
Center-pull. Demands attention briefly, then disappears.
Tones
Short sound effects layered under music. A chime when work starts, a resolved chord when it ships, brief dissonance on failure. No words.
Peripheral. After a day, you stop hearing them. You just know.

One command. Three processes. Live radio.

terminal
$ git clone https://github.com/nmelo/radioagent.git
$ cd agent-radio
$ docker compose up -d

[+] Running 3/3
Container icecast Started
Container liquidsoap Started
Container brain Started

$ curl -X POST http://localhost:8001/announce \
    -d '{"detail": "Agent Radio is live"}'

{"status": "queued"}

Dashboard at localhost:8001. Stream at localhost:8000/stream. Ships with CC0 ambient music so it plays out of the box.

Everything a radio station needs

Now Playing
Current track with title, artist, album from Icecast metadata. Skip button. Up next preview.
Wire Feed
Live announcement text with character-by-character typing animation. Failure events get red accents. Older entries fade with age.
DJ Skill
Claude Code skill that rewrites robotic templates into human-sounding radio callouts. Dry humor. Measured pace. Never corny.
Ambient Tones
Short sound effects for events too frequent for voice. Rising chime for start, resolved chord for completion. Learns like muscle memory.
Three-Layer Controls
Connect/disconnect the stream. Play/pause music (server-side). Toggle voice on/off. Toggle tones. Each independent.
Webhook API
POST JSON to /announce. Required field: detail. Optional: kind, agent, project, bead_id. Rate limited to prevent floods.
Server-Side Mute
Music mute sends volume to zero in Liquidsoap. Stream keeps flowing. Unmute is instant. No reconnect needed.
Auto-Reconnect
Dashboard detects stream drops and reconnects with exponential backoff. Leave it open. It takes care of itself.

Calm technology for coding sessions

The dangling string: an eight-foot plastic cord that vibrates with network traffic. A busy network whirls madly. A quiet network twitches. You stop watching it. You just know.

Agent Radio is the dangling string for AI agent sessions. Music sits in the periphery. You hear it without attending to it. When an agent finishes work, the music ducks and a voice speaks. Information pulls to the center of your attention for five seconds, then returns to the periphery.

After a day of use, you stop noticing the tones. You just know eng1 is busy because the soundscape has texture. When everything goes quiet, the silence tells you nobody is working. No screen needed. No notification badge. Just the sound of your build.

Open source. Runs on one machine.

Everything runs locally on your network. No cloud services, no API keys, no subscriptions. A GPU helps but isn't required.

Start listening