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.
Schedule programs, manage media, hand off to live broadcasts, and keep a single station running from your own server.

rdio combines the station admin UI, schedule automation, live broadcast handoff, and stream delivery glued into one self-hosted stack.
Plan recording and live broadcast slots on a daily calendar with drag-and-drop, conflict detection, and automatic playout switching.
Hand off to BUTT or another Icecast-compatible encoder. Presenters connect to harbor; listeners keep the same stream URL.
Upload media to R2, organize programs and hosts, and attach them to schedule slots from one control room.
Listen through the built-in player, check live source status, and confirm playout before every show.
Create member accounts with admin and user roles. New members set their own password on first sign-in.
Run the admin app, API, Postgres, Liquidsoap, and Icecast yourself. rdio is the control plane, not a hosted platform.
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$ 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
$