KMServer is a full-featured drop-in replacement for Komga in Rust — same library formats, API, and database, plus additional capabilities. It is distributed as the kmrs binary: a single self-contained executable with no JVM and a small memory footprint.
kmrs: KM Rust Server.
Demo
Try KMServer at demo.kmworks.date: the latest image with the bundled kmweb UI, serving a small library of public-domain comics and ebooks in English and Japanese. Content and account state reset daily.
demo@kmworks.date |
|
| Password | kmworks-demo |
Features
- Drop-in replacement for
gotson/komga: same port (25600), same/configand/datamounts, sameKOMGA_*environment variables - Data-level compatibility: opens and upgrades existing Komga data directories (
database.sqlite,tasks.sqlite) in place, and the Java version can still open libraries written by KMServer - Library formats: CBZ/ZIP, CBR/RAR, PDF, and EPUB — scanning, metadata extraction, thumbnails, and Komga-compatible page/resource serving
- API parity: REST
/api/**, OPDS v1.2/v2, SSE, Kobo sync, and KOReader progress sync, with endpoints, DTOs, pagination, error shapes, and authentication behavior matching the Java version - Verified against the Java version: byte-for-byte Flyway migrations, a differential test harness comparing ~105 endpoints against a live Java instance, and schema contract tests
- Efficient by design: no JVM, bounded memory, and container caches that avoid reopening books for every page
- Beyond Komga: smart lists, reading trackers, CJK cross-search, outbound webhooks, reading statistics, and more
Supported formats
KMServer scans the same library file types as Komga. Each library can independently enable or disable CBX (CBZ/ZIP and CBR/RAR), PDF, and EPUB scanning.
| Format | Support |
|---|---|
| CBZ / ZIP | Image pages, ComicInfo.xml metadata, thumbnails, and page serving. |
| CBR / RAR | RAR 4 and RAR 5 image archives, with the same metadata, thumbnail, and page-serving flow. |
| Page analysis, thumbnails, and on-demand JPEG rendering through libpdfium. The Docker image, macOS app, and Windows packages include libpdfium; Linux release archives must provide it at runtime. | |
| EPUB | OPF metadata, tables of contents, landmarks, reading positions, and resource serving. Compatible readers render reflowable and fixed-layout books; image-based EPUBs can also use DIVINA page reading. |
Webtoon is a reading presentation, not a file format. For webtoons and long strips, choose Webtoon in a compatible reader; the book itself still uses one of the formats above.
For media-type restrictions and PDFium lookup details, see Known limitations.
Enhancements
On top of drop-in compatibility, KMServer adds capabilities the Java version does not have:
- Smart lists: saved searches evaluated live per user, with sharing scopes and generated covers
- Reading trackers: reading-progress sync with AniList, MyAnimeList, Bangumi, and MangaBaka
- Search: simplified ↔ traditional Chinese cross-search and CJK boundary unigrams (e.g.
3月matches3月的狮子) - Outbound webhooks: library events delivered as signed JSON payloads
- Reading statistics: per-user totals, daily activity, and reading streaks
- Sorting: natural sort of numbered titles (“Page 2” < “Page 10”) with a configurable ICU locale (
server.sort-locale)
See the full list under Enhancements.
Migrating from Komga
Already running the Java version? The Migration guide keeps your library, database, and clients.
Thanks
KMServer would not exist without Komga. Thanks to gotson and the Komga contributors, whose work defines the API, data model, and behavior KMServer follows. Its SQL migrations, OpenAPI document, and test fixtures come directly from the Komga source tree.