Free and open source · Rust · macOS, Linux

Aède

A local music library, in one command.

It reads your music folders and turns them into a catalog you can actually question — not a player, not a tagger, not a cloud. An aède (Greek ἀοιδός) was the poet-singer of archaic Greece: he held the whole repertoire in memory and performed it. Keeping and playing, in one word.

Download Source on GitHub

M0.6 is done: the catalog, the questions, what you write about your music, and getting it back out to a player. M1 — identification — has started. No playback yet, and the network is reached by one command and only when you run it — deliberately, and the roadmap says what comes next.

What it does

$ aede scan ~/Music
→ 18 402 tracks · 1 512 albums · 604 artists · 52 days

$ aede query "genre:metal year:1990..1999 -label:earache"
$ aede doctor              — missing tags, duplicates, incomplete albums
$ aede check               — has anything been damaged since it was written?
$ aede copy /Volumes/Card --query "loved" --compress opus

Roadmap

Each milestone is a position, not a promise of a date. The reasoning behind every one of them is written down in the design notes — most of it exists to explain a refusal.

  1. M0 The catalog done

    Scanning, the graph model, statistics, diagnostics, and command-line navigation of the lot. Eleven formats read by hand-written parsers, so a truncated file is a message rather than a panic.

  2. M0.5 What you write done

    Favourites, ratings, notes and tags in an annotation store keyed so that a scan can never destroy them; play history; the query grammar with ranges, negation and OR; saved queries; import and export of all of it.

  3. M0.6 Getting music out done

    aede copy to a player, a card or a drive, keeping the tree; companion files chosen by the catalog rather than by extension; names adapted to what the volume actually accepts, probed rather than guessed; verification and resume; encoding through ffmpeg on the way out. Plus spectrograms, playlists written into the album folders, and lyrics read from tags and .lrc files.

  4. M2 The API

    An HTTP server with JSON and WebSocket, frozen early because it is the contract between the core and every future client.

  5. M2.5 Other servers' languages

    Subsonic and OpenSubsonic first — eighty-odd existing clients on every platform, which is the shortest path from no mobile client to thirty of them. Jellyfin afterwards, and timeboxed. Both as translations over the API, never as a second core.

  6. M3 Playback

    Local output, a queue, gapless playback and loudness normalisation (EBU R128). The decoder it needs also brings the FLAC MD5 check, which verifies the audio itself rather than the container.

  7. M4 The network

    Remote playback endpoints: slimproto first, since it opens a fleet of existing devices without inventing anything, then UPnP/OpenHome for commercial streamers.

Explicitly out of scope: RAAT and “Roon Ready” certification are proprietary and licensed — there is no technical path to them.

Getting it

One executable. Unpack it, put it on your PATH, run it. Nothing is installed and nothing runs in the background.

$ tar xzf aede-0.1.0-macOS-AppleSilicon.tar.gz
$ ./aede scan ~/Music
$ ./aede stats

Builds for macOS (Apple Silicon and Intel) and Linux are on the releases page, each with a checksum beside it. Or build it yourself — Rust 1.89, two dependencies, and the first build is the only step that needs the network:

$ git clone https://github.com/craft-and-code/aede.git
$ cd aede && cargo build --release

No Windows build yet. It compiles there, but catalog paths are /-separated by design while the scanner stores the platform's own spelling, which makes everything folder-shaped wrong — album grouping, folder restrictions, playlists. Twelve tests say so, and the design note has the reasoning and the fix. Shipping a binary that builds the catalog wrongly, on the platform where nobody would think to check, is worse than shipping none.

The manual lives in the repository: documentation, the query language, the architecture.