Billing & Licensing
The Control Panel uses Ed25519-signed digital licenses to manage feature access across Cloud OS instances. Licenses are tied to plans with specific feature limits, and the system supports grace periods for expired licenses.
License Signing
Licenses are signed using the Ed25519 digital signature algorithm. The Control Panel holds the private key (configured via CC_ED25519_KEY_PATH) and signs license payloads that Cloud OS instances can verify independently.
How License Verification Works
- The Control Panel generates a license payload containing the plan, limits, and expiry
- The payload is signed with the Ed25519 private key
- The signed license is delivered to the Cloud OS instance
- The instance verifies the signature using the corresponding public key
- If valid, the instance enforces the plan’s feature limits
┌──────────────┐ Signed License ┌──────────────┐
│ Control │───────────────────►│ Cloud OS │
│ Panel │ │ Instance │
│ │ │ │
│ (Ed25519 │ │ (Public Key │
│ Private Key)│ │ Verify) │
└──────────────┘ └──────────────┘The Ed25519 private key must be kept secure. If compromised, an attacker could forge licenses. Store the key file with restricted permissions and back it up securely.
Plans
The Control Panel supports four licensing plans with progressively more features:
| Plan | Target Audience |
|---|---|
| Community (formerly Free) | Individual users and evaluation |
| Orbit Pro | Small teams and single-server deployments with collaboration needs |
| Business | Growing teams with multi-server needs |
| Enterprise | Large organizations with full feature access |
The Orbit Pro tier unlocks the paid capabilities of the Orbit productivity suite (Docs, Sheets, Slides, Notes) plus cross-node Memory MCP sync. For the full per-feature tier matrix, see Orbit Pro.
Feature Limits by Plan
Each plan defines limits on what the Cloud OS instance can do:
| Feature | Free | Pro | Business | Enterprise |
|---|---|---|---|---|
| Apps per server | Limited | Standard | Extended | Unlimited |
| User accounts | Limited | Standard | Extended | Unlimited |
| Backup destinations | Local only | Local + 1 remote | Multiple remote | Unlimited |
| Cluster nodes | Not available | Limited | Extended | Unlimited |
| AI Hub access | Not available | Basic | Full | Full |
| Custom domains | Not available | Limited | Extended | Unlimited |
| Priority support | No | No | Yes | Yes |
| White-label branding | No | No | No | Yes |
Exact numeric limits for each plan are configured in the Control Panel. The table above shows the relative feature availability across plans.
License Lifecycle
Generating a License
- Navigate to the instance detail page or Billing section
- Select the plan
- Set the license duration (monthly or annual)
- Click Generate License
- The signed license is created and delivered to the instance
License Delivery
Licenses are delivered to Cloud OS instances via the mTLS agent connection. The instance stores the license locally and checks it on startup and periodically during operation.
License Renewal
When a license approaches its expiry date, the Control Panel can:
- Auto-renew — automatically generate and deliver a new license before expiry
- Notify — send a notification to the administrator for manual renewal
- Grace period — allow continued operation for a configured period after expiry
Grace Periods
When a license expires, the Cloud OS instance enters a grace period before features are restricted. During the grace period:
- All features continue to work normally
- A warning is displayed in the Cloud OS dashboard
- The Control Panel shows the instance as “license expired” with a grace period countdown
After the grace period ends, the instance falls back to the Free plan’s feature limits.
Grace period duration is configured in the Control Panel. Once the grace period ends, features beyond the Free plan’s limits become unavailable until a new license is applied.
License Tracking
The Control Panel maintains a ledger of all licenses across the fleet:
Per-Instance Tracking
- Current plan — the active plan for each instance
- License expiry — when the current license expires
- Grace status — whether the instance is in a grace period
- License history — previous licenses issued to this instance
Fleet-Wide Overview
The Billing page shows:
- Total instances by plan (Free, Pro, Business, Enterprise)
- Licenses expiring within the next 30 days
- Instances in grace period
- Revenue summary based on active licenses
MSP Billing Integration
For MSP environments, licensing integrates with the multi-tenancy system:
- Licenses are issued per client
- Each client’s instances are billed according to their assigned plan
- Per-client billing reports include license fees alongside hosting costs
- Partner discounts are applied to the licensing component
See MSP and Multi-Tenancy for details on client billing reports.
Stripe upgrade flow
Orbit Pro upgrades go through Stripe Checkout, proxied by the Control Panel. When a node user clicks Upgrade in Settings -> Billing -> Subscription:
- The node
POSTs to/api/billing/upgradewith the target plan and a return URL. - The Control Panel creates (or reuses) the user’s Stripe Customer, starts a Checkout session, and returns the checkout URL.
- The node client redirects the browser to Stripe. The user completes payment.
- Stripe redirects back to the node with a session id.
- Stripe also fires a webhook to the Control Panel. The CP updates
billing_packagesfor the organisation and the node’s plan. - On the next CC agent heartbeat (within a few seconds), the node’s
license.Gatesees the new plan and unlocks every gated feature. No service restart is needed.
Established customers can manage card, cancellation, and invoices via the Stripe Customer Portal reached through the same Subscription tab.
Next Steps
- Orbit Pro — the Orbit feature tier matrix and 402 upgrade contract
- Partner Program — partner discounts on licensing
- MSP and Multi-Tenancy — per-client billing
- Fleet Management — manage the instances your licenses cover