Installation

Install KROMA on every screen you own.

Install the server once. Then every client, TV, computer, phone, browser, points at it and remembers the address.

Latest release

0.1.38Release notes
Every build36 releases and 80 canary builds, with their checksums.

Install the server

A single Rust server, on a NAS, in Docker, or built by hand. It serves the API, the web app and the video stream on port 4040. Video is never transcoded.

Docker / Docker Compose

Recommended

The image is multi-architecture (linux/amd64 + linux/arm64) : it runs just as well on x86 as on a Raspberry Pi 4/5 with a 64-bit OS. Save this file, then bring the stack up.

A released version

ghcr.io/kromatv/kroma:0.1.38

The image built for that release tag. It never changes under you.

Canary

ghcr.io/kromatv/kroma:latest

Rebuilt on every push to main, so a pull gets the current state of the code. Public, multi-architecture, no token.

docker-compose.yml
services:
  kroma:
    image: ghcr.io/kromatv/kroma:latest
    restart: unless-stopped
    ports:
      - "4040:4040"
    environment:
      # Library roots INSIDE the container (must match the bind-mount below).
      KROMA_MEDIA_DIRS: /media
    volumes:
      - kroma-data:/data
      - /volume1/video:/media
volumes:
  kroma-data:
bash
docker compose up -d

MediaKROMA_MEDIA_DIRS points at your media inside the container; mount the folder read-write if you use the built-in requests / downloads.

Synology (.spk)

The package is self-signed, not Synology-certified: you have to allow it once.

  1. 1Package Center → Settings → Trust Level : allow Any publisher.
  2. 2Package Center → Manual Install, pick the .spk, follow the wizard.
  3. 3Open KROMA; configure the media folders in its admin console.

From source (cargo)

A single Rust binary: build it yourself. SQLite and TLS are bundled; ffmpeg/ffprobe are still required for metadata and HLS audio.

bash
# Rust ≥ 1.86 + ffprobe. From the repo:
cd server
KROMA_MEDIA_DIRS=/mnt/media cargo run --release
Server options (server/README) →

Install the apps

Grab the right package from GitHub Releases (one vX.Y.Z tag carries every artifact). The televisions want developer mode switched on once; everything else just installs. Then the client asks for the server address on first launch. GitHub Releases →

Televisions

Sideload from a computer on the same network. Developer mode is enabled once.

Detailed steps

Samsung (Tizen)

.wgt9.7 MB
fdfddfe6a58a…

Developer modeThe Apps panel, type 1 2 3 4 5, turn it on and enter your computer's IP. The .wgt is already signed, no certificate required, just the Tizen Studio CLI.

Sideload from a terminal
bash
sdb connect 192.168.1.50
tizen install -n KROMA-tizen-*.wgt -t <device-id>

LG (webOS 4.0+)

.ipk9.8 MB
5aff5697bdef…

Developer modeInstall the Developer Mode app (free LG account), enable Dev Mode then Key Server. The session lasts 50 h, extend it from the app.

Sideload from a terminal
bash
bun add -g @webos-tools/cli
ares-install tv.kroma.webos_*_all.ipk -d tv

Android TV / Google TV / Chromecast

.apk67.3 MB
dc3c99d5fc1b…

Developer optionsSettings → About → Android TV OS build : tap 7 times, then enable network debugging. Without a computer, the Downloader app installs the .apk from a URL.

Sideload from a terminal
bash
adb connect 192.168.1.60:5555
adb install -r KROMA-androidtv.apk

Apple TV

Beta

TestFlightDistributed through TestFlight, no sideloading.

Computers

Regular installers. The desktop apps update themselves from there on.

Detailed steps

macOS

.dmg50.4 MB · Apple silicon
bbc124ee97ee…

Windows

.exe54.2 MB · x64
938407d677fa…
.msi66.4 MB · x64
787c213a708b…

SmartScreenUnsigned installer: "Windows protected your PC" → More infoRun anyway. Silent updates from there on.

Linux (desktop)

.AppImage139.3 MB · x86-64
92575a1636b2…
.deb69.0 MB · x86-64
6a34423d06c8…

Videompv is bundled (the kroma-mpv sidecar drives hardware decoding), nothing to install.

Make it runnable
bash
chmod +x KROMA_*.AppImage && ./KROMA_*.AppImage
# .deb : sudo apt install ./KROMA_*.deb

Steam Deck

.AppImage139.3 MB · x86-64
92575a1636b2…
Add it to Steam
  1. 1Copy KROMA_*.AppImage onto the Deck and chmod +x (Desktop Mode).
  2. 2Steam → Add a Non-Steam Game → Browse, then pick the AppImage.
  3. 3Launch in Game Mode, set the controller layout to Gamepad (D-pad = focus, A = OK, B = back).

Mobile

The phone apps are being finished, distributed through the test channels.

Detailed steps

NAS & browser

Where the server already lives, there is usually nothing more to install.

Detailed steps

Web browser

Nothing to installThe server serves the web app itself. Open its address in any browser, or let mDNS discovery find it on the network.

url
http://nas.local:4040

Synology

.spk80.2 MB · x86-64
d79cb8a3a980…

Automatic updatesThe best route on a NAS: add KROMA as a package source in Package Center. The server installs, then updates itself, without re-downloading a .spk for every release.

Add the package source
  1. 1Package Center → SettingsPackage SourcesAdd.
  2. 2Paste the source URL below, then confirm the "Any publisher" trust level (the package is self-signed).
  3. 3Install KROMA from the source; updates then arrive automatically.
package source
https://packages.kroma.tv

Prefer a manual install? Download the .spk from the releases and go through Package Center → Manual Install. See the releases →

A package that refuses to install? Most often a signature that changed: uninstall the old version, then reinstall.