Oudy

In development

Own your audiobooks.

Oudy is a self-hosted audiobook system. One daemon owns the library, the files, and your position in every book — and everything it can do goes through a single documented HTTP API.

The daemon and its command-line tool are built. A terminal player browses a library and resumes a book where it was left. A browser client and phone apps come next.

The daemon

It owns the library, the database and the files. Import is the only thing that writes to them, it is journalled, and it can be undone. Nothing is deleted on the spot: what an import leaves behind goes to trash and is pruned on a schedule you set.

The API

Complete, versioned, and documented well enough to write a client against without reading the server’s source. An endpoint, field or error code without a description fails the build, so the specification cannot drift from the thing it describes.

The clients

No client is privileged. The administration tool is an ordinary HTTP client — there is no socket to talk to and no database to edit by hand — so anything it can do, a client you write can do too.

Audiobooks only

No podcasts, no video, no ebooks as library items. The data model is books, series, authors and narrators, and it is shaped for nothing else. A book is one timeline however many files it arrived as: chapters, a position and a duration that mean the same thing whether it came as one .m4b or five hundred and sixty .mp3s.

One position per book

A book’s position means the same thing on every client, to the millisecond. Time is stored and sent as integer milliseconds everywhere, never as floating point, so agreement between devices is structural rather than hopeful. A device that got further while another was closed is not rewound to catch it up — the one that fell behind moves forward.

It does not destroy your library

Scanning only ever reads: the scan that checks a library against the catalogue cannot write, by construction rather than by care. The database is backed up daily and the audio never is, because the audio is already on disk. And if the database is lost outright, the catalogue can be rebuilt from sidecar files written beside the books themselves.

How it works

You drop new books into one directory. Import reads them, works out what they are, shows you what it would do, and only then places them in the library. From that point the daemon serves everything over HTTP.

Access is over a private network rather than the public internet, so there is no port to open and nothing to harden against strangers.

State

What is built and what is not
Daemon and CLI Import, metadata, playback, progress, review, verify, backups Built
Terminal player Browses a library, plays a book, resumes it where it was left Built
Browser client Player and library Next
iOS and Android Players, with lock-screen and car controls Planned

The cheapest client was built second on purpose. If a terminal program can browse the catalogue, resume a book at the right position and report progress using only published endpoints, the API is real before three more expensive clients depend on it.

What Oudy will not do

Written down so it is not quietly reintroduced later.

Licence

Oudy is free software under the GNU Affero General Public License, version 3 or later. The Affero clause is the point rather than an accident: Oudy is server software, and anyone who runs a modified version for other people to use is expected to offer them its source.

Public source repositories are not up yet. They will be linked here.