KROMA

a single Rust binary · open source · GPL-2.0

Your media library, at home.

KROMA brings the indexer, the download engine, the VPN, the server and the player together under one self-hosted server. Direct-play, native HEVC, on the web, on mobile and on every television.

  • starts in milliseconds
  • zero containers
  • video is never re-encoded

A single server

Six containers. One server.

A typical setup bolts together half a dozen services: six configs, six things that break, never at the same time. KROMA replaces them with a single Rust server that starts in milliseconds and keeps no transcoding farm warm.

Before · six containers

  • Sonarr · Radarracquisition
  • Prowlarr / Jackettindexers
  • qBittorrentdownloading
  • GluetunVPN + kill-switch
  • Jellyfinserver + player
  • Overseerrrequests
KROMA1 server
  • Cardigann + Torznab indexers
  • librqbit BitTorrent engine
  • Quality decisions, import and renaming
  • WireGuard → SOCKS5 bridge with kill-switch
  • Direct-play player, native HEVC

Everything included

The whole chain, one server

Find, download, organize, stream. Every link of a self-hosted media library, written once and shared, with nothing to wire between them.

Automatic acquisition

Ask for a title: KROMA searches every one of your indexers, scores each release on resolution, codec, size, seeders and your keywords, grabs the best one, then imports and renames it Plex-style.

decision engine · wanted-list

VPN with a real kill-switch

Paste a WireGuard config and all torrent traffic goes through a managed WireGuard→SOCKS5 bridge. A failed tunnel check pauses every download on the spot: no leak, no Gluetun to wire up.

WireGuard → SOCKS5

Native indexers

A reimplemented Cardigann engine runs the tracker definitions from Jackett and Prowlarr, directly.

Cardigann + Torznab

Download engine

A librqbit BitTorrent client fetches releases directly, driven by KROMA. Transmission and qBittorrent stay supported.

librqbit

Direct-play player

Original files are streamed by byte range and decoded by the client. Video is never re-encoded.

HEVC/H.265 · range-streamed

On-device AI

Recommendations and semantic search over local embeddings, subtitles generated by Whisper. On your machine, no cloud.

on-device · Whisper

Multi-user

Accounts, profiles, PIN locks, WebAuthn passkeys, invitations and per-user permissions. Share without opening everything up.

profiles · PIN · passkeys

Live statistics

Downloads, library scans and playback pushed in real time over a WebSocket bus, to dashboards and clients.

WebSocket bus

Direct-play, HEVC first

The server never transcodes video.

KROMA streams the original files by byte range; each client decodes HEVC/H.265 itself, in 10-bit and HDR, in hardware on Samsung and LG televisions. No transcoding pipeline, no CPU farm to keep warm.

One exception: an audio-only HLS stream for browsers that cannot decode AC3/EAC3/DTS. The video is copied, only the audio is transcoded to stereo AAC.

Decoded by the client

HEVC / H.26510-bit · HDRAV1H.264AACAC3 / EAC3
NAS CPU during playbackidle

Nothing to re-encode: playback never wakes the processor. Your NAS stays free for everything else.

Platforms

The same KROMA, on every screen

The components and design tokens exist once, in a shared kit, and render natively, from the browser to the living room driven by a remote.

Screens

Web

browser · responsive

Mobile

iPhone · iPad · Android

Desktop

macOS · Windows · Linux · Steam Deck

Televisions

Samsung

Tizen

LG

webOS

Android TV

Google TV

Apple TV

tvOS

Cast

phone → TV

Server

Synology

.spk package

Docker

multi-arch image

Raspberry Pi

arm64 64-bit

Self-hosted

Built to be owned, not rented.

Open source, under the GPL-2.0 license. No account to create, no subscription, no central service that could shut down. Your library and your activity never leave your network.

Free
Open source, GPL-2.0 license
Private
Nothing leaves your network
No central service
No account, no subscription
Offline
Playback works without internet
start KROMA
$ docker run -d -p 4040:4040 \
    -v /volume1/video:/media \
    -v kroma-data:/data \
    ghcr.io/maxscharwath/kroma

Take back control of your media library.

One binary to launch, your hardware, your files. No subscription, no data leaking out.

© 2026 · free software · GPL-2.0 license