Four states
- Trial mode — no
LICENSE_KEYconfigured. Engine runs unrestricted, the chat shows a subtle "Trial mode" tag. Used for evaluation / development. The licence server is never contacted. - Valid — daily check against the licence server succeeded. Silent.
- Grace — daily check has been failing (server down, key expired). Yellow banner, 7 days. Goes red at ≤ 2 days remaining.
- Locked — grace ran out. Full-screen overlay blocks chat. Engine's background jobs keep running so a renewal unsticks the app without restart.
The check runs once a day and caches to memory/.license-cache.json. Restarts don't reset the cache, so the grace window survives docker compose down.
Getting a trial key
Drop your email at getkerno.ai/trial. The licence server issues a 7-day key and the welcome email arrives within seconds. After the 7 days, the engine flips to grace for another 7 days, then locks.
Where to paste it
First-time setup: wizard step 4 (API keys) → Licence key field → click Test connection.
After setup: /admin → API keys section. Same field, same Test button. Saving a fresh key resets the grace window immediately.
Rotating a key
Bought a Pro upgrade or got a replacement key after revocation? Paste the new key in /admin → API keys → Save. The engine writes a key-hash to the cache file, so changing the key resets grace from scratch — you start the next 7-day cycle clean.