An all-in-one
control room for
internet radio

Schedule programs, manage media, hand off to live broadcasts, and keep a single station running from your own server.

rdio schedule editor showing station blocks and the slot editing panel

Everything you need
to stay on air.

rdio combines the station admin UI, schedule automation, live broadcast handoff, and stream delivery glued into one self-hosted stack.

Schedule your station

Plan recording and live broadcast slots on a daily calendar with drag-and-drop, conflict detection, and automatic playout switching.

Go live when needed

Hand off to BUTT or another Icecast-compatible encoder. Presenters connect to harbor; listeners keep the same stream URL.

Manage your library

Upload media to R2, organize programs and hosts, and attach them to schedule slots from one control room.

Monitor on air

Listen through the built-in player, check live source status, and confirm playout before every show.

Team access

Create member accounts with admin and user roles. New members set their own password on first sign-in.

Own the stack

Run the admin app, API, Postgres, Liquidsoap, and Icecast yourself. rdio is the control plane, not a hosted platform.

Bring your
own station.

rdio runs on boring, proven radio infrastructure: a TypeScript admin app, Fastify API, Postgres, Liquidsoap for playout, and Icecast for the public stream.

View on GitHub
~/rdioready

$ pnpm install

packages resolved

$ docker compose up

ready postgres

ready icecast

ready liquidsoap

$ pnpm db:migrate

database migrated

$ pnpm dev

admin http://localhost:5173

stream http://localhost:3001/live.mp3

$