Your own AI radio station, native to Home Assistant. Two Italian hosts who riff on what your home is actually doing.
README
An AI-powered Italian radio station that nobody questions is real. Two hosts banter between live Italian charts. Optional Home Assistant context lets them reference your actual home — lights, temperature, who's at the door. The format absorbs AI imperfection as authenticity.
git clone https://github.com/florianhorner/mammamiradio.git && cd mammamiradio
cp .env.example .env
# Set ADMIN_TOKEN in .env, then:
docker compose up
→ Read the code · Ship to your home · Contribute · Changelog
<p align="center"> <img src="https://img.shields.io/github/stars/florianhorner/mammamiradio?style=flat" alt="GitHub stars"> <img src="https://img.shields.io/github/actions/workflow/status/florianhorner/mammamiradio/quality.yml?branch=main&label=CI&style=flat" alt="CI"> <img src="https://img.shields.io/badge/python-3.11%2B-blue?style=flat" alt="Python 3.11+"> </p>We played this at a dinner party. Seven guests. Nobody questioned it was a real Italian radio station.
git clone https://github.com/florianhorner/mammamiradio.git
cd mammamiradio && cp .env.example .env
# Set ADMIN_TOKEN in .env first — required because the container binds to 0.0.0.0
docker compose up
Open http://localhost:8000 for the listener page (/admin for the control room). Music plays from live Italian charts when MAMMAMIRADIO_ALLOW_YTDLP=true (enabled in docker-compose.yml), from CC-licensed tracks via Jamendo (set jamendo_client_id in radio.toml), or from local files dropped into music/.
Verify it's working:
curl http://localhost:8000/healthz # → {"ok":true}
Expect music within ~10s on a warm cache. First boot can take 30–60s while yt-dlp pulls the Italian chart. The dashboard's tier badge (Demo Ra