Self-hosted music management: libraries, playlists, track metadata, and downloads from YouTube (yt-dlp), Tidal. Optional Spotify import and Navidrome/Subsonic playlist sync. Go BFF + Python worker over Postgres & NATS; browser extension for YT cookies.
Partially vibecoded. Use at your own risk.
- Deps:
task install:deps(Go + Poetry). - Infra: Postgres 18 + NATS with JetStream.
task infra:dbandtask infra:nats, thentask db:migrate:up. - Run:
task run(Go app),task run:worker(Python download worker). Ortask all:upfor infra + both containers. - Auth: Authboss. Set
VALKYRIE_AUTH_SESSION_KEY,VALKYRIE_AUTH_COOKIE_KEY,VALKYRIE_AUTH_CSRF_KEY(32 bytes, crypto-random) in production; dev defaults are insecure.
Contributors: see AGENTS.md for architecture, codegen (task gen), and conventions.
I am not liable for what you do with this software. Downloading or redistributing copyrighted content may be illegal in your jurisdiction. Check your local laws and use only for content you have the right to access. The software is provided as-is (see LICENSE).
No support — this is a personal project. I will review PRs from time to time and may merge fixes or small features. Open an issue or PR if you like; no guarantees.
Built with (among others): Authboss, Connect RPC & Buf, chi, fx, NATS, sqlc, templ, yt-dlp, ytmusicapi, mutagen, Bootstrap. Also huge shoutout to Navidrome. Thanks to everyone behind these projects and the broader open-source ecosystem.
Music is one of the best things I have ever experienced about this life.I'm very sad about how subscription services work nowadays. Please support your favourite artists, I used to be a professional musician and many of them are my friends, family. It's hard out there nowadays, future is uncertain, so try to have compassion. Anyway, love you all.
For lyrics see: https://github.com/fira42073/ddt
