About this project
Kalinka turns a Raspberry Pi or any Linux machine into a self-hosted music player controlled from a phone, desktop app or browser. The server holds the library, while a separate renderer performs playback with direct ALSA access, so it can run on the same machine or on a Pi next to each amplifier. Files stay local: no account, no telemetry, and semantic search runs on the device. Two optional network features exist — metadata lookups (MusicBrainz, Wikidata, Deezer, Cover Art Archive) and an hourly release check.
Installation options include flashing a ready-made image for Raspberry Pi, a one-command install script for Debian 13, Raspberry Pi OS (64-bit) or Ubuntu 24.04, and virtual machine use. A setup wizard in the app or browser asks where music lives and where sound should come out, with no config files to edit.
Key capabilities:
- Library indexing with directory watching and metadata repair, including AcoustID fingerprinting when a key is supplied, plus artwork extraction, caching and generation.
- Smart Search: natural-language queries such as "dreamy ambient guitar" matched by analyzing audio with a CLAP model; Jamendo matches a prebuilt index. Opt-in per plugin.
- Bit-perfect playback via a C++ renderer with direct ALSA access, supporting FLAC and MP3 up to 192 kHz / 24-bit, gapless between same-format tracks, and unaltered samples unless software volume is enabled.
- Renderers on any network box appear as outputs, discover the server over mDNS, and self-upgrade.
- A browser player makes any browser both a remote and an output.
- Plugins are ordinary Python packages discovered at runtime; My Library and Jamendo ship built in, and MusicCast handles Yamaha volume and power.
- Live configuration from Settings, with a simple tier of common fields and an about:config-style search.
- Self-updates: the server checks releases hourly and can auto-upgrade during quiet hours while playback is stopped; server, plugins, browser player and renderers update together, renderers first.
Requirements: a 64-bit OS (arm64 or amd64). Playback and library need a Raspberry Pi 3 / Zero 2 W or any arm64/amd64 box with 512 MB RAM (1 GB comfortable). Smart Search needs a Raspberry Pi 4B with 2 GB RAM or any arm64/amd64 box with 2 GB+, with roughly 1 GB extra disk; it can be toggled per install.
Bit-perfect behavior depends on the renderer. The default C++ renderer talks to the sound card directly and does not alter audio unless instructed; software volume is the exception. The app indicates whether the route is 1:1: hw: takes samples unchanged, plughw: resamples and reformats, and default or a sound server mixes. In-browser playback goes through the browser audio stack, so it offers no gapless or bit-perfect guarantee.
Documentation covers installation, first-run setup, an app manual, architecture, development, renderer design, appliance images and releasing. The project invites testing feedback in its discussion thread. Source code is GPL-3.0-or-later; visual assets use a separate license requiring author permission. Third-party terms are listed in THIRD-PARTY-NOTICES.md.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.