4907d0d5a448999440ff80b66ce6604b58b7950e
Adds the AudioProbe seam (probe.py, _probe.py MutagenProbe with a lazy mutagen import, FakeAudioProbe) and scan_library, which walks /music, resolves each album against MusicBrainz (falling back to embedded tags when the folder name doesn't resolve), and idempotently records matched albums as have (LibraryItem), monitored (MonitoredRelease, fulfilled), and followed (WatchedArtist, autoMonitorFuture=false). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Lyra
Self-hosted, multi-source music acquisition and library tool — a replacement for Lidarr + NZBget. Lyra discovers, ranks, downloads, tags, and organizes music across sources of differing quality: Qobuz (lossless/hi-res), Soulseek (P2P), YouTube (universal lossy fallback), and Spotify (discovery/metadata only).
Status
Early design. Built in three slices:
- Acquisition engine — in progress. Given an album/track, find the best available source, download it, tag it against MusicBrainz, and file it into a clean library.
- Library manager — Lidarr-style monitoring, wanted lists, auto-grab of new releases.
- Discovery — Spotify/recommendation-driven finding of new music.
Architecture
Three Docker containers on a home server:
- Next.js app — UI + API (search, request, queue, progress, settings).
- Python worker — all source integration (streamrip, yt-dlp, slskd client, beets/mutagen), running the six-stage acquisition pipeline.
- slskd — off-the-shelf headless Soulseek daemon.
Postgres is the shared source of truth; a shared /music volume is the library.
See docs/superpowers/specs/ for the full design.
Description
Self-hosted multi-source music acquisition tool replacing Lidarr (Qobuz/Soulseek/YouTube/Spotify)
Languages
Python
50.7%
TypeScript
45.4%
CSS
3.6%
Dockerfile
0.2%
Shell
0.1%