SETUP · 02
The easy way in.
Two hands-off paths to a running stack. The interactive wizard asks a few questions and does the rest; the agent skill does the same from one sentence in your AI coding tool. Either one ends with the radio on the air.
PATH A · STANDALONE CLI
One curl, two Enters, on the air.
Drops a subwave binary on your host (no Node required), then chains straight into init and start. By the time the installer finishes, Docker is up and the controller is reporting on-air — setup is the only step left and it covers configuration, not lifecycle.
TWO COMMANDS
curl -fsSL https://cli.getsubwave.com | sh
subwave setupThe installer prompts Run subwave init now? — say yes and init asks where to install (default ~/subwave), deployment shape (prod / prod-byo), and admin credentials. It ends with Bring the stack up now? — say yes again and subwave start runs silently against the env init just picked. After that, setup prompts for Navidrome + LLM + DJ persona and renders jingles. Then subwave start / stop / logs / doctor run the station from anywhere on your shell.
DEV
docker-compose.dev.yml- state in
./state - optionally launches
next devon:7700
PRODUCTION
docker-compose.ymlwith--build- Caddy on
:7700 - state in
./state(orSTATE_DIR) — re-run with sudo if it isn't writable
Existing env values are kept unless you explicitly ask to reconfigure — so the wizard doubles as a way to bring an existing stack back up.
PATH B · AI CODING AGENT
One sentence in your coding agent.
The repo ships an agent skill that handles setup, deploy, and update — it pings Navidrome and Ollama, boots the stack, generates jingles, and verifies the stream is on-air. It works with Claude Code, Codex, Cursor, or anything else that reads AGENTS.md.
Clone the repo, open your agent in it, and say one of:
git clone https://github.com/perminder-klair/subwave.git
cd subwave
# then in your agent of choice, ask:
# "set up subwave"
# "deploy subwave"
# "pull and restart"On updates the same skill detects which services actually changed and rebuilds only those. Liquidsoap and the Controller COPY their source at build time, so a plain docker compose restart silently runs stale code — the skill won't make that mistake.
ONCE IT'S ON THE AIR
Run the station from the CLI.
The setup wizard is one screen of the operator console. Run npm start from the repo any time to open it — a menu to check the stack, run a diagnostic sweep, tail logs, restart a service, or open the terminal player.
npm startThe console's play option launches the TUI player — now-playing, the timeline, the live booth feed, and track requests, right in your terminal. It needs mpv or ffplay for audio, and runs as a read-only dashboard without them.