Skip to main content
This page is the runtime API surface of the Sandbox SDK in one place. It maps the Python and TypeScript sandbox-management APIs you’ll use to create sandboxes, execute work inside them, manage files and processes, and interact with desktop sandboxes. Each detail page linked below expands on the same APIs with longer examples and edge cases.
All method names below use the Python form. The TypeScript SDK mirrors them in camelCase (start_processstartProcess, read_filereadFile, memory_mbmemoryMb, etc.). The same JavaScript runtime API is used from Node.js.
This page focuses on the sandbox runtime SDK surface. Related interfaces documented elsewhere include the CLI and HTTP API, the image-building DSLs in Sandbox Images, and the browser/VNC integration details in Computer Use.
Every method below is also available as an async-native variant on AsyncSandbox in Python — same names and parameters, just awaited. See the Async SDK page for usage. The TypeScript SDK is already Promise-based, so the methods shown in the TypeScript tabs are the async API.

Sandbox

Sandbox is the top-level entry point for managing sandboxes in your namespace. Use Sandbox.create() to start a sandbox and get a handle. Use Sandbox.connect() to reconnect to an existing sandbox by ID or name.
See Authentication for the full auth flow.

Create

Create a sandbox. Omit name for an ephemeral sandbox (cannot be suspended); pass name to create a named sandbox that supports suspend/resume. Returns a connected Sandbox handle (blocks until the sandbox is running). To expose user ports for inbound traffic, call sandbox.update(exposed_ports=..., allow_unauthenticated_access=...) after create().

Create and connect

Sandbox.create() creates a sandbox and returns a live Sandbox handle you can immediately run commands against.

Connect

Get a Sandbox handle for an existing sandbox (by ID or name) without creating a new one. Use this to rejoin a named sandbox after resume, or to operate on a sandbox a different process created.

List and get

Sandbox.connect() attaches to a single sandbox by ID or name. To enumerate all sandboxes in your namespace, use Sandbox.list().

Update

sandbox.update() is the unified instance method for changing a sandbox’s name, exposed user ports, or unauthenticated-access flag — renaming and port exposure are the same call. Assigning a name to an ephemeral sandbox converts it to a named sandbox that supports suspend/resume.
If you only have a sandbox ID (for example, from Sandbox.list()), connect first and chain update():

Suspend and resume

Pause a running named sandbox in place; resume it later under the same ID with its memory, filesystem, and running processes intact. Ephemeral sandboxes return an error on suspend.

Terminate

terminate() ends the sandbox permanently. Terminated is a final state and cannot be reversed.
See Lifecycle for the full state machine.

Expose and unexpose ports

Route public internet traffic to services listening on user ports inside the sandbox. Requests arrive at https://<port>-<sandbox-id-or-name>.sandbox.tensorlake.ai. Port exposure is just a sandbox.update() call — pass exposed_ports and (optionally) allow_unauthenticated_access. Pass exposed_ports=[] to remove all exposed ports.
See Networking for authenticated vs. unauthenticated access and how clients reach user ports.

Snapshot and restore

Capture a reusable artifact of the sandbox (filesystem + memory + running processes). Restore by passing snapshot_id to Sandbox.create().
Suspend pauses this sandbox; snapshot captures a reusable artifact you restore into a new sandbox. See Snapshots.

Sandbox handle

The Sandbox object returned by Sandbox.create() or Sandbox.connect() is how you execute work inside a running sandbox. All methods below target a single live sandbox.

Run a command

run() is the short-lived foreground execution primitive: send a command, wait for it to exit, receive captured output. Use it for the common case of “do this one thing and give me the result.”
Pass env={"KEY": "value"} (Python) or env: { KEY: "value" } (TypeScript) for per-command environment variables. See Environment Variables. See Commands & Processes for streaming, multi-step shell pipelines, and error handling.

Background processes

For long-running or concurrent work, start a process and keep the handle so you can monitor, stream output, and signal it.

Writing to stdin

Drive a process interactively from code by writing bytes to its stdin, then closing the stream when you’re done.
See Commands & Processes for the full API.

PTY sessions

Open an interactive terminal inside the sandbox. The PTY is created over HTTPS; terminal I/O then moves over a WebSocket attached to the session.
See PTY Sessions for the wire protocol, reconnect flow, and resize frames.

File operations

Copy data in and out of the sandbox filesystem without spawning a shell.
See File Operations for binary uploads, recursive listings, and move/copy patterns.

Desktop sessions

Desktop sandboxes expose a higher-level remote-control handle on top of the normal Sandbox APIs. Use this with tensorlake/ubuntu-vnc to capture screenshots and drive mouse and keyboard input through the authenticated sandbox proxy.
Common desktop methods are: See Computer Use for reconnect patterns, coordinate workflows, and noVNC integration.

Terminate

Shortcut for sandbox.terminate() that uses the handle you already have.

Data models

The SDK returns typed objects for every API call. The fields below are the ones you’ll read most often. Field names shown in Python snake_case; TypeScript uses the camelCase equivalent.

SandboxInfo

Returned by Sandbox.create(), Sandbox.connect(), client.list(), and the suspend/resume/expose calls.

Sandbox

Returned by Sandbox.create() and Sandbox.connect(). Exposes the runtime methods documented above plus:

ProcessInfo

Returned by start_process() and list_processes().

CommandResult

Returned by run().

SnapshotInfo

Returned by the snapshot APIs.

Learn more

Lifecycle

State machine, suspend/resume, timeouts.

Commands & Processes

Run commands, capture output, stream, and manage background processes.

PTY Sessions

Interactive shells over WebSocket.

File Operations

Read, write, list, delete.

Snapshots

Capture and restore full VM state.

Sandbox Images

Prebuild dependencies into reusable images.

Computer Use

Desktop sessions, screenshots, mouse, keyboard.

Networking

Expose user ports to the internet.

Environment Variables

Per-command and per-PTY environment.