The placeholder algorithm string (contribution_5_threshold_15_limit_50) is not a
permitted enum member of the LB Labs endpoint — every lookup 400'd, making discovery
inert. Verified against the live API 2026-07-12: the days_7500/contribution_3/
threshold_10/limit_100 variant returns rows shaped {artist_mbid,name,comment,score},
which the existing defensive parser already handles. Fixed in both the worker adapter
and the web seed-search client (kept in sync).
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
Built in three slices:
- Acquisition engine — ✅ done. Resolve a request against MusicBrainz,
match/rank across Qobuz/Soulseek/YouTube, download the best source into an
isolated staging dir, verify completeness, tag (mutagen), and atomically promote
the clean album into
Artist/Album (Year)/## Title.ext. - Library manager — ✅ done. Watched artists (live MB search + follow), per-release monitor toggles + auto-monitor-future, a wanted list with retry + quality-upgrade window, and a worker "monitor" that discovers new releases and auto-grabs through the acquisition pipeline. Plus a library scan that ingests existing on-disk albums as have + monitored + followed, and a per-artist studio-only / show-all release-type filter.
- Discovery — ⬜ not started. Spotify/recommendation-driven finding of new music.
Operational notes: the monitor is off by default — set monitor.enabled=true
(+ optional monitor.* tuning) in the Config table to activate auto-grab/upgrade.
Credentials are entered in Settings and persist across docker compose up -d --build
rebuilds (don't use down -v). Tests run against a separate lyra_test database (a
guard blocks the live DB). Deferred hardening + the full roadmap live in the
implementation-plan "Notes" sections under docs/superpowers/plans/.
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.