VM client · POST /v1/entitlement/validate
NAT client · GET /v1/entitlement/ws
→Service.Validate
the only implementation
→database
The transports only decode, call and encode. This is the most important invariant in the codebase: a rule enforced over HTTP and forgotten over the websocket is a licence bypass, and the only reliable prevention is exactly one implementation. The websocket exists for clients behind NAT that cannot be polled.
activeEntitled
graceEntitled, warn the user
provisioningPurchase still completing
deniedNot entitled — one of ten reasons
Offline verification
Every licence is ed25519-signed. A standalone Go package with no dependencies beyond the standard library verifies it on the customer’s machine — a public key verifies licences, it cannot mint them.
// verify on start, keep running if valid
pub, err := licensecheck.DecodePublicKey(embeddedKey)
claims, err := licensecheck.Verify(pub, licenceKey)
Grace with teeth
A suspended or deprovisioned resource stays entitled for a configured window — 72 hours by default — and says so with a grace_until timestamp, so software can warn rather than stop. Suspension usually means a late invoice.
Grace lives on the listing — the vendor’s tolerance for late payment. Seat ceilings, which a buyer pays for, live on the plan.