Two export modes, chosen by you
Mirror makes the USB playlist exactly match the local one. Additive appends what's missing and touches nothing else — so you can build a stick up across sessions and machines without wiping earlier additions.
Local-first · MIT · No cloud
Crayt indexes your music, analyses it, writes USB drives your players can read, and repairs them when they break. Then it watches your decks live over Pro DJ Link while you play.
A visualisation of the Decks view. Crayt reads status packets straight off the network — no MIDI mapping, no controller driver.
Point Crayt at your folders. It scans fast and keeps a local SQLite library — nothing leaves the machine.
Assemble the playlist you're actually taking out. Drag, reorder, search by title, artist, album, BPM or key.
Only the tracks that playlist still needs get analysed — beatgrid, key and waveforms. Not the whole library, every time.
Write the stick in mirror or additive mode, with a timestamped backup of the old database taken first.
Mirror makes the USB playlist exactly match the local one. Additive appends what's missing and touches nothing else — so you can build a stick up across sessions and machines without wiping earlier additions.
Read-only reports separate operationally passable from strict parity clean. A stick can play fine and still not be byte-faithful — Crayt says which, instead of one vague green tick.
A catalogue of fixes for known PDB/eDB structural faults, each previewed before it writes. Hardware-validated, and it has brought real broken sticks back.
Drag playlists into order on a USB that's already exported. Crayt patches t07.sort_order in PDB in place and re-syncs eDB's sequenceNo — so players and rekordbox both see the new order.
Existing PDB and eDB files are copied to PIONEER/rekordbox/backups/ with a timestamp before any export or repair. Recovery isn't guaranteed, but the escape hatch is there.
Rust and Tauri, so it builds native on macOS, Windows and Linux — the platform rekordbox has never shipped for.
Crayt listens on UDP 50002 and decodes the status packets AlphaTheta
players broadcast — type 0x0a, 293 bytes, continuously.
That gives live per-player track, BPM, pitch, effective BPM, beat position, on-air and play state, pushed to the interface at 10 Hz. The player never sends a track title — only a rekordbox content id — so Crayt resolves the name out of its own library.
Underneath that sits a longer piece of work: understanding LINK EXPORT well enough that a laptop could serve a library to a player the way rekordbox does. The findings are documented in the repo as they land.
Port discovery is TCP 12523 answering "RemoteDBServer"; the library transfer itself is NFSv2 on 2049 with UTF-16LE filenames.
No encryption and no authentication was found anywhere in the exchange.
An OPUS-QUAD sent 589 queries to a stand-in announcing byte-identically to rekordbox — it engaged rather than ignoring it.
The player still treats the stand-in as unaccepted: it sends 0x10 where it sends 0x0a to rekordbox. What promotes a device to established peer is the unsolved part — replying to 0x10 is not it.
Interoperability research on hardware owned by the author, documented in the open. Nothing here circumvents a protection measure — none was found to circumvent.
rekordbox is a far bigger application — streaming, DVS, video, lighting, cloud sync. Crayt re-implements one slice of it: getting a library onto a stick a player can read, and keeping that stick healthy. Scoped to that job:
| Crayt | rekordbox | |
|---|---|---|
| Platforms | Windows, macOS, Linux | Windows, macOS |
| Source | Open, MIT | Closed, proprietary |
| Runs fully offline | Yes — no account, no cloud | Optional cloud/account features |
| Export sync mode | Explicit mirror or additive, per export | Not user-selectable the same way |
| Reorder playlists on the USB | Drag and drop, written back in place | Re-export from the library |
| USB diagnostics | Operational + strict-parity reports | Not exposed to users |
| USB repair | Preview-first repair catalogue | No equivalent |
| Pre-write backups | Automatic, timestamped | Not automatic the same way |
| Analysis scope | Only what the target playlist needs | Broadly, as tracks are added |
There are no published binaries — Crayt is a personal fork and ships as source. You'll need Rust (stable), Node 24 LTS, and the Tauri v2 system libraries for your OS.
# build and run the desktop app
cd desktop/src-tauri
cargo build
cargo run
# release bundles additionally need the Tauri CLI
cargo install tauri-cli --version '^2'
Crayt writes to DJ USB drives and library databases. Broken exports, corrupted
databases and data loss are possible, and the software comes with no warranty.
Keep your own backups. The automatic pre-write backups under
PIONEER/rekordbox/backups/ have rescued real drives, but they are not a guarantee.