Skip to content
Managedsandbox

Sandbox routing — bring your own keys

Any sandbox.
One API.
Your keys.

You send one request. We route it to your own provider account, with your own key — and never touch the compute bill.

Pick a provider — watch what changes

The request
POST api.managedsandbox.com/v1/exec
{"provider": "e2b", "command": "uname -m"}

→ {"exitCode": 0, "stdout": "x86_64\n"}

0%

Markup on
your compute.

We don’t resell compute. You store your own provider credentials; your provider bills you directly, at the rate you already negotiated.

Which means the sandboxes are yours. Stop using us tomorrow and they keep running under your key.

Credentials encrypted AES-256-GCM — never returned by any endpoint

The problem

Picking a provider is a bet you can’t unwind.

Every provider has its own SDK, its own session model, its own idea of what a sandbox is. That code spreads through your agent loop, your error handling, your tests.

Then the reasons to move show up anyway:

  1. 01Pricing changes.
  2. 02A region you need isn't supported.
  3. 03An outage lands during your launch.
  4. 04An enterprise customer requires their code stay in their own account.

You shouldn’t have to rewrite your agent to answer any of those.

One hop. Your account.

Routing — live above

Your agent posts to one endpoint. ManagedSandbox authenticates, routes and reaps, then forwards the request to e2b running in your own provider account.

What you get

Nothing bills forever.

Every sandbox has a deadline. Idle ones are reaped automatically; a provider destroy that fails is retried with backoff, then dead-lettered for inspection — never silently dropped. A sandbox marked stopped is one the provider confirmed was destroyed.

Retries don’t re-run.

Send an idempotency key and a completed command replays its stored result instead of executing twice. Reuse a key with different parameters and you get a 409, not a surprise.

One request shape

/v1/exec for one-shot commands, /v1/sandboxes for sessions. Files and ports follow the same shape.

Stateless by design

No sticky sessions. Every operation re-attaches by id, so any node serves any request.

Generate a client

OpenAPI at /openapi.json, docs at /docs. Generate in your language instead of learning ours.

Pricing

You pay for routing. Not for cycles.

Compute is billed to you by your provider, at your rate.

FreeAll providers, community support[N] req/mo
ProEmail support, [N]d idempotency retention$[N]/mo
EnterpriseSelf-hosted or dedicated, SSO, audit log, SLATalk to us

Amber = unset. The billing metric is still undecided.

Questions

Doesn't this add latency?
One hop, in the same region as your provider. Sandbox cold start is measured in seconds and dominates everything else, including us.
What if you go down?
Your sandboxes live in your provider account. Point your client back at the provider SDK — what we started is still running under your key.
Why not one provider's SDK?
If you're certain you'll never switch, do that. This is for teams who aren't certain, or who already need more than one.
Can I self-host?
Yes. One service plus a SQLite/libSQL database.

Stop betting your agent on one provider.