// 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.

bash — one command
# 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

// 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.

Story so far

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.

Ask this book

Chat with what you've read — "who is this again?", "what was the deal with the key?" — grounded in the text, with chapter citations.

Semantic search

Find books by meaning: "melancholy sci-fi with a hopeful ending." Plus more-like-this recommendations from the actual content.

Character lookup

Select a name mid-page → a spoiler-safe "who/what is this," up to where you are.

Auto-enrich

Infer genre/theme tags, a reading level and a one-line hook — local intelligence, no external metadata service required.

↳ your keys, your box

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 feed1.2 + 2.01.21.2 + 2.0
KOReader progress sync
Outgoing webhooks
Watch / ingest folder~scan
LicenseMITGPLv3GPLv3

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

Calibarr cover-grid library view
The library — a virtualised cover grid over thousands of books.
Calibarr details table view
Details view & faceted filters.
Calibarr book detail page
A book, with inline-editable metadata.

// 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.

No telemetry No accounts required Runs offline Reverse-proxy / OIDC-header auth amd64 & arm64 MIT licensed

// 05 — up in a minute

Get started

docker-compose.yml
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.