Pricing & Limits
SeaCloud Sandbox usage is metered around runtime resources, template/build resources, and storage policy. Exact commercial pricing, free-tier rules, and public price examples are not yet published in this MVP document.
Billing Dimensions
Section titled “Billing Dimensions”| Dimension | Metering model | Notes |
|---|---|---|
| Sandbox runtime | CPU and memory over runtime duration | Lifecycle timeout limits how long a sandbox can stay alive. |
| Template builds | Build CPU/memory and build duration | Heavy dependency installation should move to templates when reused. |
| Template storage | Stored custom template images | Concrete tpl-... images may be retained across releases. |
| Persistent workspace storage | Storage type and retained data | Depends on nfs, block, object, or environment-specific storage mounts. |
| Network traffic | Ingress/egress and public port routing | Product pricing and hard caps are pending. |
Default Runtime Guardrails
Section titled “Default Runtime Guardrails”These are current platform defaults surfaced by the sandbox architecture docs. Product plans may override them through the trusted gateway entitlement layer.
| Limit | Default |
|---|---|
| Per-user held sandboxes | 20 |
Per-user running + starting sandboxes | 10 |
Per-user starting sandboxes | 5 |
| Per-user daily sandbox creates | 100 |
| Per-project held sandboxes | 200 |
Per-project running + starting sandboxes | 100 |
Per-project starting sandboxes | 50 |
| Per-project daily sandbox creates | 1000 |
| Max continuous sandbox runtime | 86400s |
Default Resource Guardrails
Section titled “Default Resource Guardrails”| Resource | Default ceiling |
|---|---|
| Sandbox CPU | 8 |
| Sandbox memory | 64Gi |
| Sandbox storage | 200Gi |
| Custom templates per user | 50 |
| Concurrent builds per user | 3 |
| Template CPU | 8 |
| Template memory | 16384MiB |
| Template storage | 200GiB |
| Single build context archive | 100MiB |
| Build context storage per template | 1GiB |
| Build context storage per user | 5GiB |
| Build job active deadline | 3600s |
Public clients should not send or rely on internal X-Sandbox-Limit-* headers. Hermes resolves plan and entitlement, then forwards sanitized limits to Atlas and Sandbox Builder for enforcement.
Query Current Sandbox Limits
Section titled “Query Current Sandbox Limits”GET /api/v1/usage/limitsX-API-Key: <SEACLOUD_API_KEY>The response reports user and project quota usage:
{ "resource": "sandboxes", "unlimited": false, "user": { "usage": { "held": 2, "running": 1, "starting": 0, "dailyCreates": 12 }, "limits": { "held": { "limit": 20, "used": 2, "remaining": 18, "enforced": true }, "running": { "limit": 10, "used": 1, "remaining": 9, "enforced": true } } }, "runtime": { "maxRuntimeSeconds": 86400 }}Query Template And Build Limits
Section titled “Query Template And Build Limits”GET /api/v1/usage/template-limitsX-API-Key: <SEACLOUD_API_KEY>This endpoint reports custom template count, concurrent builds, and resource ceilings such as maxTemplateCPU, maxTemplateMemoryMB, and maxTemplateStorageGB.
Limit Terms
Section titled “Limit Terms”| Field | Meaning |
|---|---|
held | Sandboxes that are not deleted or destroying. |
running | Running plus starting sandboxes, matching create/start enforcement. |
starting | Sandboxes in startup phases such as new, warming, warm, or creating. |
dailyCreates | Calendar-day sandbox creates, reset at UTC midnight. |
enforced | false means the value is visible for planning but not enforced. |
unlimited | Commercial sandbox limits were bypassed by trusted gateway entitlement. |
maxRuntimeSeconds | Maximum lifecycle duration the platform reports for the caller. |
When A Quota Is Hit
Section titled “When A Quota Is Hit”Create/start requests can return 429 with details such as scope, resource, metric, used, limit, remaining, and usageEndpoint. Use the returned endpoint before retrying.
{ "code": 429, "message": "sandbox limit exceeded", "details": { "reason": "usage_limit", "scope": "project", "resource": "sandboxes", "metric": "dailyCreates", "used": 1001, "limit": 1000, "remaining": 0, "usageEndpoint": "/api/v1/usage/limits" }}