Self-hosted, multi-user music library automation.
Synthseek searches across music providers, downloads through the sources you enable, slskd, Usenet, or yt-dlp, checks that what arrived is what you asked for, and keeps your library organized afterwards. It is multi-user, provider-agnostic, and ships a built-in MCP server so assistants can drive your library.
Website · Documentation · Patch notes
Discover
discover.mp4
Request content
request.mp4
Browse and import your library
library.mp4
importing.mp4
- No API keys to get started. The catalog is provider-agnostic and runs on Deezer by default, so a first run needs nothing you have to register for.
- Three download sources, and you decide the order. Peer-to-peer, Usenet, and a YouTube fallback, chosen per request rather than once globally.
- It treats your library as something to keep honest. Files are checked before they are imported, duplicate copies are only settled when they can be proven identical, and nothing is ever deleted outright.
Requires Docker with Compose, and a running slskd if you want peer-to-peer downloads.
Use the provided docker-compose.yml as a starting point:
docker compose up -dOpen the web interface, create your admin account in the setup wizard, and point it at your music folder. The full walkthrough is in Getting Started.
- Search tracks, albums, artists, and playlists across a provider-agnostic catalog
- Request a single track, a whole album, or an entire playlist
- Choose the quality and the source order per request
- A queue you can reorder, pause, and resume, with live progress
- slskd for peer-to-peer, Usenet through your own indexer and SABnzbd, and yt-dlp as a fallback
- A Usenet release downloaded for one track is reused for the other tracks on the same album instead of being fetched again
- Every download is fingerprinted and identified before it is imported, so a file whose tags look right but whose audio is by someone else is refused
- Anything that fails that check waits in a review queue for you to approve or discard
Download sources · The download engine
- Synthseek keeps its own index of the audio files on your disk, so music you copied in by hand is found and identified rather than staying invisible
- A file that moved is followed to its new location instead of being counted as one loss and one arrival
- Tracks with more than one copy are listed a track at a time, and only copies it can prove are the same recording are settled automatically, which means agreeing on both title and length
- What it cannot prove waits for you, with every copy playable before you choose
- Nothing is deleted outright: replaced files go to a recycle bin with a restore, for as long as the retention window keeps them
- Play your library in the web app, with media keys, a lock screen and a full screen view, and nothing to turn on first
- Your queue and position are kept on the server, so they survive a reload and are the same ones your phone picks up
- Play your library in Subsonic and OpenSubsonic apps such as Feishin and Symfonium, with no media server in between
- Apps can change things, not only play them: favourites, playlists you create and reorder, what you played, and a queue you can pick up on another device
- A stream is converted on the fly when an app asks for a lower quality than the file on disk
- Send what you play to Last.fm and ListenBrainz from the server, so a listen survives closing the tab
- Read the lyrics in the full screen view, following the song when the words come with timings
- Sync playlists to Plex, one at a time or all at once
- A built-in MCP server, so assistants can search, request, and manage your library
- Discovery mixes from Last.fm and ListenBrainz on a dedicated Discover page
- Lidarr delegation, with tag and monitor-scope selection
- Spotify library import, and playlist import and export as JSPF, XSPF, or CSV
- Multi-user, with local accounts or Plex OAuth, member management, and per-user libraries
- A responsive web interface that works on a phone as well as a desktop
- Available in English, Espanol, Deutsch, and Francais
- Logs viewer, background job controls, and in-app update notifications
Users and permissions · Configuration
| Overview | What Synthseek is and how the pieces fit |
| Getting Started | Install, first run, and pointing it at your music |
| Features | Everything the app does, in detail |
| Download engine | How a request becomes a file in your library |
| Download sources | slskd, Usenet, and the YouTube fallback |
| Configuration | Environment variables and in-app settings |
| Users and permissions | Accounts, roles, and what members can see |
| Integrations | Plex, Lidarr, Last.fm, ListenBrainz, and more |
| AI assistants | The MCP server and its tools |
| Operations | Jobs, logs, health, backups, and updates |
| FAQ | Common questions and troubleshooting |
For bugs or questions, open an issue.
This project is licensed under the MIT License.