Hey everyone,

I'm new here! I wanted to share a music search and discovery tool for Lidarr. It plugs into Spotify, TIDAL, Deezer, Last.fm, MusicBrainz, Plex/Tautulli, Jellyfin, and even some AI recommendations.

GitHub: https://github.com/aquantumofdonuts/mixarr

Website: https://aquantumofdonuts.github.io/mixarr/

What it does:

  • Connects to Lidarr and analyzes your existing artists
  • Hooks into Spotify, TIDAL, Deezer, Last.fm, MusicBrainz, Plex/Tautulli, and AI services
  • Finds related/similar artists, new releases, charts, labels, playlists, etc.
  • Gives you a review queue to approve or dismiss discovered artists
  • Automatically adds approved artists to Lidarr with the profile you choose
  • Has a universal search and discovery interface across all services
  • Runs as a web app (Next.js frontend + Express backend) and plays nice with Docker

Why I built it:

I wanted one tool that I could point at my Lidarr library and get a steady stream of relevant artist recommendations.

Basically, make music discovery feel as automated and “infrastructure-y” as the rest of the *arr ecosystem.

Current status:

  • Working with Lidarr + Spotify/TIDAL/Deezer/Last.fm/MusicBrainz + Plex/Tautulli
  • Has subscriptions for different discovery sources (charts, playlists, related & followed artists, etc.)
  • Docker-compose setup available, plus local dev if you prefer
  • Early but usable; I’m actively using it myself and iterating

If you try it, I’d love to hear any feedback! Thanks!

EDIT: version 2.0 released today February 10, 2026, with some nice updates

all 73 comments

sorted by: hot top controversial new old
[–] 40 points 10 months ago (1 child)

This sounds great. I will have to check it out when I'm back home. I have been missing a music discovery tool as I am trying to avoid using any of the corporate overlord algorithm machines.

  • source
  • hideshow 1 child comment
  • [–] [S] 11 points 10 months ago* (last edited 10 months ago)

    Awesome! I hope you like it. I've successfully converted my household from Spotify to Plexamp using this. Setup a few subscriptions, let the new artists and recommendations roll in, and you have a constant stream of new music.

  • source
  • parent
  • [–] 12 points 10 months ago (1 child)

    Omg you are a saint. I was missing a tool like this. Will check it out ASAP.

  • source
  • hideshow 1 child comment
  • [–] 9 points 10 months ago (1 child)

    Is it possible to set this up with navidrome instead of lidarr?

  • source
  • hideshow 1 child comment
  • [–] 29 points 10 months ago (3 children)

    Nice. Couple of things:

    • The link in your post is broken 😉
    • Consider doing with Jellyfin anything you've done with Plex. Plex is on it's way out, especially with Fediverse users.
  • source
  • hideshow 3 child comments
  • [–] [S] 21 points 10 months ago* (last edited 10 months ago) (2 children)

    I think the link is fixed now?

    I will definitely take the Jellyfin suggestion to heart. Mixarr is Plex-centric because that's what I use, but I see that Jellyfin has a large share as well. Thanks for the suggestion!

    Edit: Added Jellyfin support. Four new subscription types in the "My Library" subscription preset group. You can pull and rebuild docker (or pull the latest image) to get the changes.

  • source
  • parent
  • hideshow 2 child comments
  • [–] 8 points 10 months ago* (6 children)

    Connects to Lidarr

    So, I don't run the 'arr stack', and am not interested in downloading, but I would like recommendations on new music. I am running Navidrome which scrobbles to Listenbrainz. How would Mixarr fit into this scenario?

  • source
  • hideshow 6 child comments
  • [–] [S] 5 points 10 months ago* (2 children)

    I pushed an update that adds a "review only" mode, with Lidarr no longer being a required connection.

    https://github.com/aquantumofdonuts/mixarr/releases/tag/v1.1.1

    Add any Subscription and set the result handling to "add to review queue". Then, just look in the Review Queue tab for your recommendations.

  • source
  • parent
  • hideshow 2 child comments
  • [–] 4 points 10 months ago (1 child)

    Oh snap! Man, you didn't have to do all that just for one dipshit who didn't understand what Mixarr was. I should have done a bit more reading. I feel embarrassed. I will spin this up in an hour or two when I get my chores done. Thank you so much!

  • source
  • parent
  • hideshow 1 child comment
  • [–] 5 points 10 months ago* (2 children)

    Why would you need this for your scenario? If you're not downloading you can simply check the listenbrainz recommendations in the playlists that it creates for you

  • source
  • parent
  • hideshow 2 child comments
  • [–] 15 points 10 months ago (1 child)

    GitHub link is funky, need to remove the ()

  • source
  • hideshow 1 child comment
  • [–] 7 points 10 months ago*

    Man, that would absolutely rock if it integrated with Navidrome.

    Navidrome can scrobble to Listenbrainz which this supports.

  • source
  • [–] 6 points 10 months ago (1 child)

    Been playing around with it over the last few days and I love it. I don't use Spotify, but it does a great job at looking at my Plex library and recommending similar artists.

    Great job, and thanks!!

  • source
  • hideshow 1 child comment
  • [–] 6 points 10 months ago (5 children)

    First off thank you so much this is exactly what I've been waiting for.

    I looked at the compose file and it doesnt seem to have the base image in there, just the DB and web setup.

    I'm not super experienced with docker but would love to deploy this through my dockstarter setup - am I missing something here, is there a way to get it up and running through compose now?

  • source
  • hideshow 5 child comments
  • [–] 2 points 10 months ago (2 children)

    You currently have to build the docker images. Instructions are in the repo

  • source
  • parent
  • hideshow 2 child comments
  • [–] 5 points 10 months ago (5 children)

    Do you know if it will work with SQLite? I'd like to try it but I hate spinning up more postgres instances

  • source
  • hideshow 5 child comments
  • [–] [S] 1 point 10 months ago (4 children)

    Hi, it might but I haven't explored that. I'll look into it. Would you want to roll your own SQLite, or just have that containerized instead of postgres?

  • source
  • parent
  • hideshow 4 child comments
  • [–] 2 points 10 months ago (3 children)

    SQLite doesnt require you to have any service running, the DB is just stored in a file which the program accesses through an SQLite library. I think its the best option for selfhosted software, as its very lightweight and more than performant enough for 99% of these use cases.

  • source
  • parent
  • hideshow 3 child comments
  • [–] 1 point 10 months ago (2 children)

    Performance isn't the only advantage to a full postgres deployment. I have a central database for all of my self hosted apps which makes it really easy to back it all up.

    I've had a lot of problems in the past from software crashes that left sqlite files in a corrupt state, backups where the sqlite file wasn't properly closed leaving it in a weird unlockable state, transactions not completing when swap is used, etc. Besides that sqlite really doesn't play nice with NFS, which is the basis for quite a few cloud storage providers.

    "Best option" really depends on what self hosting looks like in your specific setup.

  • source
  • parent
  • hideshow 2 child comments
  • [–] 2 points 10 months ago (1 child)

    Yeah, I wasn't trying to say SQLite is universally better. I shouldn't have said best option, I really meant best default. I don't think the majority of users are running a central db, most will just spin-up docker compose files for each service and end up with multiple SQL versions running.

    I’ve had a lot of problems in the past from software crashes that left sqlite files in a corrupt state

    I have had this issue, but it was always easily recoverable. I haven't had the same issues with backups, although a lot of the software I use that's running SQLite has a builtin backup feature, then I just backup that directory to a cloud service.

    Besides that SQLite really doesn’t play nice with NFS, which is the basis for quite a few cloud storage providers. Also a good point, I just don't think the majority of users are using NFS for their DBs.

    When an app is using an ORM already, I think they might as well make sure it supports both SQLite and a hosted DB like Postgres

  • source
  • parent
  • hideshow 1 child comment
  • [–] 5 points 10 months ago (1 child)

    This is such good news to see this on my frontpage today, I'll definitelybe giving this one a try later. Mad respect and appreciation for the amount of time this must have taken for you to make this. Thank you so much!

  • source
  • hideshow 1 child comment
  • [–] 3 points 10 months ago (3 children)

    Looks cool. Any chance you'll add Qobuz to the integration list in the future?

  • source
  • hideshow 3 child comments
  • [–] 2 points 10 months ago

    I think your URL to the github is a hyperlink back to this post...

  • source
  • [–] 2 points 10 months ago

    Well I can’t judge yet, but I’ve installed it, and I’ll try it out tomorrow!

  • source
  • [–] 2 points 10 months ago (1 child)

    Does it work with SoundCloud? I wanted to self host my library

  • source
  • hideshow 1 child comment
  • [–] 2 points 10 months ago (2 children)

    How hard do you suppose it would be to add integration with Qobuz?

  • source
  • hideshow 2 child comments
  • [–] 2 points 10 months ago

    Awesome!! I had been wanting to make something like this, but never got around to it. Excited to try it out tomorrow

  • source
  • [–] 5 points 10 months ago (3 children)

    Was super interested right up until the AI recommendations bit.

  • source
  • hideshow 3 child comments
  • [–] 1 point 10 months ago* (7 children)

    I am trying to put this behind Haproxy but not having much luck, I keep getting "client sent an HTTP request to an HTTPS server".

    Anyone have a clue how to resolve this?

    I understand this image has its own caddy reverse proxy, not sure how to bypass that at the moment.

  • source
  • hideshow 7 child comments
  • [–] [S] 2 points 10 months ago (6 children)

    Hi, I think you can resolve this by forwarding your reverse proxy to http://mixarr-ip:3010/. That bypasses Caddy altogether. Give that a try, and let me know how it goes.

  • source
  • parent
  • hideshow 6 child comments
  • [–] 1 point 10 months ago (5 children)

    I am running in docker, I got 443 pointed at 3443.

    I saw the 3010 setting in the docs, i just can't figure out if 3010 is pointed at 80?

  • source
  • parent
  • hideshow 5 child comments
  • [–] [S] 2 points 10 months ago (4 children)

    3010 is the web port, on the web container itself (direct connection the the web ui). 3443->443 and 3080->80 are the Caddy ports, which also point to the web ui (just proxied through Caddy). Hopefully that's not too confusing.

  • source
  • parent
  • hideshow 4 child comments
  • [–] 1 point 10 months ago* (last edited 10 months ago) (3 children)

    Understood, though it's still kicking my butt TBH.

    Exposing port 3010:3010 seems to get me a connection refused. But I can still connect to port 3443:443. Both ports are set to TCP.

    Guess I'm just exhausted, will play around with it more tomorrow. Thanks for your help.

  • source
  • parent
  • hideshow 3 child comments
  • [–] [S] 2 points 10 months ago (2 children)

    Sure thing. Can you share your docker-compose.yml or docker cli string? Maybe I can help.

  • source
  • parent
  • hideshow 2 child comments
  • [–] 2 points 10 months ago* (last edited 10 months ago) (1 child)

    First, thank you for making this. Seems very useful.. That being said I'm having the same issue, even after mapping port 80, it redirects to https/443 no matter what I do.

    services:
      mixarr:
          container_name: mixarr
          image: ghcr.io/aquantumofdonuts/mixarr:v1.1.0
          ports:
            - 3010:80 # Edit: change 80 to 3000 in order to bypass caddy in the container
            - 3443:443
          volumes:
            - ~/mixarr-data:/data
          environment:
            - SESSION_SECRET=$(openssl rand -hex 32)
            - FRONTEND_URL=https://my-domain:3443/
            - BASE_URL=http://my-domain:3010/
          restart: unless-stopped
    

    Edit: Just realized you have it using caddy, always, and it is set to redirect to 443. You should give people the option to run without caddy in the container. I have my own instance of caddy running, I don't need it built in.

    That being said, changing it from pointing to port 80 and instead to port 3000 allows me to access it over http but ends up having authenticaton issues when trying to change settings.

    Edit 2: Oh there is a much more robust docker-compose file. I was just going based on the readme. Will give it a try a bit later.

  • source
  • parent
  • hideshow 1 child comment
  • [–] 2 points 10 months ago* (last edited 10 months ago)

    Thank you, your comment here helped me sort my issue out.

    For anyone if you want to access this without the built-in proxy/caddy server set your ports in your docker compose like so.

    • 3010:3000
    • 3443:443 (this is the caddy port inside the container)
  • source
  • parent
  • [–] [S] 1 point 9 months ago

    I released version 2.0 of Mixarr today, with some nice feature and visual updates and fixes. Looking for feedback if anyone gives it a try, or update if you've already been running it.

  • source
  • [–] 1 point 10 months ago

    really liking this.. i've been using SoulSync, but its very buggy, and its mainly a soulseek driven downloader.. lidarr is the way to go,

    which trackers are good for music? should i just try and get a red invite?

  • source
  • [–] 1 point 10 months ago (1 child)

    How does this compare to lidify

  • source
  • hideshow 1 child comment
  • [–] [B] 1 point 9 months ago

    Acronyms, initialisms, abbreviations, contractions, and other phrases which expand to something larger, that I've seen in this thread:

    Fewer Letters More Letters
    Git Popular version control system, primarily for code
    HTTP Hypertext Transfer Protocol, the Web
    HTTPS HTTP over SSL
    IP Internet Protocol
    NFS Network File System, a Unix-based file-sharing protocol known for performance and efficiency
    Plex Brand of media server package
    SSD Solid State Drive mass storage
    SSL Secure Sockets Layer, for transparent encryption
    TCP Transmission Control Protocol, most often over IP
    nginx Popular HTTP server

    [Thread #81 for this comm, first seen 10th Feb 2026, 11:30] [FAQ] [Full list] [Contact] [Source code]

  • source
  • [–] 1 point 10 months ago

    I haven’t figured out how to use the we hook feature to connect to Pushover… maybe it can’t?

  • source
  • [–] 1 point 10 months ago (6 children)

    Just spun it a up earlier today, looks great! I'm wondering if maybe I'm misunderstanding how listenbrainz subs work. The explore subscription doesn't pull in my users "weekly exploration" playlist, it's totally unrelated songs it's pulling. Although it does appear to pull in accurate listenbrainz artist recommendations

  • source
  • hideshow 6 child comments
  • [–] [S] 1 point 10 months ago (4 children)

    Sorry, which subscription specifically were you using? I'll try to reproduce the behavior you're seeing. Might be an easy fix.

  • source
  • parent
  • hideshow 4 child comments
  • [–] 1 point 10 months ago (3 children)

    Listenbrainz Explore
    image
    I just noticed there is an explore tab on listenbrainz, is that what this is supposed to pull from? I was thinking it was supposed to pull from the weekly exploration playlist listenbrainz creates.

  • source
  • parent
  • hideshow 3 child comments
  • [–] [S] 2 points 10 months ago* (last edited 10 months ago) (2 children)

    Ok, got it. Yes, this was a funky UI bug. There is now a ListenBrainz preset for Weekly Exploration, which pulls from the user's playlist, and the "type" dropdown is disabled once you select a preset.

    Please give it a try, let me know if that fixes the issue you were having. I updated the repo, you can pull and rebuild containers to get the changes.

    Thanks!

  • source
  • parent
  • hideshow 2 child comments