Aurral

Self-hosted music discovery

Self-hosted music discovery that already knows your library. Now it can surprise you.

Aurral is a music discovery server you run yourself. It reads the music you already own, builds recommendations from your own listening history, turns them into scheduled playlist flows, and downloads the tracks to your music server. Works alongside Lidarr, or on its own without it.

Free and MIT licensed · one container, one port · no account needed

Aurral Discover page showing a daily mix built from your own library, recently added artists and personalised playlists

The Discover page — your daily mix, built entirely from the music you already own.

A self-hosted library has one specific problem, and every streaming service solves it for you.

Nobody builds a music server to play the forty albums they already know. They build one because they want their collection to keep growing without handing listening history to a corporation. Then they discover that Lidarr manages the library beautifully and does nothing whatsoever about what to listen to next.

So you end up doing this: opening a streaming app on your phone, finding something you like, searching for it on your server, adding it, waiting for the download, then repeating that manual loop until you get bored of it. Your library grows to tens of thousands of tracks and the share of it you actually hear stays exactly where it was.

Lidarr manages. It does not discover.

An artist arrives when you request it. Nothing suggests the artist you have never heard of.

Streaming apps discover. They own the catalogue.

You get a subscription, a licence, no files, and a listening history that belongs to someone else.

The gap is one layer thick.

Discovery logic that reads your library and your history, runs on your hardware, and fetches real files.

How it actually works

No black box. Six stages, all on your machine.

Most recommendation features give you a list and stop. The list is only half the job. Aurral closes the loop by handling the part where a suggestion turns into a file on disk.

  1. Library

    Reads tags and MusicBrainz IDs off your files, plus whatever Lidarr already tracks.

  2. Seeds

    Collects artists from your likes, your listening history, and a rotating sample of the library.

  3. Candidates

    Looks up similar and trending artists, then filters out anything already owned or blocked.

  4. Flow

    Ranks, applies a match percentage, and hands the list to a schedule you control.

  5. Download

    Searches your clients in priority order, then verifies the real file after it lands.

  6. Playback

    Publishes the playlist into Navidrome, Plex or Jellyfin. Files stay yours.

Stages one to four are the discovery layer. Stages five and six are what separate it from a playlist generator that hands you a dead list of names.

Discovery

Recommendations with a reason you can inspect

Every pick shows where it came from. Your library supplies seed artists, your listening history supplies more, and the ranking weighs artist similarity, genre overlap and how many of your seeds point at the same result. That last part is why the recommendations do not feel like a single genre filter.

Learns from what you actually play

Recommendations come from your library plus your Last.fm, ListenBrainz or Koito history. Nothing is shared with an ad platform because there isn't one.

A depth dial, not a fixed taste

Safer, Balanced or Deeper decides how far outside your library a pick may reach. Change it and every user gets rebuilt.

Knows what is moving right now

Global trends, genre tags and recent releases sit next to your recommendations instead of on another service.

Turns a pick into a downloaded file

A recommendation is only useful if the music arrives. Flows fetch the tracks through your own download clients.

Quality is verified, not assumed

Aurral reads the finished file and checks format, bitrate, sample rate and bit depth against your profile.

One account per listener

History, feedback, blocklist and Inbox belong to each user. The library stays shared, the taste does not.

Integrations

Lidarr optional. Everything else, too.

Connect the services you already run. One download client and one playback server is a working setup. Anything you leave out simply stays unused, and Discover still works with no API key at all.

Aurral connected services panel showing integration status for a music library, download client, playback server and listening history, with a now-playing flow and its upcoming tracks

Connected services with a live now-playing flow — one download client and one player is a complete setup.

Aurral album detail page for an album by The Weeknd, showing the cover art, FLAC quality badge, play and library actions, and a tracklist with per-track library status

Every album page shows exactly what is on disk and what is still missing — down to the checksum.

Running in a minute

Mount the same media path your music server uses, run one compose file, open port 3001. Lidarr can come later, or never. The one thing worth getting right on the first try is that both containers must see the media at the same path, which is the most common way a first install goes wrong.

services:
  aurral:
    image: ghcr.io/leonadavinci/aurral:latest
    restart: unless-stopped
    ports:
      - "3001:3001"
    environment:
      - PUID=1000
      - PGID=1000
    volumes:
      - ${MEDIA_ROOT:-/srv/media}:/data
      - ./config:/config

Questions people ask first

Do I need Lidarr to use Aurral?

No. Aurral manages artists and albums on its own inside its Downloads Folder. Connect Lidarr only if you want Lidarr to own that part.

What is the minimum setup?

One container, one port. Mount a media path, run docker compose up -d, open port 3001 and create an admin account.

Does my listening data leave my server?

It can stay local. Choose Local only in your profile and nothing is sent to Last.fm, ListenBrainz or Koito.

How many integrations do I actually need?

One is enough to start. Most people run a download client and one playback server, and skip the rest.

Will a flow re-download the same tracks every week?

No. Flow files are temporary and rotate out on schedule. Keeping a track in the library is an explicit action.

Can I use it without a subscription or an account?

Yes. Discover works without any API key, using ListenBrainz for similarity and MusicBrainz for genres. An admin can add a Last.fm key for closer matches.

Built in public. Better every week.

Open source, MIT licensed, and shaped by the people who run it. Read the code, open an issue, or sponsor the work.