SUB/WAVE is personal internet radio for music you already own. It connects to Navidrome (Subsonic API), uses an AI DJ to pick tracks and speak between them, and broadcasts a single Icecast stream everyone hears together—radio, not a shuffle playlist.
Key Features
- Shared Broadcast: One stream, no per-listener skip—true radio pacing.
- Your Library: Music stays on Navidrome; nothing is generated or licensed by SUB/WAVE.
- AI DJ: Intros, idents, weather/time bits, and plain-language song requests.
- Swappable LLM/TTS: Ollama, OpenAI, Anthropic, and multiple TTS engines including local options.
- Personas & Shows: Multiple DJ personas and a 24×7 schedule grid.
- Self-Hosted:
docker compose up(or CLI installer) on one Linux host; optional MCP server.
Why Choose SUB/WAVE?
- You have a huge Navidrome library you never actually “listen through.”
- Spotify Radio is closed and doesn’t play your ripped collection.
- You want a fun, distinctive self-hosted project beyond another dashboard.
- Homelab parties need one stream on Sonos, VLC, and phones.
Docker Deployment
mkdir subwave && cd subwave
curl -O https://raw.githubusercontent.com/perminder-klair/subwave/main/docker-compose.yml
curl -O https://raw.githubusercontent.com/perminder-klair/subwave/main/.env.example
mv .env.example .env
# set ADMIN_USER, ADMIN_PASS, SITE_URL
docker compose up -d
# finish Navidrome + LLM setup at http://localhost:7700/onboarding
Or install the CLI: curl -fsSL https://cli.getsubwave.com | sh then subwave setup.
Getting Started
- Run Navidrome with your music library.
- Deploy SUB/WAVE and complete onboarding.
- Connect Navidrome and choose an LLM/TTS provider.
- Open the listener player and tune Sonos/VLC to the stream URL.
- Optional: schedule shows and install mobile players.
Full Setup Guide
Site: getsubwave.com · GitHub. Pair with Navidrome on the same VPS using Dokploy compose patterns.

