License
The License page (/dashboard/billing) is where tenant admins see what plan they're on, which features are enabled, and how to upgrade or rotate a license.
Requires billing.read to view; billing.write to import or request an upgrade. A tenant context is required for non-super-admins.
Tabs
- Current License
- Request License
- Import License
Current License
Shows the resolved license state for the active tenant.
Summary card
| Field | Value |
|---|---|
| Status | Badge (active / expired / lifetime) |
| Plan name | Plan tier |
| License status | Signed / unsigned / verified |
| Starts At | UTC timestamp or "lifetime free tier" |
| Expires At | UTC timestamp or "no expiry" |
| Active Agents | usage / max |
| Active Users | usage / max |
| Last Usage Refresh | UTC timestamp |
Included Features — a table of feature flags derived from the license (feature name, enabled yes/no).
Only agents with status=active count toward the agent quota. Disabled or deleted agents do not.
Request License
A contact form to ask for an upgrade:
- Company Name
- Contact Email
- Number of Agents Needed
- Note (textarea)
Posting fires an email to sales and surfaces a confirmation in the UI.
Import License
Paste or upload a signed license envelope.
- License Code — base64-encoded Ed25519 signature + canonical JSON payload
- Upload — accepts a
.licfile
Importing posts to POST /dashboard/billing/import-license. The default path verifies the signature with the bundled license public key. Set SUVRA_LICENSE_VERIFY=0 to disable verification for dev / testing.
Generate development licenses with tools/license_keygen.py (Ed25519 key pairs and signed license payloads).
RBAC
- View summary:
billing.read - Import / request upgrade:
billing.write