← Providers
OpenScale Sandboxes
provider: "openscale"
Per second on allocated size; no platform fee or minimum; paused = free; size comes from the template (E2B-compatible API); Singapore only; needs a pay-as-you-go key.
Always runs at 2 vCPU / 1 GB unless you pass your own image (image.openscale), so the router only sends it work that fits.
List price per hour
| 1 vCPU · 2 GB | $0.014 at 2 vCPU · 1 GB only |
| 2 vCPU · 4 GB | $0.014 at 2 vCPU · 1 GB only |
| 4 vCPU · 8 GB | $0.014 at 2 vCPU · 1 GB only |
| 8 vCPU · 16 GB | $0.014 at 2 vCPU · 1 GB only |
| 16 vCPU · 32 GB | max 8 vCPU |
| 32 vCPU · 128 GB | max 8 vCPU |
- Source
- openscale.so, 2026-11-05 (an estimate, not a bill)
- Billing
- the size you ask for, while it runs
- Plan
- none needed
Adapter
- Supports
- Exec + streaming · Files · Pause · Custom image
- Max size
- 8 vCPU · 16 GB
- Routing
- Chosen when it's the cheapest fit, or as a fallback
- Docs
- openscale.so
Measured on real accounts
- Real-account check
- 14 / 14 steps
- 2026-11-13
- Cold start
- 366 ms
- median, 2 locations
- Succeeded
- 100%
- of benchmark sandboxes
- Size you get
- 2 vCPU / 1 GB
- asked for 2 vCPU / 4 GB
- Billed vs list price
- no billing API
- 2026-11-06
Real-account check, step by step
14 of 14 steps passed on a real account, 2026-11-13 (v0.7.0).
- createpassed
- exec: stdout, stderr, exit codepassed
- exec: env and cwdpassed
- exec: UTF-8 outputpassed
- exec: streamingpassed
- files: binary round-trippassed
- files: 1 MB round-trippassed
- files: missing file is an errorpassed
- files: visible to commandspassed
- exec: command timeoutpassed
- exec: timed-out command was stoppedpassed
- pause and resumepassed
- killpassed
- killed sandbox is gonepassed
setup
npm i @sandboxrouter/sdk e2b
export OPENSCALE_API_KEY=...use OpenScale Sandboxes
import { Router } from "@sandboxrouter/sdk";
const router = new Router();
const sbx = await router.create({}, { provider: "openscale" });
await sbx.exec("uname -a", { onStdout: (c) => process.stdout.write(c) });
await sbx.kill();