Vynl
About · Hi, I'm André

I built Vynl because Spotify kept messing up my playlists.

A one-person project, an open-source codebase, and a music collection of 500 CDs and 1,000+ vinyls that finally has a home.

One-year journey · Open betaMade in Switzerland · MIT-friendly
Founder
A
André Wolke
Builder · audiophile · over-organiser
@andrewolkegithub.com/48Nauts-Operator
500
CDs catalogued
1,000+
Vinyls digitised
The story

A one-year journey from furious to freed.

Hi, my name is André, and I love music.

I built Vynl because my music collection had outgrown the apps I was using to manage it. Spotify was useful, but it was never home. My own CDs, vinyl rips, playlists, and folders deserved a place that treated them as the source of truth — not a streaming service quietly rearranging what I'd already paid for, year after year.

“After decades of trying to organize my music library, I thought — this is the moment to build my own.

So Vynl was born. It started as a Sunday-afternoon side project and turned into the only music app I actually open anymore. Built around three obsessions, in this order:

Three stages, one year

How it was built, one obsession at a time.

01
Spring 2025

Get the existing library in order.

Five hundred CDs in plastic crates. A thousand-plus vinyls on the shelf. A hard drive of half-ripped folders going back to 2003. The first job was to clean it all up — proper cover art, correct artist names, consistent folder structure, and a fast index that worked across the home network. Beets did the heavy lifting; AI handled the edge cases where Beets gave up.

After cleanup
47,328
tracks · 3,182 albums
Cover art98%
Metadata94%
Lyrics (LRC)72%
02
Autumn 2025

Bring every Spotify playlist home.

Years of carefully tended Spotify playlists, hostage to a service that periodically removed tracks and reshuffled the rest. Vynl now mirrors every playlist into the local library and shows me, honestly, which tracks I already own and which are missing. The gaps go to a wishlist I can fill manually or hand to Lidarr — Vynl doesn't pretend to be the source of the music itself.

Reclaimed
42
playlists · 3,108 tracks
Late Night Coffee96 / 124
Sunday Vinyl28 / 46
Run Club Forever41 / 43
03
Summer 2026

Make it work in my pocket.

The last piece is the iOS app — my own library streaming over Tailscale, offline sync for the train, CarPlay for the morning drive. It ships this summer, free like everything else, since Apple takes the cut on App Store payments anyway. The point was always this: my music, on every device I own, without paying a streaming company to collect data on me.

Shipping
Summer
2026 · iOS first
Offline sync · ready
Tailscale stream · ready
CarPlay · in testing
Android · 2026 Q4
Open source

All of it. On GitHub.

Vynl is open source so you can try it yourself, audit what runs against your music, or contribute when you feel like it. No proprietary dependencies you can't inspect, no “trust me” for the AI prompts, no analytics SDK quietly phoning home. Fork it, run it, change it.

48Nauts-Operator / vynl-app
Public · Open source · TypeScript / Python
1,247

Self-hosted music streaming with AI-powered discovery, Sonos integration, and zero subscription fees. Open beta.

musicself-hostedsonosbeetsclaudedocker
1,247
Stars
128
Forks
23
Contributors
Last commit · 2 hours ago by @andrewolke
Versioning · Changelog

Released every
few hours, lately.

Current
v0.6.29
3 hours ago
Next
v0.6.30
Tonight, probably
v0.6.29
2026-05-26 · 11:28 · 3 hours ago
PATCH

Migration UX cleanup + “Since” timeframe filter

FEATAdds a Since timeframe filter (24h / 7d / 30d / 90d) to library views.
FIXRestores the in-flight download view when re-mounting /migration.
IMPRPlaylist mirror checkpointing — resume where the last import left off.
v0.6.28
2026-05-25 · 21:23
MINOR

spotDL + yt-dlp shipped in the production image

FEATspotdl and yt-dlp now baked into the production Docker image — no host install needed.
FEATFUNDING.yml + sponsor surface added to GitHub repo.
IMPRRestored migration download view for re-entry from notifications.
v0.6.26
2026-05-25 · 18:59
MINOR

Contribution surface — GitHub issue & PR templates

FEATVision issue tickets and feedback templates for new contributors.
IMPRCleaner contribution flow — fewer back-and-forths on first PRs.
v0.6.25
2026-05-25 · 18:42
MINOR

Migration wizard v2 — spotDL + “Not Found” bucket

FEATSpotify migration wizard v2 with spotDL pipeline and graceful “not found” handling.
FEATPer-track outcomes now bucketed for easier post-import review.
v0.6.24
2026-05-25 · 14:48
SECURITY

Tailscale audio URL leak — plugged

FEATServer-side audio URL composition prevents Tailscale-internal hostnames leaking to clients.
FEATRecommended upgrade for anyone exposing Vynl over their tailnet.
v0.6.23
2026-05-25 · 11:38
SPOTIFY

Spotify Migration Wizard — the big one

FEATFive-PR rollup: sidebar / settings, UI, action endpoints, read endpoints, and safe-phase sync. Mirror every Spotify playlist into Vynl in one pass.
v0.6.21
2026-05-25 · 09:24
API KEYS

Real DB-backed API key storage

FEATPer-key save flow with proper rotation. No more env-var-only configuration for API keys.
Live updates

Now shipping, live.

Actions feed
Live · just shipped·3 hours ago by @andrewolke
v0.6.29
Latest

Migration UX cleanup + “Since” timeframe filter

0f2700a·main·26 May 11:28
FEATAdds a Since timeframe filter (24h / 7d / 30d / 90d) on library views.
FIXRestores the in-flight download view when re-mounting /migration.
IMPRPlaylist mirror checkpointing — resume where the last import left off.
docker pull cand0rian/vynl-app:v0.6.29Full release notes
Pipeline status
CI
Passed · 2m 11s · run #29
Pass
Build & Publish Docker Image
Passed · 19m 42s · GHCR pushed
Pass
TODO to Issue
Passed · 13s · 2 TODOs filed
Pass
Average release cadence · ~3 / day this week
Subscribe

Get pinged when a release lands.

Pick whichever fits your day. Each route gets the same release notes — pre-release builds available on the dev channel.

Email digest
One per release · ~1 / day right now
Recommended

The release notes in your inbox, with a docker pull line ready to paste. Unsubscribe in one click. No marketing, ever.

4,128 self-hosters subscribed · GDPR-compliant
GitHub releases
Watch the repo · native to your inbox

Use the GitHub UI to watch only Releases. Notifications land via the channel you've already configured.

github.com/48Nauts-Operator/vynl-app
Watch› Custom › ✓ Releases
Watch releases on GitHub
RSS / Atom feed
Drop it into your reader of choice

For NetNewsWire, Reeder, Miniflux, or your home-server bot. Same release-note payload as email, in plain XML.

vynl.music/releases.xml
Telegram · vynl_music
Casual support and chatter with the community

Release news and casual support live in the Telegram group. Ping the maintainer, talk to other self-hosters, share what you're listening to.

V
Andrejust now
v0.6.36 is live — covers refresh sped up ~3×. Anyone hitting the Beets path-remap thing on UGREEN, ping me.
Join Telegram