One way to work with remote sandboxes from your application. Pick a host (E2B, Daytona, Blaxel, Runloop, Fly Machines, or Docker on your machine), and use the same mental model in Go, Python, and TypeScript: open a sandbox, run commands, read and write files, and tear down when you are done.
E2B · Daytona · Blaxel · Runloop · Fly Machines
Sandboxer is a family of client libraries. Each library talks directly to
the provider you configure. There is no separate Sandboxer service in the
request path: your credentials go to the vendor API (or to the docker CLI for
local sandboxes).
Use it when you are building automation, agents, CI, or internal tools that need isolated environments without maintaining one integration per vendor.
- 🧠 One mental model — Create sandboxes, run commands, and manage files the same way in Go, Python, and TypeScript.
- 🔌 Many hosts, one surface — Switch between E2B, Daytona, Blaxel, Runloop, Fly Machines, or local Docker without rewriting your integration.
- 🛤️ No extra hop — Your app talks straight to each provider; Sandboxer is not a hosted proxy in the middle.
- 🔑 Your secrets, your boundary — API keys and tokens go to the vendor (or your machine for local runs), not through a separate Sandboxer service.
- 📚 Typed SDKs and examples — References and runnable examples per language so you can ship quickly and debug with confidence.
| Language | Reference | Examples |
|---|---|---|
| Go | Reference | examples/go |
| Python | Reference | examples/python |
| TypeScript | Reference | examples/typescript |
go get github.com/hyperterse/sandboxer/sdks/go # version: see sdks/go/go.mod
pip install hyperterse-sandboxer # Python 3.10+; import package is still `sandboxer`
npm install @hyperterse/sandboxer # see sdks/typescript/README.mdFrom a clone of this repository: run bun install, bun run install:python,
and bun run build:typescript, or point your Go module at sdks/go (see
examples/go/go.mod for a replace example). Scripts are
listed in the root package.json.
Set base_url / baseUrl and the API key or token your provider
expects when you construct the client. Typical origins:
| Provider | Typical base URL | Notes |
|---|---|---|
| E2B | https://api.e2b.app |
API key (header handled in the driver) |
| Daytona | https://app.daytona.io/api |
Bearer token |
| Blaxel | https://api.blaxel.ai/v0 |
Bearer or API key; optional X-Blaxel-Workspace (BL_WORKSPACE / BLAXEL_WORKSPACE) |
| Runloop | https://api.runloop.ai/v1 |
Bearer |
| Fly Machines | https://api.machines.dev/v1 |
Bearer (FLY_API_TOKEN) |
| local | not used | Host docker CLI; no remote API key |
Exact environment variables and headers live in each provider under
sdks/*/providers/. Treat API keys like any other secret: store them in your
secret manager or environment, not in source control.
Copy-paste examples and full APIs live in each language reference and under
examples/ for Go, Python, and
TypeScript.
| What you see | What to try |
|---|---|
| Local sandbox does not start | Confirm docker info succeeds on the host. |
| 401 or 403 from the host | Match API key, token, and base URL to that vendor’s documentation. |
Python ModuleNotFoundError: sandboxer |
Run pip install -e ./sdks/python or pip install hyperterse-sandboxer. |
| TypeScript import errors | Build sdks/typescript or npm install @hyperterse/sandboxer (see sdks/typescript/package.json). |
Local development and CI: CONTRIBUTING.md.