Suvra

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

FieldValue
StatusBadge (active / expired / lifetime)
Plan namePlan tier
License statusSigned / unsigned / verified
Starts AtUTC timestamp or "lifetime free tier"
Expires AtUTC timestamp or "no expiry"
Active Agentsusage / max
Active Usersusage / max
Last Usage RefreshUTC 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 .lic file

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