- $1 buys 100,000 seconds of machine time, about 27 hours. That is $0.036 per hour, or about $26 for a
defaultbox running 24/7 for a month. - Stopped boxes are free. Stopping snapshots the filesystem and pauses billing until you resume.
- Size changes the rate. A
smallbox (2 vCPUs, 4 GB) consumes machine time at 0.5x, so the same balance lasts twice as long; alargebox (8 vCPUs, 16 GB) consumes it at 2x. See Machine Capabilities.
Your balance is a single pool of machine time; the type only changes how fast it drains.
box limits reports remaining compute in hours and remaining credits in dollars; box limits --json keeps the canonical second counts plus creditBalanceHours and packBalanceDollars.
Included with every box
- A dedicated IPv4 address
- Snapshots (the latest snapshot per box is kept, up to your box type’s data size: 12 GB on
small, 50 GB ondefault, 70 GB onlarge) - Egress, up to 2 TB per box per month
- Desktop streaming and hosted HTTPS ports
Plans
Every plan converts its price into machine time at the same rate, and sets your concurrency and start limits:
The per-hour rate is five times the per-minute burst, and the per-day rate is three times the hourly. These limits scale with your plan and rise as we add capacity; committed accounts can have them lifted further.
Upgrade any time from Dashboard > Billing. Need more than the largest plan? Contact us, higher limits are agreed case by case.
On the free trial
Every plan starts with a free 7-day trial. Until your first payment lands, an account runs under its own limits rather than the plan’s:
Two of these change how boxes behave rather than how many you get.
--no-auto-stop and any --ttl above two hours are refused with trial_auto_stop_required, and a resumed trial box gets a fresh window capped the same way, so nothing you start on the trial can run unattended overnight. --type large is refused with trial_machine_class_not_allowed. Adding a payment method lifts all five at once.
Machine starts
Creating a box, forking one and resuming a stopped one each count as one machine start, so a platform that stops boxes aggressively spends the same budget as one that creates them. Each plan sets three start limits that scale together: the per-minute burst rate listed above, five times that per hour, and three times the hourly rate per day. Size the per-minute rate for your spikiest moment, the hourly ceiling for your busiest hour, and the daily ceiling for your total traffic.GET /limits (and box limits --json) reports starts.minute|hour|day with limit, used and remaining for the rolling windows. Past any of them the API answers 429 with rate_limited, names which window you hit, and includes the same starts remaining counts. These limits scale with your plan and rise as we add capacity, and committed accounts can have them lifted further, so contact us if you need more.
Plan time vs credit packs
Your two pools work differently, and the difference only shows up at renewal:- Plan time is granted fresh at the start of every billing month and expires at the end of it. Whatever you did not spend is not carried forward and is not converted into credits.
- Credit packs ($20 buys 2,000,000 seconds) never expire and carry over month to month.
Teams
A team has one shared balance and one plan, and any member can run boxes against it. Which balance a box draws from is decided when the box is created and travels with it from then on. The team is a wallet, not a shared workspace: boxes, snapshots, and environments stay with their creator.How limits apply on a team
The start-rate and concurrency numbers on the plan are one shared pool for the whole organization, not a private allowance per member. A 5-seat team on the $20 plan has the $20 ceilings × 5: 500 concurrent boxes, 50 starts/min, 250/hour, 750/day. Those counters key on the team’s wallet. If one member burns the hourly start budget, every other member’sbox new / fork / resume billed to that team is refused until the window rolls. A member’s personal boxes use that member’s own personal limits and do not count against the team pool.
Those shared ceilings only stay seat-scaled while the team’s Stripe subscription is active. If the plan is canceled, leftover credit packs can still run boxes, but concurrency and start rate drop to a single seat.
On top of the shared pool, the owner can cap an individual member (see Per-member caps).
Pick the scope once and it sticks for every later box new:
box team switch still exists as a create-only sticky scope; box org switch is the wallet that also scopes box limits. box team switch personal and box org switch personal both return you to your own account. Override one box with box new --team <TEAM_ID>, box new --personal, or box --org personal new. The dashboard org selector bills the selected team the same way: create sends org in the body (and X-Box-Org). GET /limits accepts ?teamId=, ?org=, or X-Box-Org for the team’s remaining starts and balance.
Invites, member-role changes, and per-member caps stay in the dashboard. Listing, snapshots, and environments stay creator-private even when a request carries an org scope. Per-box API keys cannot carry an org scope (
403 scoped_api_key_forbidden).Per-member caps
One shared balance means one member can spend it all. The owner can set two caps per member on the Team tab, both unlimited by default:
Both apply only to team-billed boxes. A member’s personal boxes are never counted or touched, so a cap of zero means “no spending on this team”, not “no boxes at all”.
Past a usage cap,
box new, box fork and box resume on the team scope answer 402 with team_member_cap_reached. Past a concurrent-box cap they answer 429 with member_limit_reached. The member’s team boxes are snapshotted and archived within about a minute. There is no grace period, because a cap is policy rather than a failed payment — and nothing is lost or owed. Raising the cap, or the billing window renewing, makes those boxes resumable again.
Running out
When your balance reaches zero you get a 24 hour grace period, whether or not auto-pay is on. Your boxes keep running and you are alerted by email, so you can top up before anything stops. If the window passes without payment, running boxes are stopped with a snapshot. Nothing is lost; resume them after topping up. To never hit that stop, enable auto-pay in the billing dashboard. It charges your saved card in small automatic increments when you run out, drawing from any prepaid balance on your account first. If a monthly renewal payment fails while you still have credits, your boxes stay up until the credits run out. Because boxes keep running through the grace period, you can end up using a little more machine time than you had.creditBalanceSeconds stops at zero and reads 0 while that is outstanding; the shortfall is carried and settled on your next payment, so the seconds you consumed are the seconds you pay for.