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.Documentation Index
Fetch the complete documentation index at: https://docs.tensorlake.ai/llms.txt
Use this file to discover all available pages before exploring further.
All method names below use the Python form. The TypeScript SDK mirrors them in camelCase (
start_process → startProcess, read_file → readFile, memory_mb → memoryMb, 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.
- Python
- TypeScript
Create
Create a sandbox. Omitname 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).
| Parameter | Type | Default | Description |
|---|---|---|---|
name | str | None | None | Human-readable name. Required for suspend/resume. |
cpus | float | 1.0 | Number of CPUs to allocate. |
memory_mb | int | 1024 | Memory in megabytes. 1024–8192 MB per CPU core. |
timeout_secs | int | 600 | Auto-suspend (named) or auto-terminate (ephemeral) after this many seconds. |
image | str | None | platform default | Name or ID of a prebuilt Sandbox Image. |
snapshot_id | str | None | None | Restore from a snapshot instead of booting a fresh VM. |
secret_names | list[str] | None | None | Secrets to inject as environment variables. Must be pre-registered with tl secrets set. |
entrypoint | list[str] | None | None | Custom entrypoint command. |
allow_internet_access | bool | True | Allow outbound internet traffic (see Networking). |
allow_out / deny_out | list[str] | None | None | Outbound destination allow/deny lists. |
sandbox.update(exposed_ports=..., allow_unauthenticated_access=...) after create().
- Python
- TypeScript
Create and connect
Sandbox.create() creates a sandbox and returns a live Sandbox handle you can immediately run commands against.
- Python
- TypeScript
Connect
Get aSandbox 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.
- Python
- TypeScript
List and get
Sandbox.connect() attaches to a single sandbox by ID or name. To enumerate all sandboxes in your namespace, use Sandbox.list().
- Python
- TypeScript
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.
| Parameter | Type | Default | Description |
|---|---|---|---|
name | str | None | None | New name for the sandbox. Naming an ephemeral sandbox makes it non-ephemeral and enables suspend/resume. |
allow_unauthenticated_access | bool | None | None | Whether exposed user ports accept traffic without TensorLake auth. |
exposed_ports | list[int] | None | None | User ports routable through the sandbox proxy. Port 9501 is reserved. |
- Python
- TypeScript
Sandbox.list()), connect first and chain update():
- Python
- TypeScript
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 onsuspend.
- Python
- TypeScript
Terminate
terminate() ends the sandbox permanently. Terminated is a final state and cannot be reversed.
- Python
- TypeScript
Expose and unexpose ports
Route public internet traffic to services listening on user ports inside the sandbox. Requests arrive athttps://<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.
- Python
- TypeScript
Snapshot and restore
Capture a reusable artifact of the sandbox (filesystem + memory + running processes). Restore by passingsnapshot_id to Sandbox.create().
- Python
- TypeScript
Sandbox handle
TheSandbox 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.
| Property (Python) | Property (TypeScript) | Type | Description |
|---|---|---|---|
sandbox_id | sandboxId | str | Server-assigned UUID. |
name | name | str | None | Human-readable name, or None for ephemeral. |
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.”
- Python
- TypeScript
env={"KEY": "value"} (Python) or env: { KEY: "value" } (TypeScript) for per-command environment variables. See Environment Variables.
See Execute Commands 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.- Python
- TypeScript
Writing to stdin
Drive a process interactively from code by writing bytes to its stdin, then closing the stream when you’re done.- Python
- TypeScript
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.- Python
- TypeScript
File operations
Copy data in and out of the sandbox filesystem without spawning a shell.- Python
- TypeScript
Desktop sessions
Desktop sandboxes expose a higher-level remote-control handle on top of the normalSandbox APIs. Use this with tensorlake/ubuntu-vnc to capture screenshots and drive mouse and keyboard input through the authenticated sandbox proxy.
- Python
- TypeScript
| Python | TypeScript | Description |
|---|---|---|
screenshot() | screenshot() | Capture the current desktop as PNG bytes. |
move_mouse(x, y) | moveMouse(x, y) | Move the pointer to absolute screen coordinates. |
click() | click() | Click the current pointer location. |
double_click() | doubleClick() | Double-click the current pointer location. |
scroll_up() / scroll_down() | scrollUp() / scrollDown() | Scroll vertically. |
press(keys) | press(keys) | Send a key or key chord. |
type_text(text) | typeText(text) | Type text into the active window. |
width, height | width, height | Desktop resolution. |
Terminate
Shortcut forsandbox.terminate() that uses the handle you already have.
- Python
- TypeScript
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 Pythonsnake_case; TypeScript uses the camelCase equivalent.
SandboxInfo
Returned bySandbox.create(), Sandbox.connect(), client.list(), and the suspend/resume/expose calls.
| Field | Type | Description |
|---|---|---|
sandbox_id | str | Server UUID. |
name | str | None | Name, or None for ephemeral. |
namespace | str | Namespace owning the sandbox. |
status | SandboxStatus | One of pending, running, snapshotting, suspending, suspended, terminated. |
image | str | None | Sandbox image in use. |
resources | ContainerResourcesInfo | .cpus: float, .memory_mb: int. |
secret_names | list[str] | Injected secrets. |
timeout_secs | int | None | Auto-suspend/terminate timeout. |
exposed_ports | list[int] | None | Public-routed user ports. |
allow_unauthenticated_access | bool | Whether exposed ports accept unauthenticated traffic. |
entrypoint | list[str] | None | Custom entrypoint command. |
network | NetworkConfig | None | Outbound network configuration (allow_internet_access, allow_out, deny_out). |
created_at | datetime | None | Creation timestamp. |
terminated_at | datetime | None | Termination timestamp (if terminated). |
Sandbox
Returned bySandbox.create() and Sandbox.connect(). Exposes the runtime methods documented above plus:
| Property | Type | Description |
|---|---|---|
sandbox_id / sandboxId | str | UUID, even if connected by name. |
name | str | None | Human-readable name. |
ProcessInfo
Returned bystart_process() and list_processes().
| Field | Type | Description |
|---|---|---|
pid | int | Process ID inside the sandbox. |
command | str | The executed command. |
args | list[str] | Command arguments. |
status | ProcessStatus | One of running, exited, signaled. |
exit_code | int | None | Exit code once the process has exited. |
signal | int | None | Signal number if the process was terminated by a signal. |
started_at | datetime | When the process started. |
ended_at | datetime | None | When the process ended. |
CommandResult
Returned byrun().
| Field | Type | Description |
|---|---|---|
stdout | str | Captured standard output. |
stderr | str | Captured standard error. |
exit_code | int | Process exit code. |
SnapshotInfo
Returned by the snapshot APIs.| Field | Type | Description |
|---|---|---|
snapshot_id | str | Server-assigned ID, use to restore. |
sandbox_id | str | Source sandbox this snapshot was captured from. |
status | SnapshotStatus | One of in_progress, completed, failed. |
size_bytes | int | None | Size of the snapshot artifact. |
created_at | datetime | None | Capture timestamp. |
Learn more
Lifecycle
State machine, suspend/resume, timeouts.
Execute Commands
Run commands, capture output, stream.
Process Management
Background processes, stdin, signals.
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.