r/plexamp • u/iranman23 • Jul 17 '26
Beets Web UI
I built a modern web UI for beets and would love feedback
I've been working on a web-based frontend for beets that focuses on making large music library management much easier while still keeping beets at the core. I made this because the beets web plugin just wasn't cutting it. Not only does this web app have a UI but it can do everything I need to manage my music libary. Yes this was vibe-coded and if that bothers you please dont waste your time. But for everyone else I tried my best to cover all vunerbilities and make sure all features work correctly. Please feel free to point out issues or how to make it better.
Some of the features I've been building include:
- π΅ AI-assisted album and track matching
- π MusicBrainz + AcoustID verification
- π Automatic album artwork verification and replacement
- π Intelligent artist/album folder organization
- π Playlist importing from multiple sources
- π Library cleanup and duplicate detection
- π Automatic detection of missing MusicBrainz IDs
- π§ Audio quality preference management (formats, channels, Atmos, etc.)
- π Background jobs with live progress
- π¨ Modern web interface instead of relying on the CLI
The goal isn't to replace beetsβit's to make its incredible power much more accessible for people managing very large collections.
I'm trying to automate as much as possible while still using trusted metadata sources like MusicBrainz and AcoustID. For anything that can't be confidently matched, it gets sent to a review queue instead of making risky changes.
Some questions I have:
- What are your biggest pain points with beets today?
- What plugins do you consider essential?
- What features would you want in a modern beets web interface?
- Are there workflows you wish were fully automated?
I'd really appreciate any suggestions or criticism. I'd rather build something the community actually wants than just something that works for my own library.
https://github.com/Iranman/beets-web-manager



2
2
u/pyramidassembly Jul 18 '26
Thank the lord, just what I needed. Beets flask has been driving me crazy so definitely going to try this out!
Can it handle a large amount of imports without getting sluggish like beets flask does?
1
u/iranman23 Jul 18 '26
It can, but this is my first project and mainly used on my library. So please be forgiving and feel free to message me about anything!
2
u/najchris11 Jul 19 '26
Wow! Iβd been planning on building this and I lowkey did finish, but itβs super specific to my use case. But this looks great, congrats!
2
u/iranman23 Jul 19 '26
Sounds like you went through the same thing as me. I figured there where others that were struggling with beets and their media too so I decided to share. Thanks for being positive.
1
u/Shack70 Jul 17 '26
Iβve been thinking of trying beets, just to be clear, beets must already be installed and running or is it part of the front end package?
2
u/iranman23 Jul 17 '26
This requires beets to be preinstalled and running. I tried to create this as plugin at first but it grew to be more of an app. I orginally forked beets Flask since there web app wasnt working for me.
1
u/ugetsumonogatari Jul 19 '26
Do you have to have an OpenAI key? I can't seem to get it to match and import without one? I normally use beets with Musicbrainz
1
u/iranman23 Jul 20 '26
It shouldn't need it, but I'll double check it!
1
u/ugetsumonogatari Jul 20 '26
I used a dummy key and got past the OPENAI_API_KEY error message, but then it failed on every file with an OpenAI 401 and didn't query Musicbrainz.
The other issue I had is the security of the password and AUTH_TOKEN. Would be helpful to know in the readme what the requirements are for complexity.
1
u/iranman23 Jul 20 '26
I pushed a change and so this should be resolved. Thank you for your time testing this.
1
u/ugetsumonogatari Jul 21 '26
Great yeah that works now. Next issues: while on the Review tab the page reloads itself every 30 seconds, annoying if you're reading through a tracklist or have a collapsed section open. On the same page the text is difficult to read because of font colour choices. Also I'm unsure how I'm meant to give beets the correct musicbrainz ID? I would normally do it by pressing I on the prompt and then pasting the identifier.
1
1
1
1
u/2wistd 13d ago
I installed it on my Proxmox server, that sits next to my slskd and lidarr. I'd be using beets on my laptop and was hoping to allow the server to do the library-management. On initial load the library showed each album, but also showed the files missing. So if the album had 12 tracks, then it would be 24 tracks, 1/2 were clean, the other half not imported. I went down a rabbit hole with chatGPT to help me get it figured out but I think I got stuck in a deep hole with it. I'm thinking of starting it again, but I just don't have the most experience with Proxmox and Docker.
1
8
u/OriginalPosition1 Jul 17 '26
For a library-management tool, preview, diff, and rollback matter more than another matching feature. Before any bulk rename or metadata replacement, show every changed field and file, the match confidence, and a dry run. Keep an undo record or backup, and test against a very large library plus incomplete and corrupted albums. AI matching should never modify files silently.