Tier resolution
Workspace tier
Each workspace has its own plan:- No active subscription → Free tier
- Pro plan active → Pro tier (set automatically when you subscribe)
User tier
Some operations need a user-level tier (rate limit naming, quota info display). Your user tier is the highest tier across all your workspaces:- You belong to 3 workspaces: 2 Free + 1 Pro → your user tier is Pro
- You belong to 2 workspaces: both Free → your user tier is Free
What each tier controls
Instance type filtering
When Karpenter asks “what instance types are available?”, the response depends on the workspace tier:
This filtering happens at the API level — Karpenter never sees types outside the tier’s allowlist.
Quota enforcement
Quotas are enforced atomically in the database transaction when a machine record is created. This prevents race conditions — even concurrent requests can’t exceed the limit.
Dual check model:
- Per-workspace: The workspace can’t exceed its plan’s allocation
- Per-user (free only): Prevents creating multiple free workspaces to circumvent limits
Machine TTL
Auto-scaling behavior
When tiers change
Upgrade (Free → Pro)
Takes effect immediately:GetInstanceTypesreturns all types (not just the free-tier 3)- Quotas increase (1 → 3 machines, 2 → 8 CPU, etc.)
- Machine TTL stops — existing machines no longer expire
- Auto-scaling limits expand
- Karpenter sees the new types within 30 seconds (Go provider cache TTL)
Downgrade (Pro → Free)
Takes effect at end of billing period:- CNAP-managed machines are suspended (not deleted)
- Auto-scaling is paused on managed clusters
- Quotas revert to free limits
- Instance type filtering returns to the free-tier 3
- BYOM machines are unaffected
BYOM (any tier)
Adding your own cloud API key bypasses all quota enforcement:- No machine count limit
- No CPU/memory limit
- No TTL
- All instance types available
- No auto-scaling restrictions
How enforcement works
Quota enforcement is atomic — concurrent requests cannot exceed the limit, even under race conditions. When a machine is created, the quota check runs in the same database transaction as the creation. If the limit would be exceeded, the creation is rejected and no resources are provisioned. This means you can’t accidentally exceed your plan limits by clicking “create” rapidly or running parallel API calls.Instance type availability
When your cluster’s auto-scaler checks available instance types, CNAP filters the list based on your workspace tier:- Free: Only small, affordable types are shown
- Pro: All provider types are available
- BYOM: All types in your cloud account