Add Lyra acquisition-engine design spec, README, gitignore

Initial design for slice 1 (acquisition engine): three-container
architecture (Next.js UI, Python worker, slskd), the six-stage
pipeline, source-adapter contract, data model, error handling, and
testing strategy.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Jonathan
2026-07-10 16:14:55 +02:00
commit 3adefe929b
3 changed files with 327 additions and 0 deletions
+30
View File
@@ -0,0 +1,30 @@
# 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:
1. **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.
2. **Library manager** — Lidarr-style monitoring, wanted lists, auto-grab of new
releases.
3. **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/`](docs/superpowers/specs/) for the full design.