The first Open Playlist reference implementation
Your playlists should outlive your music service¶
Open Playlist Engine is a self-hosted hub for moving, creating, organizing, backing up, and exporting music-library metadata. Connect a source and a target; the engine handles provider differences while keeping every match visible.
Metadata onlyNo audio is moved or streamed.
Review before writeUncertain matches wait for a person.
Local firstRun the complete stack on infrastructure you control.
One hub, every route¶
Provider-to-provider converters grow one integration for every pair. Open Playlist Engine instead maps each provider to the Open Playlist standard. A new provider becomes another spoke and can interoperate with every existing spoke.
01 · Import¶
Read a connected library, local playlist file, public URL, pasted list, snapshot, or approved generator draft into a provider-neutral model.
02 · Match¶
Resolve tracks and library entities using provider identifiers, ISRCs, text evidence, and prior accepted decisions.
03 · Review¶
Pause low-confidence results for approval, correction, or skipping. Nothing uncertain is silently written.
04 · Write¶
Queue durable, idempotent provider operations and stream item-level progress back to the browser.
Follow a request through the system →
Built for real music libraries¶
Move without starting over¶
Migrate playlists, liked tracks, saved albums, and followed or favorite artists where provider capabilities allow. Partial reruns and duplicate checks protect work already completed.
Keep a portable copy¶
Export playlists as CSV, TXT, M3U8, XSPF, or versioned Open Playlist JSON. Create checksummed local snapshots and restore selected collections through the same review pipeline.
Self-host in one stack¶
Docker Compose starts PostgreSQL, Valkey, the FastAPI service, background worker, and React frontend:
cp .env.example .env
# Replace OPE_SECRET_KEY and add only the provider credentials you need.
docker compose build --no-cache
docker compose up
The application is available at http://localhost:8080. Start with
configuration, then register the providers you want using the
connection guide.
Capability-driven by design
The interface enables only operations declared by the selected provider. Unsupported library types or destructive actions stay unavailable instead of being approximated.
Read the project documentation¶
Engine here. Standard there.¶
This website documents the Open Playlist Engine implementation—its runtime, workflows, safety model, and operations. The canonical format and API reference remain on the Open Playlist standard website.