Skip to content

Installation

go-odio-api runs on any Linux system with a D-Bus user session. Written in Go, no dependencies beyond D-Bus. Cross-compiled binaries, deb/rpm packages, and multi-arch Docker images are available.

ArchitecturePackageTested on
amd64deb, rpm, DockerFedora 43 Gnome, Debian 13 KDE
arm64deb, rpm, DockerRaspberry Pi 3/4/5 (64-bit)
armv7hfdeb, rpm, DockerRaspberry Pi 2/3 (32-bit)
armhf (ARMv6)deb, rpmRaspberry Pi B / B+ / Zero
Terminal window
curl -fsSL https://apt.odio.love/key.gpg | sudo gpg --dearmor -o /usr/share/keyrings/odio.gpg
echo "deb [signed-by=/usr/share/keyrings/odio.gpg] https://apt.odio.love stable main" | sudo tee /etc/apt/sources.list.d/odio.list
sudo apt update
sudo apt install odio-api

Pre-built packages for all architectures are available as artifacts on each build workflow run.

Terminal window
# Debian/Ubuntu/Raspberry Pi OS
sudo dpkg -i odio-api_<version>_<arch>.deb
# Fedora/RHEL
sudo rpm -i odio-api-<version>.<arch>.rpm

A pre-built multi-arch image is available on GHCR (amd64, arm64, arm/v7):

ghcr.io/b0bbywan/go-odio-api:latest
Terminal window
git clone https://github.com/b0bbywan/go-odio-api.git
cd go-odio-api
task build # builds CSS + Go binary with version from git
./bin/odio-api

Requires Go 1.24+ and Task.

The deb/rpm packages install the service automatically. If you installed from source or Docker, create ~/.config/systemd/user/odio-api.service:

[Unit]
Description=Dbus api for Odio
Documentation=https://github.com/b0bbywan/go-odio-api
Wants=sound.target
After=sound.target
Wants=network-online.target
After=network-online.target
[Service]
ExecStart=/usr/bin/odio-api
Restart=always
RestartSec=12
TimeoutSec=30
[Install]
WantedBy=default.target
Terminal window
systemctl --user daemon-reload
systemctl --user enable --now odio-api.service

Headless systems: enable lingering so the user session survives without an active login:

Terminal window
sudo loginctl enable-linger <username>

Some backends (Bluetooth, Power) require additional system configuration. See Configuration for details.