A music-discovery companion and full-screen wall display for Roon — random-album browsing, instant whole-library search, rich label & artist pages, and seamless playback with Roon Server at the heart.
Everything talks to your existing Roon Core through the official extension API — the app never touches your library files (except an optional read-only mount for label-tag scanning).
The seek bar on Now playing and the wall display's progress strip draw the shape of the track you're listening to — where the quiet intro ends, where the loud middle is. Off by default; switch it on in Settings → Playback and it stays on. Every bar is the level of its slice of the track, measured from both channels at full rate: a bar that is the loudest moment in its slice says nothing about a modern master, because something touches the ceiling almost everywhere in one. The shape sits under the playhead at every point in the track, not only halfway through. Each track is analysed once and stored, and the next one in the queue is prepared while the current one plays, so it's there the moment the track changes. Works for local files and for Qobuz and TIDAL tracks in your favourites — Roon streams those straight to your endpoint and never to an extension, so the track is fetched from the service with your own account, turned into a few thousand loudness values and discarded. No audio is written to disk and Roon still handles all playback. Anything it can't read keeps the plain bar.
Random album selection with filtering, Album of the day, Label of the week, Play Unheard, and recently-unplayed recommendations. The database learns what you've heard and resurfaces forgotten albums.
Browse by album, artist, genre, record label, decade or tag — or open the Library row on the Home screen and scroll your entire collection in one continuous wall. Artwork is cached on the server as your library syncs, so even a large library scrolls smoothly without waiting on your Core. Jump between related artists, albums and labels from anywhere.
Instant whole-library search by album, artist or record label, with optional extension to Qobuz and TIDAL — browse the streaming catalogues and add favourites straight into your Roon library.
High-resolution artwork, track listing, release year, label, duration, multiple-artist support and Pitchfork reviews where available.
Turn a TV or tablet into a now-playing display: big artwork, artist photography, biographies, reviews and related albums from your library, with automatic rotation.
Label of the week, label artwork via Discogs and FanArt.tv, label merging with undo, and every release from a selected label.
When the queue finishes, the app picks another album (avoiding recent plays) and keeps the music flowing indefinitely.
Play or queue albums and tracks, multi-select, zone switching, and automatic continue-playback when the queue ends.
Built-in update checker with one-click updates straight from GitHub releases.
Pick where you're running the app, fill in the details, and copy the generated command. On Linux the app uses host networking so it can auto-discover your Roon Core; once it's running you enable it in Roon → Settings → Extensions.
sudo mkdir -p /opt/musicd-remote cd /opt/musicd-remote sudo wget https://github.com/meltface-80/MusicD-Remote/releases/download/v1.8.24/MusicD-Remote-v1.8.24.tar.gz sudo tar -xzf MusicD-Remote-v1.8.24.tar.gz docker build -t musicd-remote:1.8.24 . # Run it docker run -d \ --name musicd-remote \ --restart unless-stopped \ --network host \ -e TZ=Etc/UTC \ -v musicd-remote-data:/app/data \ -v "/your/path/to/Music:/music:ro" \ musicd-remote:1.8.24
Installing v1.8.24 (checking for the latest release…).
If your user isn't in the docker group, prefix the docker
commands with sudo.
musicd-remote-data
volume holds your Roon pairing, play history and label cache — never rename it once
created. A different name silently starts empty (Roon asks you to authorize again
and your history is gone). Upgrading from v1.6.31 or earlier? Move your data once with
the copy step in the
Updating guide.All free, all optional — but they significantly improve artwork and label coverage. Paste each one into the app under the gear icon → Settings, then Save.
High-quality record-label logos for labels that have a MusicBrainz MBID.
Finds label names that iTunes and MusicBrainz miss, and fetches label logos.
Everything the container understands — the configurator above sets the ones you need.
| Variable | Default | Purpose |
|---|---|---|
| PORT | 3399 | HTTP port for this app |
| ROON_CORE_IP | (discover) | Roon Core address for setups where multicast discovery can't reach it (macOS / Docker Desktop) |
| ROON_CORE_PORT | 9330 | Roon Core API port used with ROON_CORE_IP — only change it if your Core runs its API on a non-standard port |
| MUSIC_DIR | /music | Where the optional read-only music mount lives inside the container — the scan reads everything under it, so several folders can be mounted as subdirectories (only used for file-tag label scanning) |
| TZ | Etc/UTC | The container's local time. Affects Album of the day (which midnight it turns over on) and the hour Smart Picks switches. The 6- and 12-month "not played" windows are counted in absolute time and are unaffected |
| RRA_DISCOGS_KEY | (unset) | Seeds the Discogs token on a fresh data volume, so label logos work from the first scan. A token saved in Settings wins over it, and an env-seeded one is not written to disk — unset the variable and the key is gone |
| RRA_FANART_KEY | (unset) | Seeds the FanArt.tv key the same way |
| RRA_DEBUG | on in Docker | Verbose logging (timestamps, Roon API call traces with durations). On by default inside Docker — 0 for quiet logs |
The container is up — four steps and you're listening.
http://<your-server-ip>:3399 from any phone, tablet or desktop on your network. Add it to your home screen for an app-like experience.http://<your-server-ip>:3399/display.