Library / SDK
rmcrackan/Libation avatar
rmcrackan/Libation

Libation decrypts Audible libraries with AAXClean and ships a Dockerfile for its CLI

Libation: Liberate your Library

6,444 stars338 forksC#GPL-3.0

At a glance

What is it?
A C# desktop app that imports an Audible library, removes DRM through AAXClean without ffmpeg, and ships a VitePress docs site plus a self-contained Linux CLI image configured through environment variables.
Who is it for?
Libation fits readers who own Audible titles and want DRM-free files without installing ffmpeg, and it holds up on the strength of its release cadence and its nine region list. It stops short of the things a bulk migration needs: the README documents no rollback, retry policy or scheduler, and leaves spatial audio titles and output containers to the docs site.
Can I use it commercially?
Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository last received commits 1 day ago.
What is it written in?
Mainly C#, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on November 14, 2026, and from our analysis. They are not legal advice.

From daily snapshots

Star history

  • rmcrackan/Libation6,444 ★ · +228
Star history
Repository2026-09-232026-11-14
rmcrackan/Libation6.2k6.4k

228 Stars in the last 52 days, measured from the daily GitHub snapshot. Compare with other projects

Editorial analysis

AAXClean does the decrypting so ffmpeg never has to be installed

Libation is a C# application for Audible libraries, and the decryption work is delegated to AAXClean. The stated reason for that choice is fast decryption without heavy dependencies like ffmpeg. Everything else is library handling: importing an existing library with cover art, then searching, filtering and tagging what came in. The code is GPL-3.0, the default branch is master, and the application runs on Windows, macOS and Linux. The README documents no headless mode and no command line arguments for the desktop build, while the repository's Dockerfile builds a LibationCli project for Linux.

Nine Audible regions, and silence about everything else

Region support is listed as US, UK, Canada, Germany, France, Australia, Japan, India and Spain. That list is the entire extent of what the README says about marketplaces, and it says nothing about what happens when you sign in with an account tied to a region that is not on it. Whether an unlisted region blocks the download, blocks decryption, or is simply untested is not answerable from the repository. The same gap shows up elsewhere: the FAQ and the Spatial Audio & DRM page both live on getlibation.com rather than here. Region coverage is something you check against your own account before planning a migration, not something the project will confirm for you.

The container exposes the paths the desktop build keeps to itself

The Dockerfile is where Libation's actual runtime configuration becomes readable, because books, database and config all arrive as environment variables. LIBATION_BOOKS_DIR holds the audio, LIBATION_DB_DIR and LIBATION_CONFIG_DIR separate state from output, and LIBATION_CREATE_DB=true lets a first run create its own database. LIBATION_DB_FILE is declared with no value, so the image pins no database filename, and SLEEP_TIME=-1 sits above them without a comment explaining what sleeps. The image also forces LANG and LC_ALL to C.UTF-8 so folder and file names stay predictable while liberating, installs jq, drops to uid and gid 1001, and starts liberate.sh with LibationCli symlinked into /usr/local/bin.

dockerfile
ENV SLEEP_TIME=-1
ENV LIBATION_CONFIG_INTERNAL=/config-internal
ENV LIBATION_CONFIG_DIR=/config
ENV LIBATION_DB_DIR=/db
ENV LIBATION_DB_FILE=
ENV LIBATION_CREATE_DB=true
ENV LIBATION_BOOKS_DIR=/data
ENTRYPOINT ["/libation/liberate.sh"]

The Dockerfile also shows that LIBATION_CONFIG_INTERNAL is separate from LIBATION_CONFIG_DIR.

One repository root holds a .NET solution and a VitePress site

The root package.json is not the application manifest. Its name is libation, its version is 1.0.0, it is marked private, and its only scripts build documentation: docs:dev, docs:build and docs:preview, all three calling vitepress. Vitepress is pinned at ^1.6.4 as a dev dependency, with vite forced to 6.4.4 and esbuild to 0.28.1 in the overrides block. Anyone reading 1.0.0 as the application version will be wrong, since Libation's latest release is 14.2.5. The C# side sits under Source/ alongside global.json, Directory.Build.props and dotnet-tools.json, while flake.nix, shell.nix and flake.lock back the Nix based Linux setup, and docs/, Documentation/ and .vitepress/ all exist side by side.

getlibation.com took over the README, including the version picker

All documentation has moved off this README onto getlibation.com, and the README's first call to action is a page that recommends a download for your system rather than naming a file. What stays in the repository is a link list: Getting Started, the latest release download, the issues tracker, the documentation index, an FAQ, and a page on spatial audio and DRM. Contributors get the same treatment, with pages for Development Getting Started, Contribute, Testing Changes, Website & Docs, and Linux Setup under Nix. The Testing Changes page is the one that matters for UI work, because it covers running the tests and seeding a demo library for UI testing.

What the repository never answers about spatial audio and DRM

Libation's pitch is that it decrypts your library and removes DRM so the files are yours, yet the README does not spell out what happens to spatial audio titles, which output containers are produced, or whether the account type changes what can be unlocked. That treatment lives on a dedicated page of the docs site. Two root files hint at plumbing nobody explains: .cdmurls.json sits beside .releaseindex.json, and neither is described in the README, with the first name suggesting it holds download URLs. Treat any assumption about the format of your liberated files as unverified until you have read the spatial audio page and opened something Libation produced.

No rollback, no retry policy, no scheduler in the documented surface

Two things a migration tool gets judged on are missing from the README. The first is rollback: the README does not describe restoring a database, reverting an import, or recovering when a run stops halfway. The second is recovery: the README documents no retry behaviour for interrupted downloads, no queue configuration, and no scheduling story beyond the unexplained SLEEP_TIME variable in the image. Libation also does not describe deduplication on re-import, since the import feature is defined as bringing in an existing library with cover art and nothing states what a second import of the same title does.

Building the CLI follows the Dockerfile publish step

Desktop builds arrive as release downloads, so the first run for most people is a download rather than a command. The one fully specified build path in the repository is the Linux image, which compiles the LibationCli project against the .NET 10 SDK and publishes a self contained, ready to run binary into Source/bin/Publish/Linux-chardonnay, then copies the contents of Docker/ beside it and runs it on the .NET 10 runtime image as an unprivileged user.

bash
dotnet publish \
    /Source/LibationCli/LibationCli.csproj \
    --os linux \
    --arch ${TARGETARCH} \
    --configuration Release \
    --output /Source/bin/Publish/Linux-chardonnay \
    -p:PublishProtocol=FileSystem \
    -p:PublishReadyToRun=true \
    -p:SelfContained=true

For the documentation site the equivalent is npm run docs:dev, docs:build or docs:preview. Contributors on Nix are pointed at the Linux Setup (Nix) page, and everyone else at the Development Getting Started page on the docs site.

Editorial conclusion

Libation fits readers who own Audible titles and want DRM-free files without installing ffmpeg, and it holds up on the strength of its release cadence and its nine region list. It stops short of the things a bulk migration needs: the README documents no rollback, retry policy or scheduler, and leaves spatial audio titles and output containers to the docs site. Check the docs site page on spatial audio and DRM against your own account before you point a full library at it.

Frequently asked questions

How do I install Libation on macOS?

Grab the release build for your platform from the latest release download, or use the which version should I download page on getlibation.com, which recommends a download for your system. macOS is one of the three fully supported platforms, alongside Windows and Linux.

Does Libation have a Windows build?

Windows is listed as fully supported, and the release downloads are published per platform. The repository also carries a Dockerfile that builds a self contained Linux CLI, so a Windows user has no reason to touch the container path.

How do I use Libation to download Audible books?

Import your existing Audible library, cover art included, then search, filter and tag the books. Decryption runs through AAXClean, so no ffmpeg dependency is pulled in, and the listed regions are US, UK, Canada, Germany, France, Australia, Japan, India and Spain.

How do I set up Libation for Audible audiobooks?

Install the build for your platform, then follow the Getting Started page on the docs site, since the README has moved all documentation to getlibation.com. Region support covers nine marketplaces, and the app removes DRM from the titles in your library.

Does Libation need ffmpeg?

No. Decryption is handled by AAXClean, which the project describes as fast decryption without heavy dependencies like ffmpeg. The audiobooks you import get decrypted and organised in one application.

Official sources

  1. License: GPL-3.0
  2. Project website
  3. README
  4. Releases
  5. rmcrackan/Libation on GitHub
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/rmcrackan-libation.svg)](https://hysenlabs.com/projects/rmcrackan-libation)

Star history chart for your README

markdown
[![Star history](https://hysenlabs.com/chart/rmcrackan-libation.svg)](https://hysenlabs.com/projects/rmcrackan-libation)

Was this useful?