Privacy

Privacy policy

Last updated: August 26, 2026

KROMA is free software you host yourself, and kroma.tv is a static marketing site. The site collects almost nothing. What the app does stays on your hardware.

In short

  • No account, no advertising tracker, no analytics cookie on this site.
  • The app runs on your own hardware: your library, your accounts and your playback history never leave your network. There is no "KROMA cloud".
  • One exception, openly stated. Push notifications pass through a relay we run on Cloudflare. It forwards notifications, never your media or your library.

What this site collects

kroma.tv is a static site, hosted on Cloudflare's network. It has no user accounts, no sign-up form, no analytics tool and no ad network. We set no tracking cookies and run no tracking scripts.

Like any website, it produces ordinary technical logs on the server and CDN side: IP address, user agent, page requested, timestamp. Cloudflare processes them to deliver the pages, absorb attacks and keep the service secure. Those logs are short-lived, and serve neither to profile you nor to contact you.

What the app collects (nothing that leaves your network)

The KROMA app runs on hardware you own, your NAS, a Docker host, a Raspberry Pi. Your library, your files, your accounts and profiles, your playback history and your statistics are stored there locally and do not leave it. We have no access to any of it, and the app itself sends us nothing: a television, a phone or a browser talks to your server and to nothing else.

You run the server, so you control that data. You decide who reaches it, where it lives and when to erase it.

Being counted, and how to stop

The server software counts your install among the KROMA servers running in the world. It comes from your server, not from the app, so everything above stays true of the apps either way. The numbers it feeds are public at kroma.tv/stats.

Legal basis: our legitimate interest in knowing which versions, platforms, modules and languages are actually in use, so that a version is retired, a module maintained and a translation chosen on evidence rather than a guess. Not your consent: it is on by default, and calling a default "consent" would be untrue.

You can object at any time, with one switch in Admin → General → Privacy, at once and without giving a reason. We ask nothing and you owe no explanation. You can also object to part of it: under that switch sit what this server runs and how much of it there is, either of which you can drop while your server still counts itself. What you switch off is left out of the payload, not sent empty.

While it is on, your server posts one payload a day. This is all of it, and the right-hand column says which switch each row belongs to:

WhatWhySwitch
A random identifier your server made up for itselfSo it is counted once rather than once a day. Not derived from your hardware, and tied to nothing else.The first
Its version and the commit it was built fromSo a release can stop being supported once nobody runs it.The first
Its operating system and how it was installedSo we know which platforms are still in use.The first
A two-letter country codeRead from your connection at Cloudflare's edge, so the map means something. Your address is not stored.The first
The languages your devices ask forSo we know which language to translate KROMA into next. A set, never counted, never per-device.What it runs
Which official modules are switched onSo we know which are worth maintaining. A module installed from anywhere else is never named.What it runs
How many televisions, phones and computers used it in the last weekThe other half of the question. Capped at 50 each.How much
How many accounts it has, and how many titles are in its librarySo the size of a real install is known rather than guessed. Numbers only: no account and no title is named, and neither number is published against your server.How much

Never any of this: your IP address, your server's name, its hostname or web address, any title, any file path, anything you watched or searched for, any account name, email or avatar, or the name of a module you installed from somewhere other than the official catalogue.

There is no profiling and no automated decision-making. It is counted, and that is all that happens to it.

Where it goes. To Cloudflare, who run the collector and hold the database for us in Western Europe, and to nobody else. It is not sold, not shared and not used for advertising.

How long. Your row lives while your server keeps reporting and for ninety days after its last report, then it is deleted. It stops counting toward anything published thirty days after its last report. The published totals carry no identifier at all.

What you can do about it, without asking us. Your server prints the exact payload in its own job log before sending it, so you can read what leaves rather than take our word for it, and Admin → General → Privacy shows the identifier your row goes by. Quote that identifier to erase the row yourself:

curl -X POST https://stats.kroma.tv/v1/forget \
  -H 'content-type: application/json' \
  -d '{"id":"<the identifier from your admin page>"}'

It is gone immediately. Turn the switch off first, though: a server that is still reporting writes the row again the next day. You can also write to privacy@kroma.tv and we will do it, and you have the right to complain to a supervisory authority: in Switzerland the FDPIC, and in the EU the authority for your country.

Push notifications via the Cloudflare relay

This is the only part of the app that touches a service we operate, and we would rather say so plainly. The mobile and TV apps can receive push notifications, for example "your download is ready". Apple and Google require confidential credentials for that, and those cannot live in public, self-hosted source code. A small relay we run on Cloudflare holds them instead.

The relay receives your device's notification token (issued by Apple or Google) and the message to display, then forwards both to the vendor's push service. It does not see, and does not carry, your media, your library or your history. If you do not turn notifications on, nothing passes through it.

Cookies

This site sets no analytics or advertising cookies, so there is no consent banner. There is nothing to consent to. Cloudflare may set a cookie strictly necessary for security (abuse protection); it does not follow you from one site to another.

Third-party services

Cloudflare hosts this site and the notification relay, and on that basis processes the technical logs above. Metadata for films and series comes from TMDB, but your server queries it, on your network, not us.

Your rights

We hold almost no personal data about you, so there is very little on the kroma.tv side to exercise a right of access, rectification or erasure against. If you believe we hold some information about you anyway, write to us and we will act on it.

The app's data lives on your own installation: you view it, correct it and delete it directly, without going through us.

Contact

A question about this policy or about your data? Write to privacy@kroma.tv.

This policy may change if the site changes. The last-updated date at the top of the page is authoritative.