Back to Docs/Pricing and budgets

Pricing and budgets

Understand per-second sandbox pricing, resource tiers, included usage, and hard spend controls.

Pricing and budgets

OpenPond separates the subscription plan from metered sandbox resources. Your plan controls included usage, concurrency, retention limits, and product access. A running sandbox accrues compute and VM-disk usage from its start time until it is stopped or deleted. Durable volumes accrue storage usage while retained.

The authenticated Billing page and the SDK pricing endpoint are authoritative for the rate card applied to your account. The current public retail rates are:

| Resource | Meter | Current rate | Hourly equivalent | | --- | --- | ---: | ---: | | vCPU | vCPU-second | $0.000010 | $0.036000 per vCPU | | Memory | GiB-second | $0.000003 | $0.010800 per GiB | | VM disk | GiB-second | $0.00000002 | $0.000072 per GiB | | Durable volume | GiB-second while retained | $0.00000002 | $0.000072 per GiB |

Model inference and connected services have their own usage rules. A sandbox budget limits sandbox execution; it is not a promise that every other service used by a workflow is included in that amount.

Resource tier examples

These estimates assume the sandbox remains running continuously. Real ephemeral Work should normally cost much less because it deletes compute after each completed turn.

| Tier | vCPU | Memory | VM disk | Estimated hourly cost | 30-day continuous estimate | | --- | ---: | ---: | ---: | ---: | ---: | | Tiny | 0.25 | 0.5 GiB | 4 GiB | $0.014688 | $10.575360 | | Small | 0.5 | 1 GiB | 8 GiB | $0.029376 | $21.150720 | | Default | 1 | 2 GiB | 10 GiB | $0.058320 | $41.990400 | | Builder | 2 | 4 GiB | 20 GiB | $0.116640 | $83.980800 | | Heavy Builder | 4 | 8 GiB | 40 GiB | $0.233280 | $167.961600 |

Example: a Builder sandbox running for eight minutes costs approximately $0.116640 × 8 / 60 = $0.015552. Billing uses per-second quantities and produces a receipt, so the final charged amount comes from measured duration rather than this rounded example.

Plans and included usage

| Plan | Base price | Included sandbox usage | Concurrent sandboxes | Retained sandboxes | | --- | ---: | ---: | ---: | ---: | | Free | $0 | $5 | 1 | 5 | | Pro | $20/month | $10 | 10 | 100 | | Enterprise | Custom | Contract-defined | Contract-defined | Contract-defined |

Included usage is applied before prepaid credits and metered overage. Account spend caps and overage policy can stop additional allocation even when a request-level budget is higher.

Use every budget layer

For raw sandboxes and runtimes, set both the reservation budget and execution quotas:

ts
const sandbox = await openpond.sandboxes.create({ resources: { cpu: 1, memoryGb: 2, diskGb: 10 }, budget: { maxUsd: "0.20" }, quotas: { maxSpendUsd: "0.20", maxDurationSeconds: 600, idleTimeoutSeconds: 180, maxCommands: 20, maxOpenPorts: 1, maxSnapshots: 0, }, });

The controls answer different questions:

  • budget.maxUsd bounds the reservation.
  • quotas.maxSpendUsd bounds execution spend.
  • maxDurationSeconds limits total running time.
  • idleTimeoutSeconds is crash protection, not successful-turn cleanup.
  • Command, port, and snapshot quotas constrain expensive or externally visible operations.

Stop, delete, and storage cost

Stopping ends active compute billing but intentionally retains recoverable sandbox state. Deleting releases the sandbox and should be the default after exported one-off work. Snapshots, archives, and durable volumes can continue consuming retained-storage quota or storage charges after compute stops.

For Work, use cleanup: "delete" with persistOutput. For raw sandboxes, delete in finally. For runtimes, release the current sandbox after the active step and archive the runtime when the workflow itself is complete.

Continue with workflow modes or runtimes, snapshots, and cleanup.