Open-source audiophile distribution for Debian/Ubuntu and Raspberry Pi.
odios turns a €35 Raspberry Pi into what commercial streamers sell for €300–500: Bluetooth A2DP, AirPlay, Snapcast multi-room, UPnP/DLNA, CD playback with metadata — all in one box, controlled from a web app, no account or subscription required. Other PCs running PulseAudio or PipeWire can also stream directly to it over the network, making it a true whole-home audio sink.
Built on modern foundations: everything runs as unprivileged systemd user services (no root daemons), orchestrated through a unified REST API written in Go. No PHP, no legacy scripts, no cloud dependency. Battle-tested on a Raspberry Pi B+ (armv6l) for over 6 years without reinstall.
Full Home Assistant integration included — odios nodes appear as native media players in your HA dashboard.
┌─────────────────────────────────────────────────────┐
│ odio-pwa (remote) │ ← manage multiple nodes from any device
└────────────────────────┬────────────────────────────┘
│ HTTP
┌────────────────────────▼────────────────────────────┐
│ go-odio-api │ ← unified REST API + embedded UI
│ systemd · PulseAudio · MPRIS · Bluetooth │
│ │
└──────┬──────────┬──────────┬──────────┬─────────────┘
│ │ │ │
PulseAudio MPD Shairport Snapcast
(network) Sync client
Bluetooth MPD (AirPlay) upmpdcli
(A2DP) Disc (UPnP/DLNA)
Player
Most service run as systemd user services — no root daemons, full per-user isolation.
| Component | Role |
|---|---|
| go-odio-api | REST API + embedded UI, bridges systemd / PulseAudio / MPRIS / D-Bus / Bluetooth Speaker |
| go-mpd-discplayer | Automatic CD/USB playback with metadata via MPD |
| PulseAudio | Central audio server, routes all sources to the DAC output — other PCs running PulseAudio or PipeWire can stream to it over the network via TCP/Zeroconf |
| MPD | Music Player Daemon (network, CD/USB) |
| Shairport Sync | AirPlay receiver |
| Snapcast | Multi-room audio client |
| upmpdcli | UPnP/DLNA renderer |
| Bluetooth | A2DP sink with automatic pairing |
curl -fsSL https://github.com/b0bbywan/odios/releases/latest/download/install.sh | bashThe installer works on both fresh and existing systems (idempotent, safe to re-run). It prompts for a target user — if the user doesn't exist it is created automatically. Installing for an existing user is supported: config files are backed up before any modification.
See installer/README.md for full installation options, environment variables, and testing.
| Client | Protocol | Platform |
|---|---|---|
| odio-pwa | odio REST API | Any (browser) |
| MALP | MPD | Android |
| BubbleUPnP | UPnP/DLNA | Android / iOS |
| odio | Volumio | |
|---|---|---|
| License | 100% open source | Partially closed source |
| Price | Free | Freemium — Premium at €60/year |
| Account required | No | Yes |
| Cloud dependency | None | Yes (account, Premium, plugins) |
| Minimum hardware | Raspberry Pi B+ (armv6l, 2014) | Raspberry Pi 3 |
| Music library management | ❌ Streamer only: use your favorite app | ✅ Built-in library browser |
| Bluetooth A2DP | ✅ Included | 💰 Premium only |
| AirPlay | ✅ Included | ✅ Free plugin |
| Spotify Connect | ✅ Included | ✅ Free plugin |
| Qobuz | ✅ Included (via upmpdcli) | 💰 Premium only |
| Tidal / Tidal Connect | ✅ Included (via upmpdcli) | 💰 Premium only |
| UPnP/DLNA | ✅ Included | ✅ Included |
| Multi-room | ✅ Included (Snapcast) | 💰 Premium only |
| CD playback | ✅ Included with metadata | 💰 Premium only |
| Network audio sink | ✅ PulseAudio/PipeWire TCP | ❌ Not supported |
| Home Assistant | Native integration | Unofficial community plugin |
| Voice assistant / AI | Via Home Assistant | 💰 CORRD (Premium) |
| Embedded UI | Lightweight HTMX/Tailwind | Node.js/React |
| Multi-node remote | Svelte PWA (install from browser, no store) | Native mobile app (iOS/Android) |
| Architecture | User session, PulseAudio/PipeWire, Golang | System session, ALSA, Node.js |
| System philosophy | Linux-native modular stack | Appliance-style distribution |
| Debian base | Trixie (stable) | Bookworm (oldstable) |
| Installation | One command (curl | bash) |
Image flash |
| Upgrade | apt upgrade |
OTA updates / Reflash between major versions |
| Long-term stability | No reinstall between Buster and Trixie | Reflash between major versions |
- odio-pwa — Progressive Web App to control multiple odios nodes (live)
- odio-ha — Full Home Assistant integration: odios nodes appear as native HA media players and can be mapped to official integrations to inherit their full capabilities
- go-odio-api — REST API and embedded UI
- go-mpd-discplayer — CD/USB player daemon
This project is licensed under the BSD 2-Clause License — see LICENSE.
The installer distribution (odios-*.tar.gz) includes ansible-core, which is licensed under the GNU General Public License v3.0. A copy of that license is included in the archive under licenses/ANSIBLE-LICENSE-GPLv3.
The odios playbooks and scripts are independent works that invoke ansible-core as an external tool and are not subject to the GPL.