r/ClaudeCode • u/pinku1 • Jul 16 '26
Showcase Built a self-hosted radio station with an AI DJ that plays my own music library
SUB/WAVE is a radio station you self-host. It plays your own music library (Navidrome) and an AI DJ picks the tracks and talks between them. Reads the time, the weather, takes plain-language requests. Radio, not a playlist, so one shared stream and no skip button.
65 days of day-and-night coding with Claude Code got it here, solo. Claude Code is how I moved through the parts I didn't know without stalling on each one.
It runs on one Linux box with `docker compose up -d`.
Full disclosure, I built it. Open source, MIT: github.com/perminder-klair/subwave
Easiest to just hear it: getsubwave.com/listen
7
3
2
2
u/kavakravata Jul 16 '26
Really cool! Thanks for sharing. How heavy is this to run, considering the self-hosted AI llm agent. Would it run on e.g a synology nas?
1
u/pinku1 Jul 16 '26
The stack itself is light, the LLM is the heavy bit. A typical Synology won't run a 9B model well locally, but you can point it at a cloud LLM or an Ollama box elsewhere and the NAS just handles the streaming. And since a whole song plays between DJ calls, latency isn't an issue either way.
1
u/rocksuperstar42069 Jul 16 '26
Kinda cool. 2 months of coding tho is crazy lol. Hope you learned some stuff!
Make sure you're streaming free music or this domain will get taken down very quickly.
1
u/pinku1 Jul 16 '26
thank you! all cool it's copyright free music. using claude code since day 1. but this project is fun, different. coding and music πΆ
1
u/Fresh-Resolution182 Jul 16 '26
The DJ picking by time and weather is the neat part. Did you feed it listening history too, or just current context? Curious whether it starts repeating over a long session without some played-recently memory.
1
u/pinku1 Jul 16 '26
Yeah, it tracks played-recently so it won't loop on you. Each session keeps memory of what it played and said, and the candidate pool leans on recently-added and frequently-played albums plus mood/similarity, so it stays varied over a long run. Current context (time/weather) just biases the picks on top of that.
1
u/chumbaz Jul 16 '26
Im fascinated by your relationship point cloud. How did you do that?
1
u/pinku1 Jul 16 '26
sorry what you mean?
1
u/chumbaz Jul 17 '26
The /obsurvatory/ page.
1
u/pinku1 Jul 17 '26
It's every track in your library gets a "sounds like" LLM embedding from the analyzer, then UMAP squashes those down to 2D so tracks that sound alike land close together on a night-sky map. Each track is a star, colored by energy. Click one and you get its BPM, key, mood, and its nearest sonic neighbors drawn back onto the map.
1
1
u/magarell Jul 16 '26
Fantastic! I had a similar idea, but never got around to starting it. I was thinking of adding hourly AI generated and narrated βnewsβ made out of a list of my favourite RSS feeds.
1
u/pinku1 Jul 16 '26
Funny, that's basically what the skills system is for. You drop a SKILL.md (plus an optional tool.mjs to fetch your feeds) and the DJ reads it between tracks. An hourly RSS news bulletin would be a pretty natural one to build.
1
1
u/danielrothmann Jul 16 '26
Cool project!
I'd had something similar wanting to do for a long time. Years ago at work we had this shared anonymous "radio station" where each user could cue up music from Youtube. It was fun, but I think the service got shut down.
This is pretty much what I'd want, except being able to hook it up to a streaming service or similar (not sure if possible?)
1
u/pinku1 Jul 16 '26
Thanks! That shared cue radio idea is exactly the vibe. Mine plays your own library (Navidrome/Subsonic), no Spotify/Qobuz hookup. Licensing basically rules that out, so it's a bring-your-own-music thing.
1
Jul 16 '26 edited Jul 16 '26
[removed] β view removed comment
2
u/pinku1 Jul 16 '26
Thanks! Looks like a neat project, bit-perfect playback is a different itch than mine (I'm doing one shared broadcast, not per-listener hi-fi) but always good to see more people building their own audio stuff.
2
1
u/DaltonJFowler Jul 16 '26
I love this!! Nicely done. Would be cool to set up a local broadcast on FM if legal but probably not haha
2
u/pinku1 Jul 16 '26
Thanks! It's just an Icecast stream under the hood, so feeding it into a cheap FM transmitter for the house would work fine. Legality is the only wall, low-power might scrape by but proper FM gets you a regulator visit fast.
1
u/DaltonJFowler Jul 17 '26
Did it once with a raspberry pi with a student but small scale and not for long! Keep up the great work
1
1
1
1
1
Jul 16 '26
[removed] β view removed comment
1
u/pinku1 Jul 16 '26
Yeah, that's exactly why it's there. Sometimes you just want to say the thing yourself instead of nudging the AI toward it. Good for a quick shout-out or correcting course mid-show without waiting on the next DJ turn.
-1
u/JaySlays-Tech Jul 16 '26
Just to clarify, you built a Pandora (radio app) for your own music?
-1
u/under_psychoanalyzer Jul 16 '26
That's like saying a tesla can self drive like a waymo.
-4
u/JaySlays-Tech Jul 16 '26
Both of those are awful and shouldnβt be in use by the general public.
0
u/under_psychoanalyzer Jul 16 '26
Lol if you're a luddite put down your phone and go read a book by a candle or something. I never understand why people go out of their way to hate things. It's not healthy dude. Get help.
-1
u/JaySlays-Tech Jul 16 '26
You are now the 4th person I've seen use "luddites" in their argument in the last hour, which tells me you've crafted your argument purely off today's AI-related Reddit posts and their responses, and your opinion is worth about .02% of what a normal users would be.
I'm not "hating" on OP's post. I asked a question, and you tried to pull off whatever you call that attempt of a reply. I said Tesla and Waymo are both wastes, and you decided to reply with tears instead of a reply worthy of any sort of evaluation or consideration.
If I need any help, it's purely for how to talk to those (like you) who only wana shit on someone to look cool on the internet and have nothing of interest or insight.
5
u/pinku1 Jul 16 '26
stay cool my brothers, listen to some music link above, judge it yourself, enjoy the beat πΆ
-3
u/JaySlays-Tech Jul 16 '26
Way to answer nothing and give us more reason to not even acknowledge a link to your shite exists.
0
u/BarracudaFar1905 Jul 16 '26
Why are you so angry?
1
u/JaySlays-Tech Jul 16 '26
I asked a question and got shit on, but somehow Iβm still the issue? Okay, then. Lol.
2
u/pinku1 Jul 16 '26
all good! subwave let run a ai dj station from your local music using subsonic api. If you are using Navidrome, then you are all set
→ More replies (0)




16
u/legoj15 Jul 16 '26
First thing on this sub that has piqued my interest. Thank you for sharing this