Get started
Configuration
kratos.cfg is a JSON document. Unknown fields are preserved, and every field under Rs is optional.
kratos.cfg#
kratos.cfg
{
"Server": "https://license.example.com", // license endpoint
"EpgUrl": "",
"Users": [
{
"Username": "admin",
"PasswordPlain": "change-me", // hashed (argon2id) on first load
"IsAdmin": true,
"HasWebAccess": true,
"Network": "", // optional IP / CIDR restriction
"ProviderIds": [] // non-admins: providers they may watch
}
],
"Rs": {
"Bind": "0.0.0.0:18080",
"ProvidersPath": "providers",
"EpgPort": 0,
"LogLevel": 4, // 0..6
"LogFile": "",
"UpdateUrl": "https://updates.kratosott.com"
}
}Keep
kratos.cfg out of version control — it holds credentials and license identifiers. Passwords given as PasswordPlain are replaced with an argon2id hash on first load.Providers#
Each provider is one file at providers/<id>.cfg holding a JSON object with a Streams[] array. Every stream has a Type (linear, event or vod), a Manifest URL, optional Keys (one kid:key per line), and optional Script / ScriptParams. KRATOS keeps any key it doesn't recognise, so files round-trip without loss.
Hot reload
You can edit providers from the UI, and changes are hot-reloaded — no restart required. See Provider Scripts for the Python SDK that powers login, channels, EPG and key acquisition.