Resource Limits & Quotas
Two levels of limits. Per-project limits cap each environment's container. Account quotas cap your total usage across every environment. The scheduler checks both before every deploy.
Per-project limits
Set them in the dashboard or in nexos.yaml. Enforced by containerd via Linux cgroups.
# nexos.yaml
app:
cpu: 1 # vCPU (0.1–16)
memory: 512 # vRAM in MB (64–65536)
buildResources:
cpu: 2 # vCPU during build
memory: 2048 # vRAM in MB during build
timeout: 600 # max build seconds (60–3600)- vCPU is throttled via CFS bandwidth — the app slows down past the limit but is not killed.
- vRAM exceeded → container is OOM-killed and restarted.
- Build timeout — hung builds get killed, freeing the node.
Account quotas
Quotas prevent one user from monopolizing the network. Determined by your plan — each tier is a flat monthly fee with these hard caps included; there are no usage charges on top:
| Quota | Free | Pro | Team | Enterprise |
|---|---|---|---|---|
| Max projects | 1 | 3 | 10 | Custom |
| Total environments | 5 | 15 | 50 | Custom |
| Active at once | 2 | 5 | 15 | Custom |
| Total vCPU | 2 | 6 | 12 | Custom |
| Total vRAM | 4 GB | 12 GB | 24 GB | Custom |
| Build minutes / month | 300 | 1,500 | 5,000 | Custom |
| Members | 1 | 1 | 5 (+$5/seat) | Custom |
| Private nodes | — | — | — | Custom |
| Auto-pause | — | Yes | Yes | Yes |
| Custom domains | — | — | Yes | Yes |
| Create teams | — | — | Yes | Yes |
Hit a quota? New deploys queue rather than fail. Free capacity by pausing or destroying environments you don't need, or upgrade your plan for higher ceilings.
Resource add-ons
If a tier fits but you need a bit more compute, you don't have to jump to the next plan. Paid plans (Pro and Team) support resource add-ons, structured like extra seats: each add-on raises your account ceilings by +1 vCPU and +2 GB vRAM for $5/mo, billed as part of your subscription. Pick the number of add-ons at checkout — there is no cap, add as many as you need. Add-ons apply to your total account quota — the per-container limits above are unchanged. To change the add-on count later, cancel and resubscribe with the new configuration (same as switching tiers).
How the scheduler picks nodes
- Filter — exclude nodes without enough free capacity for the project's requested resources.
- Score — prefer nodes with cache affinity (built this project before) and geographic proximity.
- Reserve — capacity is reserved for the environment's lifetime, so accurate limits matter. Requesting 4 vCPU when your app uses 0.5 wastes capacity others could use.
Check your quota via API
GET /api/quota
Authorization: Bearer nxs_your_api_keyResponse:
{
"plan": "team",
"usage": {
"projects": 3,
"total_cpu": 6.5,
"total_memory_mb": 14336,
"build_minutes_used": 1240
},
"limits": {
"max_projects": 5,
"max_cpu": 12,
"max_memory_mb": 24576,
"build_minutes": 5000
}
}