Self-hosted media acquisition that stays deterministic, tidy, and boring in the best way.
Follow us on X: https://x.com/sudoStacks
Retreivr is a self-hosted download engine for building and maintaining a clean local media archive.
It takes your intent (URL, playlist, search, or Spotify sync), resolves targets, downloads media, applies canonical naming/metadata rules, and writes predictable files to disk.
Retreivr is not a streaming server. It is the acquisition layer.
- Deterministic downloads (idempotent and repeatable)
- Clean filesystem structure (no random naming chaos)
- MusicBrainz-first metadata authority for music workflows
- Unified queue + scheduler + watcher flows
- Web UI and API for control and automation
- Used for intentional media consumption... avoid getting sucked into the algorithms
- Optional Telegram summaries
- Runtime release workflow for versioned GHCR publishing
- Minimal runtime bundle zip assets for simplified Docker deployment
- Music matching robustness improvements across discovery/scoring/retry paths
cp docker/docker-compose.yml.example docker/docker-compose.yml
cp .env.example .envdocker compose -f docker/docker-compose.yml up -dhttp://localhost:8090
Default mapping is 8090:8000 (host:container).
- Open
Configpage - Add your playlist/search settings
- Set destination folders (under
/downloadsin container) - Optional: configure Spotify OAuth and Telegram
Use these container paths for predictable behavior:
/downloadsmedia output/dataruntime DB/temp/configconfig.json/logslogs/tokensauth/cookies
Requirements:
- Python
3.11.x ffmpegon PATH
Run:
python3.11 scripts/archiver.py --config data/config/config.jsonRun API/UI locally:
python3.11 -m uvicorn api.main:app --host 127.0.0.1 --port 8000Then open:
http://localhost:8000
GET /api/statusGET /api/metricsPOST /api/runGET /api/download_jobsPOST /api/import/playlistGET /docs(OpenAPI)
If you are upgrading to 0.9.6, pull latest image and restart:
docker compose -f docker/docker-compose.yml pull
docker compose -f docker/docker-compose.yml up -dYour mounted /data, /downloads, /config, and /tokens persist.
Retreivr does:
- Acquire media reliably
- Normalize metadata and output structure
- Keep playlist/sync ingestion deterministic
Retreivr does not:
- Stream media
- Replace Plex/Jellyfin players
- Bypass DRM/protected content
Retreivr is licensed under the GNU Affero General Public License v3.0 (AGPLv3). See the LICENSE file for full details.