A player for music you own is a weekend project, and Navidrome and Jellyfin already do it well. That is not what the subscription buys. Spotify pays for licences with labels and publishers that cover nearly everything you might want to hear, plus recommendations built from the listening of its whole user base. No agent can get you either. Build the server for the albums you already have, and keep paying for the catalogue.
Before you buildSpotify Free keeps the full catalogue with ads, and cancelling Premium keeps your playlists. Try Navidrome next to it first: it plays the music you own at no cost.
Build me a personal music server to replace Spotify for the music I own. Requirements: - Node.js 22 + TypeScript: a Fastify server with a plain HTML player on http://127.0.0.1:4970. `npm start` runs it; MUSIC_DIR, PORT and SUBSONIC_PASSWORD live in .env. - Library: scan MP3, FLAC, M4A and OGG with `music-metadata` (tags, duration, embedded cover), group by album artist and album, and watch the folder with `chokidar`. Files are only ever read. - Storage: better-sqlite3 in ./data/music.db with an FTS5 index over artist, album and title; play counts, ratings and playlists live there. - Streaming and web player: GET /stream/:id with HTTP Range support so seeking works; covers resized to 300 px with `sharp`; queue, shuffle, repeat, search, albums by artist, playlists, a "recently added" page, and the Media Session API for keyboard and lock-screen controls. No transcoding yet. - Apps: implement the Subsonic REST subset ping, getLicense, getMusicFolders, getArtists, getArtist, getAlbum, getAlbumList2, search3, getCoverArt, stream, getPlaylists, getPlaylist, createPlaylist, updatePlaylist and scrobble, with token auth (t and s parameters) checked against SUBSONIC_PASSWORD, so existing Subsonic clients can connect. - Import: `npm run import-spotify -- <path>` reads Playlist JSON from Spotify's data export or Exportify CSV files, matches tracks to the library by artist, title and duration (within 3 seconds), creates the playlists and prints every track it could not match. - Single user, bound to localhost. No accounts, no telemetry, local-first; the README explains Tailscale for use away from home and opens no public port. - Out of scope: the Spotify catalogue, downloading music, recommendations, podcasts, multi-user, Spotify Connect, transcoding. - README: scan time for my library, how to connect a Subsonic client, and the plain note that only music I already have files for will play.
Opens your agent with the prompt filled in, you press enter. Or copy it and paste it into an empty folder.
The first prompt builds the core. Run these one at a time in the same folder to grow it into your own Spotify Premium.
Extend the music server in this folder. Requirements: - LISTENBRAINZ_TOKEN in .env; when a track has played for half its length or four minutes, send a listen to the ListenBrainz API from a queue stored in SQLite so a failed send is retried later. - Send "playing now" updates when a track starts. - Handle the `scrobble` Subsonic call the same way, including clients that submit a batch. - A /history page lists the last 200 plays and the queue length. - Update the README with how to get the token.
Add smart playlists to the music server in this folder. Requirements: - Built-in lists computed from the database: recently added (30 days), never played, most played this year, and 100 random tracks. - User-defined rules stored as JSON (genre, year range, rating at least, played fewer than N times) editable on a settings page, with a preview of the first 20 tracks. - Smart playlists appear as normal playlists in the Subsonic API and refresh when the library changes. - Update the README.
Add transcoding to the music server in this folder. Requirements: - Use `ffmpeg` (path from .env) to convert on the fly to Opus or MP3 when a client sends maxBitRate or format to the Subsonic stream call, or when the web player's quality setting is lowered. - Cache transcoded files in ./data/cache with a size limit in .env and least-recently-used cleanup. - Keep HTTP Range working for cached files and return a clear error if ffmpeg is missing. - Update the README with disk use per hour of music at each bitrate.
People pay to press play on anything. The subscription covers new releases the day they appear, makes discovery effortless and works on every phone, speaker and car with no setup. Owning music means buying or ripping each album, tagging files and keeping a server running, and most listeners would rather pay monthly than buy albums one by one.
Estimate · Free on a computer you already run; a small VPS adds a few dollars a month. The music has to come from somewhere, and buying albums costs far more than the build. The build is token usage on your agent plan.
Checked 2026-10-19 against Spotify Premium's docs: 1, 2, 3, 4
| Plan | Monthly | Annual, per month | What you get |
|---|---|---|---|
| Free | $0 | — | Ad-supported listening; playlists and saved music are kept. |
| Premium Individual | $12.99 | — | Ad-free listening, lossless audio, offline downloads, any song on demand and 15 hours of audiobooks a month. |
| Premium Duo | $18.99 | — | Two Premium accounts for a couple living at the same address. |
| Premium Family | $21.99 | — | Up to six Premium accounts at one address, with parental controls and Premium for under-13 members. |
| Premium Student | $6.99 | — | Premium at a student discount, with Hulu access subject to eligibility. |
Spotify Free streams the catalogue with ads; Premium removes ads and adds offline, lossless and pick-any-song listening.
Not really. People pay to press play on anything. The subscription covers new releases the day they appear, makes discovery effortless and works on every phone, speaker and car with no setup. Owning music means buying or ripping each album, tagging files and keeping a server running, and most listeners would rather pay monthly than buy albums one by one. The prompt on this page builds the closest honest substitute.
About $12.99 a month on the Premium Individual plan, $155.88 a year (checked 2026-10-19).
The catalogue: only music you have files for will play; Discover Weekly, Blend and Spotify's other recommendation playlists; Spotify Connect, for sending music to speakers and TVs; Podcasts and audiobooks in the same app; Friends, collaborative playlists and shared listening. If any of those matter to you, keep paying.
Yes: Navidrome (open source), Jellyfin (open source), Koel (open source).