Skip to main content
A sandbox is a full Linux virtual machine in the cloud. Each one has its own filesystem, network stack, and process space — completely isolated from other sandboxes via hardware-level virtualization. Think of it as a disposable laptop that starts in milliseconds and sleeps when idle.
import { Sandbox } from "@opencomputer/sdk";

const sandbox = await Sandbox.create();
const result = await sandbox.exec.run("echo Hello from $(uname -a)");
console.log(result.stdout);
await sandbox.kill();

Creating a Sandbox

const sandbox = await Sandbox.create({
  template: "my-custom-template",
  timeout: 600,
  cpuCount: 2,
  memoryMB: 1024,
  envs: { NODE_ENV: "production" },
  metadata: { project: "my-app" },
});

Parameters

ParameterTypeDefaultDescription
templatestring"base"Template for the VM root filesystem
timeoutnumber300Idle timeout in seconds (resets on every operation)
envsobjectEnvironment variables set inside the VM
metadataobjectArbitrary key-value pairs stored with the sandbox
cpuCountnumberCPU cores (max 4). TypeScript and HTTP API only
memoryMBnumberMemory in MB (max 2048). TypeScript and HTTP API only
apiKeystringDefaults to OPENCOMPUTER_API_KEY env var
apiUrlstringDefaults to OPENCOMPUTER_API_URL env var
cpuCount and memoryMB are not available in the Python SDK. Use the HTTP API directly for custom resources from Python.

Connecting to an Existing Sandbox

const sandbox = await Sandbox.connect("sb-abc123");

Lifecycle

Sandboxes have four states:
StatusDescription
runningActive, accepting operations
hibernatedState saved, no compute cost
stoppedTerminated
errorFailed
A rolling idle timeout (default 300s) resets on every operation — exec, file access, agent activity. When the timeout expires, the sandbox auto-hibernates if possible, otherwise stops.

Hibernation & Wake

Hibernation snapshots the VM state and stops it — no cost while hibernated. Wake restores the sandbox, typically fast, with a cold-boot fallback if snapshot restore is unavailable.
await sandbox.hibernate();
// ... later ...
await sandbox.wake({ timeout: 600 });
hibernate() and wake() are available in the TypeScript SDK and CLI. Python SDK support is planned — use the HTTP API directly.

Methods

MethodTypeScriptPythonDescription
Killawait sandbox.kill()await sandbox.kill()Terminate the sandbox
Check statusawait sandbox.isRunning()await sandbox.is_running()Returns boolean
Set timeoutawait sandbox.setTimeout(600)await sandbox.set_timeout(600)Update idle timeout (seconds)
Hibernateawait sandbox.hibernate()Snapshot and stop
Wakeawait sandbox.wake()Resume from hibernation

Properties

PropertyTypeScriptPythonDescription
Sandbox IDsandbox.sandboxIdsandbox.sandbox_idUnique identifier
Statussandbox.statussandbox.statusCurrent lifecycle state
Agentsandbox.agentsandbox.agentAgent sessions
Execsandbox.execsandbox.execCommand execution
Filessandbox.filessandbox.filesFilesystem
PTYsandbox.ptysandbox.ptyInteractive terminals
sandbox.commands is a deprecated alias for sandbox.exec. Use sandbox.exec in all new code.

Python Context Manager

The Python SDK supports async with for automatic cleanup:
async with await Sandbox.create() as sandbox:
    result = await sandbox.exec.run("echo hello")
    print(result.stdout)
# sandbox.kill() called automatically on exit

Forking from Checkpoints

Create a sandbox from a saved checkpoint — useful for parallel testing from a known-good state:
const forked = await Sandbox.createFromCheckpoint("cp-abc123", { timeout: 600 });
See Checkpoints for the full workflow.
CLI: oc sandbox for lifecycle management. Full reference: TypeScript SDK · Python SDK · HTTP API.