Skip to content

KMServer

Your library. One server.

A lightweight, Komga-compatible server with the web UI included.

Komga-compatibleExisting librariesExisting databaseCross-platformSingle binary
terminalone command
docker run -d \
  --name=komga \
  --user 1000:1000 \
  -p 25600:25600 \
  --mount type=bind,source=/path/to/config,target=/config \
  --mount type=bind,source=/path/to/data,target=/data \
  --restart unless-stopped \
  ghcr.io/kmworks/kmrs

Why KMServer?

The Komga experience with a much smaller footprint: one static binary instead of a JVM runtime.

One static binary

KMServer is distributed as the kmrs binary: no runtime to install, nothing else to provision.

Runs anywhere

Linux, macOS, and Windows, on x86_64 and aarch64. Docker image included.

Web UI included

The Docker image bundles the kmweb UI, so your library works in a browser out of the box.

Komga-compatible, verified

Same port, same mounts, same environment variables, same API.

API parity, verified

REST, OPDS v1.2/v2, SSE, Kobo and KOReader sync. A differential harness compares about 105 endpoints against a live Java instance of komga 1.27.1.

python3 tests/diff/diff.py \
  --java-jar komga.jar \
  --rust-bin ./kmrs

Drop-in replacement

Same port (25600), same /config and /data mounts, same KOMGA_* environment variables. Your existing setup carries over.

Keep your library. Keep your database.

Point KMServer at an existing komga data directory and it upgrades database.sqlite in place with byte-for-byte Flyway migrations. The Java version can still open libraries written by KMServer, so you can switch back at any time.

Same library

Your files stay where they are.

Same database

Upgraded in place, readable by both servers.

Same API

Your clients reconnect without changes.

Up and reading in one command

Install

One docker run, or a single static binary from the releases page.

Keep your library

Point /config at your existing komga data. KMServer upgrades it in place.

Pick a reader

The bundled web UI, KMReader, KOReader, Kobo, or any OPDS client.

docker run -d \
  --name=komga \
  --user 1000:1000 \
  -p 25600:25600 \
  --mount type=bind,source=/path/to/config,target=/config \
  --mount type=bind,source=/path/to/data,target=/data \
  --restart unless-stopped \
  ghcr.io/kmworks/kmrs
services:
  kmrs:
    image: ghcr.io/kmworks/kmrs:latest
    container_name: kmrs
    user: "1000:1000"
    ports:
      - "25600:25600"
    volumes:
      - ./config:/config
      - ./data:/data
    restart: unless-stopped
# grab the archive for your platform from the releases page:
#   https://github.com/kmworks/kmrs/releases/latest
./kmrs   # serves on http://localhost:25600

Technical details

Improvements KMServer adds on top of compatibility.

CJK cross-search

Simplified and traditional Chinese match each other, and CJK unigrams find titles mid-run. Search

简繁

Natural sort

Numbered titles order the way you expect: "Page 2" before "Page 10", with a configurable ICU locale.

Heap profiling built in

jemalloc sampling with a pprof endpoint, always on in release builds.

The full lists live in the docs: Enhancements, Compatibility, Known limitations, Development.

Bring your own reader

Compatible with the Komga API and its reader ecosystem.

Start serving your comics.

Type to search…

↑↓ navigate↵ selectEsc close