Limits and pricing
Use this page to look up what each plan costs and allows, how credit is granted and spent, how to cap your spend, and what happens when credit runs out.
Every plan meters compute at the same rate and differs in what it grants and what it lets you run at once.
Plans
Each plan is a monthly subscription that grants its price in credit every month: $20 of credit on the $20 plan, and so on. Compute is drawn against that credit as it runs. A team starts with no plan, and can take one 7-day free trial of the $20 plan.
The table lists the price, credit, and limits of the trial and each plan.
| Free trial | $20 plan | $100 plan | $500 plan | |
|---|---|---|---|---|
| Price | $0 for 7 days | $20 / mo | $100 / mo | $500 / mo |
| Credit | $5, once | $20 / mo | $100 / mo | $500 / mo |
| Concurrent sandboxes | 2 | 20 | 100 | 300 |
| Max sandbox length | 1 h | 12 h | 24 h | 24 h |
| Max vCPU / RAM a template may be built at | 4 / 8 GB | 8 / 16 GB | 8 / 16 GB | 8 / 16 GB |
| Disk per sandbox | 32 GB | 32 GB | 32 GB | 64 GB |
| Parallel template builds | 1 | 5 | 20 | 40 |
| Sandbox start limit, per minute / hour / day | 5 / 25 / 50 | 12 / 60 / 600 | 30 / 250 / 2,000 | 65 / 700 / 6,000 |
The bigger plans sell concurrency, not a bigger sandbox: every paid plan has the same 8 vCPU / 16 GB ceiling.
A team with no plan cannot start sandboxes. It can still list the sandboxes it has and kill them. Start the free trial, or choose a plan, at dashboard.impello.ai/billing.
Free trial
The free trial has these terms:
- It lasts 7 days and runs on the $20 plan, with the trial's own limits above.
- It comes with $5 of credit, once. Trial credit expires when the trial ends.
- It needs a card. One trial per team and one per card, and a prepaid card gets no trial. Paying with something that is not a card, such as Cash App Pay, gets no trial either. Anything that gets no trial is charged $20 at once and the team starts on the $20 plan.
- On day 7 the card is charged $20 and the team moves to the $20 plan, unless the trial was cancelled first. You get a reminder 3 days before.
- If that charge fails, the team has no plan. Once the card has been declined 3 times, or a charge was blocked as fraud, the subscription is cancelled and its unpaid invoice voided, and the team can choose a plan again.
- Cancel at any time from dashboard.impello.ai/billing. A cancelled trial leaves the team with no plan.
Your plan, the credit left on it and these limits are on dashboard.impello.ai/billing and dashboard.impello.ai/limits.
What you are billed for
Compute is metered per vCPU-second, at the same rate on every plan. There is no volume discount: every plan's credit equals its price.
The table shows the rate for a 2 vCPU and a 4 vCPU sandbox.
| Sandbox size | Per second | Per hour |
|---|---|---|
| 2 vCPU | $0.000005 | $0.018 |
| 4 vCPU | $0.00001 | $0.036 |
The rate is $0.0000025 per vCPU-second. The $20 plan's credit covers about 1,111 hours of a 2 vCPU sandbox; the $100 plan's covers about 2,778 hours of a 4 vCPU one.
Only running time is metered. A sandbox is charged from the moment it starts or resumes until it is paused or killed, for the vCPU count it was allocated. There is no separate charge for disk, for network traffic, for snapshots, or for the time a sandbox sits paused.
Prices are exclusive of VAT and any other tax. Payments are sold through Link, Stripe's merchant of record, which adds the tax where you are at checkout and may show the price in your own currency.
Sandbox size
A sandbox's vCPU and RAM come from the template it was built from, not from
your plan. Creating a sandbox takes no size argument. The default template,
base, is built at 2 vCPU and 1 GB, so an hour of it costs $0.018 on every
plan.
Your plan's vCPU and RAM figures are the ceiling a template your own team builds may be built at. The size is fixed at build time, not when a sandbox starts from it. On the free trial that ceiling is 4 vCPU and 8 GB.
Read the size back from the sandbox itself.
import { Sandbox } from '@impello/sdk'
const sandbox = await Sandbox.create('base')
const info = await sandbox.getInfo()
console.log(info.cpuCount, info.memoryMB)
await sandbox.kill()When you build your own template you choose its size with cpuCount and
memoryMB, which default to 2 and 1024. The template builder is TypeScript
only; see Build a custom template. This example
builds a 4 vCPU, 8 GB template.
import { Template } from '@impello/sdk/template'
await Template.build(Template().fromUbuntuImage('24.04'), 'my-template', {
cpuCount: 4,
memoryMB: 8192,
})
Sandboxes share servers Impello owns, under a fair scheduler. A sandbox has its full vCPU count most of the time and at least a quarter of it when every neighbour is busy. Memory is shared too: a sandbox can use all of its RAM, and a server takes on a new sandbox only while it has memory to spare. For what a sandbox is actually using, see Metrics.
Credit
Credit comes in four kinds. Trial credit is spent first, then plan credit, then credit packs.
- Trial credit is $5, granted once when the trial starts. It expires when the trial ends.
- Plan credit is granted at the start of each billing month and expires at the end of that month. It does not roll over.
- Credit packs are one-off purchases of $20, $50 or $100 from dashboard.impello.ai/billing, on paid plans only: not on the trial, and not without a plan. They do not expire while your account is open, so a pack sits untouched until the month's plan credit is gone. A pack is credited once its payment has settled: one paid with a method that settles later is credited then, and one whose payment fails is never credited.
- Credit from Impello, where Impello grants it, is spent like a pack and never expires. It is never refundable.
Nothing is refundable once bought, and consumed compute is never refundable — except that where Impello terminates an account for convenience, unused purchased credit is refunded pro rata. What the team has spent this month, and the ten sandboxes that cost the most in it, are at dashboard.impello.ai/usage.
Cap your spend
An owner can set one monthly budget on dashboard.impello.ai/billing. It caps extra spend on top of your plan, not all usage or card payments. Extra spend excludes the plan fee and usage covered by trial or plan credit. It includes usage paid from credit packs you already bought, which is not a new card charge. A team with $100 of plan credit that has used $45 has $0 extra spend, and a $40 budget does not touch it.
The budget works as follows:
- New sandboxes are refused once extra spend reaches the budget. Usage is reconciled every hour, so the refusal starts within the hour of the figure being crossed, not on the second.
- Raising the budget, or clearing it, lifts the refusal at the next hourly pass.
- A budget never kills a running sandbox. Sandboxes already running carry on to their own timeout.
- An email goes to the team's billing address at 80% and again at 100% of the budget.
- The budget is a whole number of dollars, from $1 to $50,000. It cannot be set at or below the team's extra spend this month.
- A team that sets no budget is never blocked by this.
When credit runs out
Usage is reconciled every hour. At zero available credit new sandboxes are refused. The same hourly pass releases the block once credit returns, so both take effect within the hour rather than on the second the balance moves. Sandboxes that are already running keep running — and keep metering — until their own time limit or the end of a 24-hour grace period, whichever comes first. On the free trial, with its 1-hour limit, that is within the hour. Any still running when the grace period ends are killed if credit has not returned. The team is emailed when it runs out of credit.
A blocked team can still list its sandboxes and kill them; it cannot create one or resume a paused one. Adding credit releases the block at the next hourly pass.
Concurrency
Your plan sets how many sandboxes you may have running at once, and the figure is in the table above. A create over that cap is refused rather than queued, so kill or pause a sandbox and create again. A create is also refused when the fleet is at capacity — again a refusal and never a queue, so retry rather than wait. See Refused creates.
Starts are rate limited as well, per team, over a rolling minute, hour and day. The limits for each plan are in the table above. These calls count as starts:
- A create counts as 1 start.
- A resume counts as 1 start.
- A fork counts as 1 start for each sandbox it makes. A fork whose
countis above your per-minute limit is refused, and a retry does not help.
connect() does not count, even when it resumes a paused sandbox.
To see how close you are, open Billing → Plan. It shows the starts your team has used in the last hour and the last 24 hours against your plan's limits, and when a full window frees its next start.
When a start is over a limit, the API answers HTTP 429 with a Retry-After
header and the message
Sandbox start limit exceeded (per-minute limit). Retry after N seconds.
(per-hour or per-day for the other windows). Both SDKs raise it as
RateLimitError (RateLimitException in Python), as this example shows.
Wait for the time in the message, then retry.
import { RateLimitError, Sandbox } from '@impello/sdk'
try {
const sandbox = await Sandbox.create('base')
await sandbox.kill()
} catch (error) {
if (!(error instanceof RateLimitError)) throw error
console.error('too many starts, retrying later:', error.message)
}Every error type both SDKs raise is listed in Errors.
Paused sandboxes
A paused sandbox costs nothing. It holds its disk, and billing starts again when it resumes. There is no limit on how many sandboxes a team keeps paused, on any plan. Paused sandboxes do not count against the concurrency limit.
See Pause, resume and snapshots for what survives a pause, and Timeouts for the maximum length a sandbox may run before it stops on its own.
Changing plan
An upgrade takes effect immediately and is prorated: you pay for the rest of the period and the larger grant arrives at once. A downgrade waits until the end of the period you have paid for, so the plan, its limits and its grant all stay until then. Until it takes effect, an owner can take it back with Keep on the current plan's row at dashboard.impello.ai/billing/plan.
Cancelling leaves the team with no plan at the end of the period it has paid for. From then on it cannot start sandboxes; the ones it has paused stay, and it can still list and kill them.
Where sandboxes run
Sandboxes run on servers in Germany and Finland. The database, the usage-event store, the cache and the backup storage holding your templates are all in the European Union. Your code and your data do not leave the EU in the course of running. Impello runs one region, and no call takes a region option.
Availability
Impello commits to no level of availability: there is no service level agreement, no uptime target and no service credits. Sandboxes may be interrupted, paused sandboxes may fail to resume, and maintenance may happen without notice. Design for it — and do not run anything on Impello whose interruption you could not tolerate. There is no status page. The full terms are at impello.ai/terms.
Your plan, your credit and your usage are at dashboard.impello.ai/billing. legal@impello.ai is the only address Impello publishes and it is for legal notices. Impello has no separate support channel.
Next: Migrate.