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
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
RecommendedThe 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.38The image built for that release tag. It never changes under you.
Canary
ghcr.io/kromatv/kroma:latestRebuilt on every push to main, so a pull gets the current state of the code. Public, multi-architecture, no token.
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:docker compose up -dMediaKROMA_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.
- 1Package Center → Settings → Trust Level : allow Any publisher.
- 2Package Center → Manual Install, pick the .spk, follow the wizard.
- 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.
# Rust ≥ 1.86 + ffprobe. From the repo:
cd server
KROMA_MEDIA_DIRS=/mnt/media cargo run --releaseInstall 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 stepsSamsung (Tizen)
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
sdb connect 192.168.1.50
tizen install -n KROMA-tizen-*.wgt -t <device-id>LG (webOS 4.0+)
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
bun add -g @webos-tools/cli
ares-install tv.kroma.webos_*_all.ipk -d tvAndroid TV / Google TV / Chromecast
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
adb connect 192.168.1.60:5555
adb install -r KROMA-androidtv.apkmacOS
bbc124ee97ee…Windows
938407d677fa…787c213a708b…SmartScreenUnsigned installer: "Windows protected your PC" → More info → Run anyway. Silent updates from there on.
Linux (desktop)
92575a1636b2…6a34423d06c8…Videompv is bundled (the kroma-mpv sidecar drives hardware decoding), nothing to install.
Make it runnable
chmod +x KROMA_*.AppImage && ./KROMA_*.AppImage
# .deb : sudo apt install ./KROMA_*.debSteam Deck
92575a1636b2…Add it to Steam
- 1Copy KROMA_*.AppImage onto the Deck and chmod +x (Desktop Mode).
- 2Steam → Add a Non-Steam Game → Browse, then pick the AppImage.
- 3Launch in Game Mode, set the controller layout to Gamepad (D-pad = focus, A = OK, B = back).
iPhone / iPad
BetaAndroid
Betab2beaf50ffcb…NAS & browser
Where the server already lives, there is usually nothing more to install.
Detailed stepsWeb 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.
http://nas.local:4040Synology
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
- 1Package Center → Settings → Package Sources → Add.
- 2Paste the source URL below, then confirm the "Any publisher" trust level (the package is self-signed).
- 3Install KROMA from the source; updates then arrive automatically.
https://packages.kroma.tvPrefer 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.