License vs subscription
LevelChat customers ask "where do I see my license?" and the answer depends on how you run it. License and subscription are two different things, governed by two different surfaces in Studio.
The short version
- License = a cross-stack compact JWT that tells a self-hosted deployment what it is allowed to do (which features, how many concurrent rooms, what storage cap, when it expires). The license is verified by every runtime in the stack and is bound to the deployment fingerprint.
- Subscription = the commercial relationship between a customer and LevelChat — the plan, server count, invoices, and payment method. It is tied to the customer org and lives in the Studio Console's Billing page.
Both cloud and self-host customers have a subscription. Paid self-host is a recurring per-server monthly subscription bought in the Console; that subscription is what issues (and keeps alive) the deployment's license token. Cloud customers only have a subscription — the cloud control plane handles its own licensing internally.
So: if you use LevelChat Cloud you have a subscription at /billing.
If you run LevelChat yourself, you have a subscription at /billing
(where the license token is also displayed) and a deployment
license you can inspect at /license.
Side-by-side
| Concept | License | Subscription |
|---|---|---|
| Who has one | Self-host deployments | Every customer — cloud and self-host |
| What it grants | Runtime entitlements (rooms, features, caps) | A plan + server count / included usage + payment terms |
| Where it lives | Compact JWT in the LEVELCHAT_LICENSE env var | Stripe, mirrored in admin-api / billing-svc |
| Where you see it | Studio → /license, and the token on /billing | Studio Console → /billing |
| Where you change it | Re-copy from /billing, install via the CLI | Self-serve plan / server-count change in /billing |
| Tied to | A deployment fingerprint (cluster + machine) | An org + Stripe customer |
| Issued by | LevelChat license-svc (cross-stack JWT) | Stripe + billing-svc on subscription create / update |
| What expires | The JWT (exp claim); cancelling the subscription expires it | The current billing period (auto-renews) |
| If it expires | The deployment downgrades to Community caps | Stripe retries the card; otherwise the plan lapses |
Why /license is empty (or hidden) for cloud customers
On LevelChat Cloud, the deployment license belongs to LevelChat (the vendor). It is the license under which the cloud cluster runs — the tier, kid, fingerprint, and signed feature list of the vendor's own deployment. Surfacing that to a tenant customer would be an info disclosure: it would expose internal capacity and operator infrastructure that has nothing to do with the customer's relationship.
So on cloud, /license either redirects you to /billing (Studio's customer view) or 404s at the edge (the operator surface). What you actually want is your subscription, which lives at /billing.
On self-host, by contrast, you ARE the operator — the deployment is yours, the license is yours, and /license is the right place to verify that the cluster you're running has the entitlements you paid for.
Where to go next
- Cloud: open
/billingin Studio to see your plan, usage, invoices, and payment method. - Self-host: open
/licensein Studio to see your tier, expiry, entitlement caps, and fingerprint. See the self-host licensing guide for how to install or rotate a license. - Pricing model: see the pricing page for cloud plans and self-host tiers.