← Back to all sparks
C

Calibre-Web

COLLAB
Velocity2.5

Web app for browsing and reading a Calibre ebook library

A yearly release cadence spent almost entirely on Kobo sync and self-hosting hardening.

self-hostedebook-librarykobo-syncreverse-proxy-authmaintenance-cadencemetadata-extraction
Current state
Calibre-Web is a self-hosted web frontend for an existing Calibre ebook library. It ships roughly one consolidated release a year, each a large bundle in which a short new-feature list sits on top of a much longer set of bug and security fixes. The most recent releases added MOBI and audio metadata extraction on upload, reverse-proxy login via a shared secret header, multi-book editing, and Calibre 9 compatibility. Kobo e-reader sync absorbs a disproportionate share of every release.
Where it's heading
Development here is maintenance-shaped rather than expansion-shaped, and the shape is getting more pronounced: 0.6.27 lists two new features against roughly thirty fixes, where 0.6.25 a year earlier listed close to twenty additions. The sustained investment sits in two places — keeping Kobo sync working against a vendor API that keeps moving underneath it, and making the app behave correctly behind reverse proxies and in container deployments. Compatibility work with current Calibre and current Python versions is treated as release-blocking, which is the right read for a project whose value depends entirely on staying installable.
Prediction
Given the cadence, expect the next release six to twelve months out as another consolidated bundle led by Kobo sync repairs and Python or Calibre compatibility work rather than new capability. Reverse-proxy authentication is the one area with visible recent momentum, so further authentication-integration options are the most plausible genuinely new addition.

Recent moves

  1. 10d ago

    MOBI metadata on upload, reverse-proxy shared-secret login

    The first release in six months, and it fits the established pattern: two new features against roughly thirty fixes. MOBI metadata extraction closes a gap in upload handling, while reverse-proxy login via a shared secret header gives self-hosters an authentication path that bypasses the app's own login form. A large share of the fixes touch Kobo sync alone, which is where this project's maintenance burden has consistently landed.

    View source ↗
  2. 6mo ago

    Multi-book editing, Calibre 9 compatibility, API-key leak fixed

    Multi-edit in the book list and Calibre 9 compatibility lead the release, though the latter is table stakes rather than a feature — Calibre-Web is only useful against a current Calibre library. The security fix matters more than its placement at the bottom suggests: API keys were being included in config exports. Instapaper configuration lands inside Kobo sync, continuing that area's outsized claim on each release.

    View source ↗
  3. 0y ago

    Kepub reading, bulk book actions, official Python 3.12 support

    A year after 0.6.24 and carrying the widest new-feature list in this window: Kepub support in the EPUB reader, bulk delete/archive/mark-read, lazy-loaded covers, and FreeBSD binary paths. Official Python 3.12 support is the load-bearing item, since packaging compatibility is what keeps a self-hosted project installable at all. Even at its most expansive, the additions are convenience and platform coverage rather than new capability.

    View source ↗
  4. 1y ago

    Audio-file metadata extraction and multi-format uploads

    Extends upload handling to audio metadata across ten formats and adds multi-format upload with metadata merging on the book edit page — the clearest widening of the capability surface in this window, though it builds on audio support that already existed rather than opening a new one. The cookie-prefix environment variable is a small tell about the intended operator: someone running several instances on one server. Python 3.12 work starts here and completes in 0.6.25.

    View source ↗
  5. 1y ago

    EPUB reader themes and font sizing, multi-address Kindle sending

    A reader-experience release: locally stored EPUB themes, a font-size switch, and sending to several Kindle addresses at once. Failed tasks now surface their error in the UI rather than hiding it, the kind of change that reduces support load for self-hosters running the app unattended. Its recorded timestamp sits seconds from 0.6.22's because both were captured in a single crawl, not because they shipped together.

    View source ↗
  6. 1y ago

    Split library locations, metadata backup, upload mimetype checks

    Split library locations and scheduled metadata backup both target operators with large or awkward library layouts rather than readers, which is consistent with where this project spends its attention. Two security fixes land here: mimetype validation on upload, and a move from lxml to bleach to contain stored XSS in the comments field. Treat its publish date as a crawl artifact — it was captured alongside 0.6.23 and predates it by considerably more than the timestamps imply.

    View source ↗