A spoiler-free recap up to your exact position — pick a book back up after weeks away and get caught up on plot and characters, with zero chance of a reveal from ahead.
// self-hosted e-book library manager
Your library.
Your box.
Your own AI reading companion.
Import, organise, convert and read your e-books in the browser — then let a privacy-first AI companion recap the story so far, answer questions about what you've read, and find books by meaning. Runs entirely on your hardware, cloud key or fully local. Nothing phones home.
# run the published multi-arch image
docker run -d --name calibarr -p 3000:3000 \
-v "$PWD/library:/library" -v "$PWD/data:/data" \
registry.gitlab.com/haggistech/calibarr:latest
- EPUB · PDF · MOBI · AZW3formats in, convert between
- Local or cloud AIOllama · OpenAI · Anthropic
- MIT + Dockermulti-arch · amd64 · arm64
// 01 — the thing no one else self-hosts
An AI reading companion that never leaves your machine
The AI features you've seen locked inside cloud readers — running on your library instead. Point it at a local model (Ollama) and nothing ever leaves the box; or bring an OpenAI/Anthropic key. Off by default. Spoiler-safe by construction — it only ever sees the text you've actually read.
Chat with what you've read — "who is this again?", "what was the deal with the key?" — grounded in the text, with chapter citations.
Find books by meaning: "melancholy sci-fi with a hopeful ending." Plus more-like-this recommendations from the actual content.
Select a name mid-page → a spoiler-safe "who/what is this," up to where you are.
Infer genre/theme tags, a reading level and a one-line hook — local intelligence, no external metadata service required.
Bring a cloud key or stay 100% local. Keys are stored server-side and masked. This is the feature no other self-hosted manager has.
// how it stacks up
Calibarr vs. the usual suspects
The honest version. Calibre-Web and Kavita are excellent — this is just where Calibarr differs.
| Calibarr | Calibre-Web | Kavita | |
|---|---|---|---|
| AI reading companion recaps · ask · semantic search | ✓ | — | — |
| Works without a Calibre library | ✓ | — | ✓ |
| In-browser EPUB & PDF reader | ✓ | ✓ | ✓ |
| Multi-source metadata & covers | ✓ | ~ | — |
| Built-in format conversion | ✓ | ~ | — |
| Send to Kindle (email) | ✓ | ✓ | — |
| OPDS feed | 1.2 + 2.0 | 1.2 | 1.2 + 2.0 |
| KOReader progress sync | ✓ | — | — |
| Outgoing webhooks | ✓ | — | — |
| Watch / ingest folder | ✓ | ~ | scan |
| License | MIT | GPLv3 | GPLv3 |
✓ built in · ~ partial or via add-on · — not available. Feature sets change; corrections welcome.
// 02 — everything else it does
A serious library manager underneath
Browse thousands, smoothly
Virtualised cover grid with infinite scroll, four views, and instant FTS5 search across title, author, series, tags & description.
Filters, shelves & saved searches
Faceted sidebar with live counts, drag-to-reorder shelves, and pin any search + filters as a named virtual library.
Read in the browser
EPUB & PDF readers with themes, fonts, spacing, margins and RTL — position and progress remembered per book.
Rich metadata & covers
Open Library, Google Books, ISBNdb & Hardcover, with keyless cover fallbacks and one-click library-wide "fetch missing."
Convert & send
Convert between EPUB/MOBI/AZW3/PDF (native or Calibre) and send to Kindle — automatically on import, if you like.
Read on any device
OPDS 1.2 & 2.0 feeds, plus a built-in KOReader progress-sync server so your place follows you across e-readers.
Automate it
A watch/ingest folder auto-imports drops; outgoing webhooks fire on add/convert for your arr-style pipelines.
Yours to run
Multi-user accounts, hot DB backups with retention, a health dashboard, and a one-container Docker deploy. MIT-licensed.
// 03 — see it
Built to actually live in
// 04 — self-hosted, on purpose
Your books, your metadata, your reading data
Everything lives in a SQLite database and plain files on a volume you control. No account, no telemetry, no cloud dependency. Point the AI at a local model and the whole thing runs air-gapped.
// 05 — up in a minute
Get started
services:
calibarr:
image: registry.gitlab.com/haggistech/calibarr:latest
ports: ["3000:3000"]
volumes:
- ./library:/library
- ./data:/data
restart: unless-stopped
01 docker compose up -d — Calibre and the
correct volumes are baked in, so conversion works out of the box.
02 Open http://localhost:3000 and follow the
first-run wizard.
03 (Optional) enable the AI companion in Settings → AI — point it at Ollama for fully-local, or paste a cloud key.