// the full tour

Everything Calibarr does

A self-hosted e-book library manager with a modern stack — Next.js · Fastify · SQLite (FTS5) · Docker — and a privacy-first AI reading companion. Here's the whole surface area.

// 01

Library & browsing

Virtualised cover grid

Windowed rendering + infinite scroll (pages of 200) keeps thousands of books buttery smooth.

Four views + density

Covers, small covers, a details table, and grouped-by-series — with a compact/cozy/roomy density toggle. Remembered per browser.

Search-as-you-type

FTS5 across title, author, series, tags & description, ranked by relevance.

Faceted filters

Author, tag, format, language, series, has-cover, reading status & rating — with live counts that track the current search.

Shelves

User-defined collections with drag-to-reorder, add from the bulk bar or right-click, and OPDS nav sections.

Saved searches

Pin any search + filters + sort as a named virtual library.

Ratings & identifiers

1–5★ ratings and arbitrary identifiers (ASIN/Goodreads/Google/DOI…) as click-through links.

Command palette

⌘K to search and run per-book actions or import — keyboard-first.

// 02 — the differentiator

AI reading companion

Off by default. Bring a cloud key (Anthropic/OpenAI) or run it fully local (Ollama). Spoiler-safe by construction — it only sees text up to your position.

Story so far

A spoiler-free recap up to your exact reading position.

Ask this book

Grounded Q&A over what you've read, with chapter citations (RAG, or whole-context on a chat-only provider).

Character / term lookup

Select a name or word → a spoiler-safe "who/what is this."

Semantic library search

Search by meaning across the library; each hit shows the passage that matched.

More like this

Content-similarity recommendations from per-book embeddings.

AI auto-enrich

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

// 03

Read in the browser

EPUB reader

epub.js — paginated, arrow/edge-click nav, last location & progress remembered per book.

Reader customization

Theme (light/sepia/dark), font, size, line-spacing, margins and right-to-left, saved across books.

PDF reader

pdf.js continuous scroll with a real text layer.

Auto reading status

Opening a book marks it reading; reaching the end marks it finished.

// 04

Import & metadata

Drag-drop import

Files or whole folders (recursively, batched) with a live per-file log and summary.

Pure-JS extraction

EPUB OPF, PDF Info + XMP, and MOBI/AZW3 EXTH (title/authors/ISBN/cover) — no Calibre needed.

Filename fallback

Robust Author↔Title disambiguation (Mc/Mac/O', articles, sort form, initials).

Four metadata sources

Open Library, Google Books, ISBNdb & Hardcover, plus Auto — with keyless cover fallbacks.

Duplicate handling

Exact-hash skip and same-book-different-format merge (by ISBN or title+author).

Import a Calibre library

Read metadata.db and copy in every book, cover & format — copy or hardlink, read-only w.r.t. Calibre.

// 05

Convert & deliver

Format conversion

EPUB/MOBI/AZW3/PDF via a native (no-Calibre) path where possible, else Calibre — queued with live progress.

Send to Kindle

Email any book (auto-converting to EPUB first if needed) via your own SMTP.

OPDS 1.2 & 2.0

Atom and JSON feeds for KOReader, Marvin, Thorium, etc. — search, sort, per-format downloads.

KOReader progress sync

A built-in kosync server so your reading position follows you across e-readers.

// 06

Automate & integrate

Watch / ingest folder

Drop files into INGEST_DIR → auto-imported and consumed. Great for arr-style pipelines.

Outgoing webhooks

POST signed JSON on book.added / book.converted — per-hook event filters + a test ping.

Auto-fetch on import

Optionally fetch missing metadata & covers for new books in the background.

Auto-send on import

Optionally email every newly imported book straight to your Kindle.

// 07

Self-host & operations

Multi-user auth

Local accounts (scrypt), admin management, OPDS HTTP-Basic, reverse-proxy trusted-header mode, or fully open.

Backups

Hot SQLite backups — create/download/restore, scheduled with retention (restore snapshots first).

Health & logging

Structured logs + an admin health dashboard (versions, disk, job stats, recent errors).

Versioned migrations

Schema tracked by PRAGMA user_version, applied transactionally on start.

One-container Docker

Multi-arch (amd64 · arm64) image with Calibre baked in; runtime-configurable web→API URL.

MIT licensed

Your code, your rules. (The image bundles Calibre, which is GPLv3 — details in the README.)