What Synthseek is
Synthseek is a self-hosted, multi-user music library automation service. You run it on your own hardware, it drives your download clients for you, and every file it produces lands in a library you own.
You ask for music the way you would ask a person: a song, an album, an artist, a playlist, or a vague idea like “melancholic 80s synthwave”. Synthseek finds it in a music catalog and downloads it through the sources you enabled. It checks that what arrived is what you asked for, then tags it and files it into your library. From there you can play it in the web app itself, through your media server, or in a Subsonic-compatible music app pointed straight at Synthseek.
It is built for a household rather than a single person. Each person has their own account, playlists and connected services. Members cannot see each other’s settings or change how the instance runs.
What it is not
Synthseek does not host, store, or distribute music itself. It has no content of its own. It orchestrates software you already run and services you already have accounts with. Where the files come from is entirely a function of the download client you point it at and the sources you enable.
The shape of the system
Synthseek ships as a single Docker container that runs two processes: a web interface and an API server. Around it sit the services it talks to.
| Piece | Role | Required |
|---|---|---|
| slskd | Your Soulseek daemon. Synthseek drives it over its local HTTP API. | Yes, for peer-to-peer downloads |
| Music catalog | Where song, album, artist, and playlist metadata comes from. Deezer by default, with no API key and no account. | Yes, built in |
| AcoustID | Fingerprints the audio to prove a file is the recording you asked for. | Optional, free key, strongly recommended |
| LRCLIB | Where song lyrics come from when the file carries none. | Optional, built in |
| Media servers | Plex, Navidrome, Jellyfin. Play tracks they hold that Synthseek has no file for, and receive your playlists. | Optional |
| Lidarr | An alternative target you can hand an artist or album to. | Optional |
| Last.fm and ListenBrainz | Your listening history, the discovery mixes built from it, and where what you play is sent. | Optional |
| SABnzbd | Your Usenet downloader. Synthseek hands it a release and collects the result. | Optional, for Usenet downloads |
| Newznab indexer | Where Synthseek searches for Usenet releases. | Optional, for Usenet downloads |
| qBittorrent | Your torrent client. Synthseek hands it a release and imports a copy of the track it needs. | Optional, for torrent downloads |
| Torznab indexer | Where Synthseek searches for torrent releases, such as Prowlarr or Jackett. | Optional, for torrent downloads |
| Another Subsonic server | A friend’s Navidrome or Synthseek that tracks can be downloaded from as original files. | Optional, off by default |
| SoundCloud | Uploads on SoundCloud, searched through the bundled yt-dlp when your other sources cannot deliver. No account needed. | Optional, off by default |
| Internet Archive | Free music, searched when your other sources cannot deliver. No account needed. | Optional, off by default |
| Music apps | Subsonic-compatible players play the library straight from Synthseek, and their favourites, playlists and queue live in it. | Optional, off by default |
How a request flows
- You search, and pick a track, album, artist, or playlist.
- Synthseek writes one request row per track and puts them in the queue.
- The engine searches your enabled download sources for each track.
- Candidates are scored, and the best one is downloaded.
- The downloaded file is verified against what you asked for.
- A verified file is tagged and imported into your library.
Every step reports back live. The requests screen updates without a refresh, and a progress dock follows anything long-running.