Personal internet radio: Agentic AI DJ Subwave launches a personal internet radio station powered by an agentic AI DJ that selects tracks, writes and speaks intros, station idents, time checks, and weather updates. The service streams a single shared broadcast via Icecast, allowing listeners to request songs in plain language while hearing the same content simultaneously. It supports custom music libraries, multiple TTS engines, and swappable LLM providers, aiming to recreate the communal radio experience with AI-driven curation. A personal internet radio station. One Icecast stream, one broadcast. Every listener hears the same thing at the same time. An AI DJ picks the tracks and talks between them: station idents, time checks, the weather, a quick intro for whatever's going out next. You can ask for music in plain language; the DJ works out what you meant and slots it in. It's radio , not a playlist. No per-listener shuffle, no skip button, no "up next for you." You tune in and hear whatever is on. SUBWAVE.Showreel.1080p.mp4 Project site — getsubwave.com https://www.getsubwave.com/ Demo player — getsubwave.com/listen https://www.getsubwave.com/listen Mobile apps — native players — iOS on the App Store https://apps.apple.com/app/sub-wave/id6778786696 , Android on Google Play https://play.google.com/store/apps/details?id=com.getsubwave.app Setup walkthrough — getsubwave.com/setup https://www.getsubwave.com/setup Operator manual — getsubwave.com/manual https://www.getsubwave.com/manual Community — join the Discord https://discord.gg/vjVbVKnMBa The listener player. One shared broadcast, with in-app song requests. The admin console. Where the operator runs the station. The Library Observatory. A data-art map of every track the DJ has tagged, placed by genre and lit by energy. Click a point for its full dossier: BPM, key, mood, embeddings, and nearest neighbours. Open it at /observatory . One shared Icecast stream. Every listener hears the same broadcast at the same time. AI DJ that picks and talks. Curates tracks, writes intros, and reads station idents, the time, and the weather. Plain-language requests. "Play something more upbeat" or "anything by Radiohead" works. Your own music library. Pulls from Navidrome over the Subsonic API. No external catalogue. Swappable LLM provider. Ollama, Anthropic, OpenAI, Google, DeepSeek, OpenRouter, Vercel AI Gateway, or any OpenAI-compatible server. Change it from the admin UI with no redeploy. Five TTS engines. Piper and Kokoro in-process for fast local speech, plus an optional tts-heavy sidecar docker compose --profile tts-heavy up -d that adds Chatterbox zero-shot voice cloning and PocketTTS 6× real-time, EN/FR/DE/IT/ES/PT . Cloud OpenAI / ElevenLabs is also available. Pick a different engine per kind of speech. Multiple DJ personas. Up to 10 souls in rotation, each with its own voice and writing style. Dual-codec broadcast. MP3 128 kbps for Sonos, hardware radios, and cars; Ogg-Opus 96 kbps for modern browsers. The web player picks automatically. Native apps and PWA. Native iOS on the App Store and Android on Google Play players — background audio, lock-screen / CarPlay / Android Auto controls, multi-station — plus an installable PWA on phone and desktop. Scheduled shows. A 24×7 grid; each slot has its own persona, mood, and skills. Pluggable skills. The DJ's between-track segments — weather, news, traffic, and your own — are skills. The built-ins are scaffolded as editable files under state/skills/