AudioSilo

First run

1. Grab your admin credentials

On its very first start the server creates an admin account and prints the password plus an auth code exactly once — save them. (With --setup, a browser wizard sets the password for you instead.)

# In the server's logs on first start:
admin password: 9f3c… (shown once — save it)
auth code:      ABCD-EFGH (redeem to pair a device)

With Docker, run docker compose logs to see them. Sign in to the admin console at /admin with the username admin and that password.

2. Add a library

Point a library at a folder of audiobooks — the one you mounted at /library in Docker, for example. You can do this in the admin console, or via the API:

# Get a session token by logging in as admin:
TOKEN=...   # from POST /api/v1/auth/login

# Add a library, then browse it immediately:
curl -X POST https://your-server/api/v1/admin/libraries \
  -H "Authorization: Bearer $TOKEN" \
  -d '{"name":"Main","root":"/library"}'

There's nothing else to configure: the scanner auto-detects each folder's shape (single-file m4b, folder-per-book, or multi-file mp3 parts) and indexes titles, authors, chapters and cover art. A folder it misclassifies can be overridden per-folder from the admin console.

3. Pair a device

The connect flow turns an auth code into a durable, device-scoped session:

  • In the admin console, mint an auth code or click Copy invite to get a shareable link (/connect#code=… — the code rides in the URL fragment, so it never hits the server logs).
  • The connect screen shows a QR code with Open in app / Open web player. Scanning opens the native app (when it claims your domain) or the web player.
  • The client exchanges a single-use pairing token for a device-named session token. Username and password login is also supported.

4. Open the web player

The Docker image and native binaries serve the installable web player at /web. Open it in a browser and “Add to Home Screen” for an app-like experience, or wait for the native apps (see the download page). Either way, your progress, bookmarks and notes sync across every device you connect.

Tip: set public_url to your real external URL before minting invites, so the QR and copy-invite links point somewhere your devices can actually reach.