Libraries: add a music folder from the web app's folder browser, or from the CLI. Scans
run in the background with progress, pick up added, changed, moved and removed files, and
keep track ids stable when files are moved or renamed.
Browsing: tracks, artists, albums and genres, with sorting and paging. Opening
an artist, album or genre lists its tracks.
Profiles (optional, for a household): each person has their own profile, like Plex Home.
At home a device asks "Who's listening?" (with optional PINs); away, a sign-in service in front
(Authelia, Authentik…) says who it is. Admins change the server; anyone listens. Each person
can mark the libraries that are theirs (My library in Settings → Libraries): those come
first in the sidebar and in Your music's Most played lists, the rest fold away under Other
libraries. See Profiles and sign-in.
Search: the header's search box searches the whole library at once (artists, albums,
songs, genres, and every playlist), best matches first, a section for each kind found. Chips
narrow it to one kind, all of it; searching from a list (Albums, Songs…) opens on that kind.
With more than one library, a menu on the results searches another library or all of them,
and a search that finds nothing says which other libraries have it. A genre found across all
libraries opens its songs from every library, and its Mix draws from your libraries (as the
other all-library lists do). / jumps to the search box. The library menu shows how many of each a
library has, and the app reopens the library used last.
Back and Forward: beside the logo in the header, dimmed when there's nowhere to go; they
remember where Forward leads across a reload. On a phone Back takes the logo's place on pages
you've gone into (an album, an artist, search results), not on the sidebar's own pages.
Two outputs: play on the server (mpv; listed under its name in the app, see
PLAYER_NAME) or on This device (the browser). Queue, seek and volume work the same on
both; browser playback also shows on the phone's lock screen.
Queue: play a song, play it next or add it to the end from its menu. In the expanded
player, drag songs (or use the arrow keys on their handle) to reorder the queue, remove
them with ×, or save the whole queue as a playlist.
Shuffle and repeat: either side of the play controls, in the player bar (from tablet
width up) and in Now Playing (every size). Shuffle mixes the songs still to come, leaving
those played alone; turning it off puts them back in order. Playing something while shuffled
starts with the song you picked. Repeat cycles off → all (Next and Previous wrap around) →
this song (each time round counts as a play). Both work the same on either output.
Playlists: create them, add songs from a song's menu (the song playing has one too, in the
player bar and Now Playing), reorder by dragging, rename and
delete. Playlists span every library; a song that leaves the library stays listed, dimmed,
and links up again when a scan finds it. From tablet width up, a playlist shows when each song
was added ("Yesterday", "3 days ago", then the date; the full date and time on hover). With
profiles on, each playlist is someone's (shared, or private) or the household's; see
Profiles and sign-in.
Liked songs: the heart on any song (on its row, in its ⋮ menu, the player bar and Now
Playing) adds it to Liked Songs, newest first, from every library. It's first under
Playlists and in the sidebar, can be downloaded, and is in the car. Each profile has its own
(the household's, with profiles off). On a phone the heart takes the length's place in song
lists, and the playing song's wave sits on its cover.
Smart playlists: worked out from the library each time they're opened. Each library has
Most played (all time), Most played lately (the last 30 days), Recently added,
and Mixes: one per genre it plays most and a Best of each decade, 50 songs weighted
towards favourites, the same all day until New mix. Most played also spans every library.
Any of them can be saved as an ordinary playlist.
Your own mixes: New mix (on Mixes) builds one from rules: genres and artists (and ones
to leave out), release years, when you last played them (or never), when they were added, how
long they are, which to favour (most or least played, recently added) and how many a day. A
preview beside the rules shows how many songs fit and today's pick as you change them; when
nothing fits, it says what dropping each rule would let in. Edit rules… in a mix's ⋯ menu
changes one later, AI-made ones included (they can keep favouring the songs Claude picked).
AI playlists (optional): the ✨ button at the end of the search box turns it into a
prompt. Describe a playlist ("upbeat 80s songs for a run", "forgotten favourites") and Claude
picks and orders songs from the library on screen, with the model chosen in Settings → Server
(Opus 5.5, Sonnet 5.5 or Haiku 5.5); the page shows roughly what it cost. It's a preview: play
it, try again, save it as a playlist (those songs), or save it as a mix: its rules pick
fresh songs every day, like the other mixes, favouring the ones Claude picked, with no further
calls to Claude. Off unless switched on with an Anthropic API key (see
AI playlists).
Importing playlists: Settings → Import playlists reads a playlist file from another
app (Spotify, other streaming services' CSV exports, or M3U from music players and servers),
shows how each song matched the library, and imports the playlists you pick. Songs you don't
have come in dimmed and link up when a scan adds them. See Importing playlists.
Requesting music with Lidarr (optional): with Lidarr connected,
Request music (in each library's sidebar, and under any search that finds nothing) searches
Lidarr for artists and albums, each marked with what you and Lidarr already have; Request
has Lidarr download an album, and admins can add a whole artist (all albums, new albums only, or
none yet). An artist's page lists their Missing albums. Admins can request music, and so can
profiles allowed to (see Lidarr). Lidarr's import webhook scans the library as soon as the files
land. See Lidarr.
Album artwork: a cover.jpg-style image next to the tracks, else a picture embedded
in them, else MusicBrainz and the Cover Art Archive (can be turned off).
Artists and album details: artist photos (their folder's, Fanart.tv's, or Wikimedia
Commons'), a few lines about artists and albums from Wikipedia (credited, with a link), and
albums' type and first release date from MusicBrainz. A cover or photo can be
changed by hand (another edition's cover, a photo from the sources, or your own upload), and
any artist or album can be looked up again now with Refresh metadata.
AirPlay: shows the AirPlay source's track and cover, and pauses the server's player when
it starts.
Stats (Settings → Stats): plays, listening time, songs and artists heard, plays each day
or month, the time of day and day of the week the listening happens, the top artists, songs,
albums and genres, and highlights (streaks, favourite decade). Over the last 30 days, this year
or all time; with profiles, yours or everyone's, and admins can choose any one profile's.
Counted from the play history: a song counts
once it has played to the end.
Yearly recaps (Settings → Stats → Your 2026 recap, once a year has 30 plays): your year
as a full-screen story, like Spotify Wrapped. Minutes listened (against last year, over a wall of
your year's album covers), top artist, songs, albums and genres, the artists new to you (with
their pictures), your busiest month and day, your listening
personality, streaks and decades, then a summary card to save as an image, play, or save as a
playlist of your top songs. It plays along on this device: 30 seconds of each of your top songs,
one after another with a fade, the top artist's and new artist's songs when their slides come up
(what this device was playing carries on after, and it stays muted while the server's speakers
play). Tap or swipe through it, or use the arrow keys; it moves on by itself unless reduced
motion is on. Earlier years are linked beside it, and admins can open anyone's.
Offline use: a service worker keeps the songs played in the browser, plus album covers, so
they play without a connection: 1 GB by default, more or less per device under Settings →
Offline (up to what the browser allows), where the songs kept can be played, removed one by
one or all at once. The app itself opens without a connection too (its last copy; online,
every load gets the latest). While the server can't be reached (no network, or it's down or
out of reach away from home), the header says Offline and music plays on This device; back
online, choose the server under Output to play there again. Browsers only allow service workers
over HTTPS or on localhost.
Downloads: an album, playlist or mix's Download button keeps it on the device on
purpose, with its covers and song list, so it opens and plays offline (Downloads in the
sidebar; the app opens there with no connection). Downloads are kept apart from played songs:
they never make room for others and don't count against that limit, and removing played songs
leaves them. Online, a downloaded playlist or album follows its changes (checked every few
hours) and a mix becomes each day's pick; songs it drops are removed from the device. Remove
one from its page, or all from Downloads or Settings → Offline. In the Android app the app
keeps them itself (see Android app).
Patchy connections (a phone on cellular), playing on This device: the next few songs in
the queue (three, or 0–20 under Settings → Offline → Download ahead) are downloaded ahead into that cache (not when the phone asks to save data), so a
dropout between songs doesn't stop the music. A stream that drops mid-song is tried again from
where it stopped, until the connection is back (or for 5 minutes, then it pauses; Play tries
again). Only a song the browser can't play is skipped, and after three in a row it stops.
Home Screen app with light, dark and synthwave themes (or the system's), and an icon that follows Android's themed
icons.
Playback history: play counts, history and last played date are recorded in the
database.
Playback log (classic app): Settings → Playback log records playback events in this browser, to
copy into a bug report.