← back

the librarian

Folio

A local-first music library manager and player for macOS and iOS that takes over from Apple Music as the source of truth — no streaming, no accounts, no telemetry — and adds the BPM, key, energy and cue data a working DJ actually needs.

Swift 6 macOS + iOS local-first DJ metadata

Folio owns the library outright. Tracks, playlists and every edit live in its own SQLite store with an append-only change journal that versions each field, so the history of a track is a readable log rather than a mystery. Persistent IDs imported from Music.app are preserved verbatim and minted IDs are checked against every ID the library has ever seen. Apple Music stays installed as a passive mirror, fed by an XML export that round-trips byte for byte — Folio can hand back exactly what it was given.

The part that matters most is how carefully it writes. Edits accumulate in the database and only reach your files when you say so: a review screen lists every frame that will change, old beside new, and a Dry Run rehearses the entire write — clone, edit, verify, discard — and reports the receipts without touching anything. Real writes happen on a clone, get verified by a layer that parses containers independently (audio payload byte-identical, foreign frames byte-identical, text frames text-identical), and commit by atomic rename. Any failed check abandons the write. Behind that sit two backup roots, SHA-256-verified and LZFSE-compressed, with a retention policy that keeps everything for thirty days and monthly snapshots forever.

On top of the librarian is a DJ's instrument. Thirty-one columns including BPM, Camelot key badges, energy, cue count and analysis state; a column browser that narrows genre into artist into tags; smart playlists whose rules reach every one of those fields with nested groups and reproducible random seeds. Playback is a gapless two-deck AVAudioEngine chain with Harmony Shuffle carried over from Harmony — queueing tracks whose key and tempo sit in a window around what's playing. And Traktor Pro 4 reads Folio's XML export directly, so the library travels to the booth without a re-tag.

highlights

library

yours, not rented

No streaming, no account, no telemetry. The library is a local SQLite database over files you own, with Apple Music demoted to a mirror it feeds rather than depends on.

writes

rehearsed before committed

Every tag write happens on a clone, is verified by an independent parser, and lands by atomic rename. A failed check abandons the write rather than half-applying it.

journal

an append-only history

Per-field versions in a change journal mean every edit is attributable and reversible, and the XML export can prove what Folio did and didn't touch.

dj data

the fields that matter

BPM, Camelot key, energy, beat grids and cue points as first-class columns — plus recognition of Traktor's PRIV, Serato's GEOBs and Mixed In Key's energy frames.

queue

Harmony Shuffle, again

The key- and tempo-aware queueing from Harmony, over a gapless two-deck engine with Sound Check gain staging and a ten-band equaliser.

bridge

plays well with the booth

Traktor Pro 4 reads the exported XML directly — ratings, BPM, comments, genres and tags all arrive — with clean interchange toward Serato and djay.

under the hood