Appearance
Sizing
Two independent axes shape what a tenant gets: tier (federation-wide) and size (per-spoke).
Tier — federation-wide
Tier sets the SLA, the isolation level, and the backup retention window. You pick it once when you create the federation; you can upgrade later by talking to support.
| Tier | Spoke nodes | Backup retention | Cross-region copies | Suits |
|---|---|---|---|---|
| Standard | Shared cluster nodes | 30 days | No | Pilots, internal tools, low-stakes federations |
| Dedicated | Isolated nodes | 90 days | Yes | Customer-facing production, regulated workloads |
Both tiers run the same software, the same chart, and the same control plane. The differences are operational: where pods land, how long snapshots stay, what we promise on RPO/RTO.
Size — per-spoke
Size controls the CPU and memory budget of an individual spoke pod. You pick it at provision time and can change it later via POST /spokes/:id/actions with { action: "resize", size: "<new>" }.
| Size | Requests | Limits | Suits |
|---|---|---|---|
| Small | 200m CPU, 512Mi mem | 1000m CPU, 2Gi mem | up to ~50 active users |
| Medium | 500m CPU, 1Gi mem | 2000m CPU, 4Gi mem | up to ~500 active users |
| Large | 1000m CPU, 2Gi mem | 4000m CPU, 8Gi mem | up to ~2,000 active users |
The user numbers are rough. A small spoke running a quiz that everyone takes at the same time will hit the wall faster than a large spoke serving asynchronous self-paced courses.
Hub size
The hub gets a fixed size keyed off the federation tier:
| Federation tier | Hub requests | Hub limits |
|---|---|---|
| Standard | 500m CPU, 1Gi mem | 2000m CPU, 4Gi mem |
| Dedicated | 1000m CPU, 2Gi mem | 4000m CPU, 8Gi mem |
Hubs do less heavy lifting per-user than spokes (they author and publish; they don't run live courses), so they don't need the per-spoke sizing knob.
When to upsize
Two leading indicators:
- CPU throttling — pod CPU usage flat at the limit for sustained periods. Visible in the operator portal's spoke detail page.
- OOMKilled events — pod restarts logged with reason
OOMKilled. Will show up in the audit log too.
Either means you're at the ceiling. Upsize before users start seeing 502s.
When to downsize
Less common, but: if you've migrated away from a busy course or a cohort has finished, dropping from Large back to Medium reclaims ~30–50% of the cost. Same resize action, no data loss, ~30s of pod restart.
Pricing
Each (tier, size) combination maps to a Stripe price. The wizard's "Preview cost" step shows recurring monthly + due-now proration before you commit. See API → Spokes → preview-cost.