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.

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$ 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
$