
Your music. Your server. Your rules.
A self-hosted music hub that turns a folder of audio files into a complete listening, curation, and play experience — on your disk, on your network, under your control.
UI in English and Italian · exact semver in package.json
RE-KORD is not a cloud service — it's a home for your audio. Point it at a folder and it becomes your personal music server: a fast library with rich metadata, a serious player with visualizers and synced lyrics, studio tools to grow and maintain your collection, and even a rhythm game generated from your own tracks. Everything stays on your machine; every device on your network can join in.
One install gives you the server + web app. Around it: a desktop app (Server or thin Client), a Docker image, an installable PWA, and — since 4.0 — a native Android client.
🎧 Listen like you mean it Persistent player with queue, smart shuffle, repeat and crossfade; synced LRC lyrics; 8 audio-reactive visualizers (bars, waves, DiscoWall, karaoke…); sleep timer with 30s fade-out; Cast to Google Home (Chrome + Android APK); OS media integration (lock screen, headphone and car controls, Android Auto-friendly).
🗂️ A library that stays healthy
Browse by artist, genre, or mood; instant search; quality alerts for
missing covers and metadata; per-track and per-album metadata editors;
multi-source artwork and trivia lookup; bulk scans and title cleanup. The
library index and album/track metadata live in a local SQLite database
(rekord.db) with cached artwork thumbnails and filesystem watching.
🛠️ Studio built in
Discover and download new music (bundled yt-dlp), enrich metadata from
MusicBrainz/iTunes and friends, manage covers, curate a per-profile catalog —
all from the same UI, with the library re-indexed automatically.
🎮 Plectr A rhythm game charted on the fly from your tracks: three difficulties, holds and swipes, per-track records, and live sync with whatever is playing.
📊 Know your habits Play counts, top artists/albums/genres, favorites, listening streaks — plus an achievements system with XP, levels, and 60+ badges.
🎨 Make it yours 18 theme presets plus a fully custom theme (colors or background image), a unified Pro Workspace layout (icon rail, flat surfaces, organized canvas), glass surfaces with adjustable opacity, and shareable themes: export your look as a file, import it on any other server or profile.
🌐 Anywhere you are LAN access out of the box, one-click Cloudflare tunnel with QR code for remote listening, multiple local profiles, full backup/restore, and a self-updating client model: update the server once, every client follows.
appStateChange.artist/album/track, loose tracks per artist, flat files, or ID3 tags) and
indexes accordingly; layout config in .kord/library-layout.json; structure
probe when setting MUSIC_ROOT.file_path)
separate from the library path (rel_path); albums store folder_rel_path
for the actual folder; incremental scans diff against a files table.Tracce → Tracks
paths in SQLite; client state migrates old loose paths in queue, favorites,
and recent plays.REKORD_DISCOGS_TOKEN); release search with scored candidates and a picker
when several matches exist; album enrichment (label, country, genres, format,
catalog no., community stats, lowest price); tracklist applied to files
(track/disc numbers, duration); automatic fallback to MusicBrainz / TheAudioDB
/ iTunes when Discogs is unavailable.MUSIC_ROOT/.kord/rekord.db is the source of
truth for the library index, album/track metadata, and artwork thumbnails.
One-shot bootstrap from the legacy JSON cache or a full filesystem scan on
first run..kord/artwork/ and served
from /api/library/artwork/:id; falls back to /api/cover on disk when needed.infoItems stay on disk)./api/library/changes for index updates. Paginated library APIs are ready
for large collections.| Flavor | What it is | How |
|---|---|---|
| Server (desktop) | Full app: server + UI + bundled yt-dlp/cloudflared | Downloads on re-kord.com |
| Client (desktop) | Thin UI that connects to an existing server | Downloads on re-kord.com |
| Android client | Native APK, QR pairing, media widget | npm run pack:android:client → release/ |
| Docker | Single container: server + built UI | See below |
| PWA | Install the web app from any browser on your network | Open the server URL → install |
cp .env.docker.example .env # set REKORD_MUSIC_HOST to your music folder
npm run docker:build && npm run docker:up
# → http://localhost:3001
Bind mounts: REKORD_MUSIC_HOST → /music (library) and
REKORD_CONFIG_HOST → /config (accounts, settings, cookies). Useful knobs:
REKORD_PORT, REKORD_LISTEN_HOST=127.0.0.1 (loopback only), MUSIC_ROOT
(lock the library path).
npm install
npm run dev # browser: Vite :5173 + API :3001
npm run dev:app # Electron desktop + server
npm test && npm run lint && npm run build
On a fresh Ubuntu/Debian machine, if npm run dev fails on better-sqlite3,
install build tools then rebuild the native module:
sudo apt update && sudo apt install -y build-essential python3
npm run rebuild:native:dev
If the AppImage opens but shows “cannot reach the server”, check
~/.config/rekord/rekord-server.log. A common cause on external drives is
EACCES (library folder not writable): RE-KORD needs to create MUSIC_ROOT/.kord/.
Fix permissions, e.g. sudo chown -R $USER:$USER /path/to/music, then restart.
Library root: MUSIC_ROOT env or in-app Settings. Per-profile state and the
library database live in MUSIC_ROOT/.kord/ (rekord.db plus account data) and
survive reinstalls. After upgrading from 4.0, run Library metadata cleanup
once in Studio → Tools to migrate legacy JSON sidecars.
npm run pack:linux:server -- 4.3.0 # → release/RE-KORD-Server-4.3.0-linux-x86_64.AppImage
npm run pack:win:server -- 4.3.0 # Windows server (NSIS on Windows hosts, .7z from Linux)
npm run pack:linux:client -- 4.3.0 # thin desktop client
npm run pack:win:client -- 4.3.0
npm run pack:android:client -- 4.3.0 # → release/RE-KORD-Client-4.3.0-android.apk
Server packs bundle yt-dlp and cloudflared for the target OS. Windows
builds made from Linux get the correct app icon automatically. On Linux
without libfuse2, run AppImages via ./scripts/run-linux-appimage.sh.
React 19 + Vite on the front, Express + SQLite (better-sqlite3) on the
back, Electron for desktop, Capacitor for Android, Docker for servers — a single
codebase, local-first storage, no telemetry.
RE-KORD and its creators are not responsible for what users download, import, or manage. Each user is solely responsible for copyright and local law compliance. Use only content you have the rights or permission to use.
RE-KORD 4.3 by Creiv — local music, serious tools, play on the beat.
$ claude mcp add RE-KORD \
-- python -m otcore.mcp_server <graph>