Dig deeper.
Self-hosted music manager for collectors. Watch artists, hunt for the best quality, and build your library — automatically.






Features
Everything you need to build and maintain your music library, running on your own hardware.
Save artists, albums, or individual tracks. Full discography tracking with opt-in new release detection — never miss a drop.
Searches Soulseek via slskd for the best available quality. Configurable tiers (FLAC > MP3 320 > MP3 256), automatic retry with backoff, per-source blacklisting.
Files organized into your library, tagged with full metadata and cover art. Optional Navidrome integration so new music streams immediately.
Search via MusicBrainz, Deezer, or bring your own gRPC provider. Switch on the fly, relink entities between providers anytime.
Priority-ordered quality tiers. The scheduler scans your library daily and re-queues tracks that can be upgraded to a better format.
Single Docker container, SQLite database, no external dependencies. Your data stays on your hardware. Put auth in front however you like.
How it works
Find any artist via MusicBrainz, Deezer, or your own provider. Browse their full discography.
Add artists, albums, or tracks to your watchlist. Crate tracks their complete discography.
Crate searches Soulseek, downloads the best quality, organizes and tags files automatically.
Works with
Quick Start
One docker-compose file is all you need.
# docker-compose.yml
services:
crate:
image: ghcr.io/theoutdoorprogrammer/crate:latest
ports:
- "6969:6969"
volumes:
- ./crate-data:/app/data
- ./slskd/downloads:/app/downloads
- ./library:/app/library
environment:
- CRATE_SLSKD_URL=http://slskd:5030
- CRATE_SLSKD_API_KEY=your_api_key
- CRATE_DOWNLOADS_DIR=/app/downloads
- CRATE_LIBRARY_PATH=/app/library
depends_on:
- slskd
restart: unless-stopped
slskd:
image: slskd/slskd:latest
ports:
- "5030:5030"
volumes:
- ./slskd:/app
- ./library:/crate
environment:
- SLSKD_REMOTE_CONFIGURATION=true
- SLSKD_API_KEY=your_api_key
- SLSKD_SOULSEEK_USERNAME=your_username
- SLSKD_SOULSEEK_PASSWORD=your_password
restart: unless-stopped
Then run:
Open http://localhost:6969