Orbit Pro
Orbit Pro is the paid tier for the Quazzar Orbit productivity suite (Docs, Sheets, Slides, Notes, and the Memory MCP sync layer). The free Community tier is fully usable for single-user work; Orbit Pro unlocks collaboration, advanced export, pivot tables, cross-node memory sync, and the full formula / chart / Slides-theme libraries.
Tier matrix
| Feature | Community | Pro | Business | Enterprise |
|---|---|---|---|---|
| Docs / Sheets / Slides / Notes editors | Y | Y | Y | Y |
| Memory MCP (all read + write tools) | Y | Y | Y | Y |
| Semantic / hybrid search (Ollama-backed) | Y | Y | Y | Y |
| Basic Sheets charts (bar + line) | Y | Y | Y | Y |
| Sheets formulas 1-20 | Y | Y | Y | Y |
| Markdown / JSON export | Y | Y | Y | Y |
| Share links | 3 active | unlimited | unlimited | unlimited |
| Real-time collaboration (CRDT WebSocket) | gated | Y | Y | Y |
| Notes mind-map + filter toolbar | gated | Y | Y | Y |
| Full formula library (21-80) | gated | Y | Y | Y |
| Pie / area / scatter charts | gated | Y | Y | Y |
| Pivot tables | gated | Y | Y | Y |
| Version history | 24 h | 90 d | 180 d | 365 d |
| Binary export (DOCX / PDF / PPTX / XLSX) | gated | Y | Y | Y |
| Slides themes + 7-layout gallery | gated | Y | Y | Y |
| Cross-node Memory MCP sync | gated | Y | Y | Y |
| Priority MCP rate limit | 30 / min | 120 / min | 600 / min | unlimited |
Memory MCP stays free. The entire tool surface (12 tools, 4 resources, 3 prompts) is free on every plan — including write, update, delete, and link. Semantic search via local Ollama is free. Only cross-node sync — replicating memories across multiple Cloud OS nodes through the Control Panel — requires Orbit Pro.
How gated features behave
Every gated capability is enforced server-side in the node’s license.Gate. When a Community-plan caller triggers a gated path the server returns HTTP 402 Payment Required with a canonical JSON body:
{
"error": "upgrade_required",
"feature": "orbit_pivot",
"current_plan": "community",
"required_plan": "pro",
"message": "Pivot tables require Orbit Pro.",
"upgrade_url": "/api/billing/upgrade"
}The web client catches the 402 via isUpgradeError() and renders either an inline <UpgradePrompt> or opens a modal <OrbitUpgradeDialog> so you can upgrade without losing the edit. Nothing silently fails.
Feature keys
The server-side Gate uses stable feature keys so callers can map errors to upgrade CTAs:
| Feature key | Where it is enforced |
|---|---|
orbit_collab | Docs / Sheets / Slides CRDT WebSocket upgrade |
orbit_graph | Notes mind-map view (UI + server) |
orbit_full_formulas | Sheets save with formulas 21-80 |
orbit_charts | Sheets save with pie / area / scatter charts |
orbit_pivot | Sheets save with a pivot table |
orbit_history | Version-history query beyond 24 hours |
orbit_advanced_export | DOCX / PDF / PPTX / XLSX export |
orbit_memory_sync | Cross-node Memory MCP sync enable / resync |
orbit_unlimited_shares | Share-link creation past the 3-link Community cap |
orbit_slides_themes | Slides custom theme save and the 7-layout gallery |
Every deny path calls Gate.LogDeny(feature) which emits a structured zerolog event (event=feature_blocked feature=<name> plan=<plan>). Operators can tail the node logs to see real-time upgrade demand with no external telemetry pipe.
Upgrade flow
- User clicks a gated control (for example Insert pivot).
<GatedButton>opens<OrbitUpgradeDialog>with a 4-tier plan comparison.- User picks a plan. The dialog
POSTs/api/billing/upgrade, which proxies through the Control Panel to Stripe Checkout. - Stripe redirects back to the
returnToURL with a session id. - The CC agent picks up the new plan on the next heartbeat. The node’s
license.Gateis wired to the agent’s plan accessor, so the feature unlocks on the next request — no restart required.
See Billing & Licensing for subscription mechanics, the Stripe Customer Portal flow, and invoice handling.
Subscription management
From a connected node
Settings -> Billing -> Subscription shows:
- The current plan with a highlighted row in the 4-tier comparison.
- An Upgrade button that opens Stripe Checkout.
- A Customer Portal button for already-paid plans (update card, cancel, download invoices).
The tab is available both on nodes connected to a Quazzar-hosted Control Panel and standalone nodes that wire into a self-hosted CP.
From the Control Panel
Organisation admins can bulk-change plans for any node in the fleet from Control Panel -> Billing. Every change writes back to the node via mTLS on the next heartbeat.
API surface
GET /api/license/orbit-features— projection of the current plan’s feature gate map. Used by the web client to render gated controls before the user clicks them.POST /api/billing/upgrade— starts a Stripe Checkout session. Returns{ "checkout_url": "https://checkout.stripe.com/..." }. See Cloud OS API.
Community plan
The Community plan is fully usable and deliberately not time-limited:
- Full Docs / Sheets / Slides / Notes editing for a single user.
- The complete Memory MCP tool surface — read, write, update, delete, link.
- Semantic search via local Ollama.
- 3 active share links.
If you never hit a gated control, you will never see an upgrade dialog. The paid tier exists to unlock multi-user and high-end export use cases, not to paywall day-to-day productivity.
Related pages
- Billing & Licensing — subscription mechanics
- Orbit Docs / Sheets / Slides / Notes
- Memory MCP