Skip to main content
Set run_on= (Python) or run_on: (YAML) once on a flow, team, or workflow and every agent shares one remote sandbox, so a file written by one step is visible to the next.
Without a shared sandbox, each agent provisions its own isolated instance, so agents cannot hand files to each other. run_on= gives them all the same /workspace.

Quick Start

1

Share one sandbox across a workflow

Set run_on once — every step runs its shell and file tools in one sandbox. Python and no-code YAML both use the same key.
2

Share one sandbox across a team

The same run_on= kwarg works on a team.
3

From workflow YAML — no Python

Add one line — run_on: docker — to any workflow YAML and every step shares the same sandbox. The rest of the file is a normal workflow.
Run it with the standard CLI — no Python needed:
The accepted values are identical to the Python API — docker | e2b | modal | daytona | flyio | tenki | local, or omit run_on: entirely for the default local behaviour (see the Configuration Options table below). Action-only steps like - agent: X; action: "..." share the same sandbox as regular steps, so the writer/reader pattern above works exactly as shown.
A typo fails when the file loads, before any container starts, with the list of valid names — you are never surprised mid-run:
The value is case- and whitespace-insensitive — RUN_ON: DOCKER and run_on: " docker " both normalise to docker. Omitting run_on: leaves every existing workflow YAML behaving exactly as before — nothing is provisioned.
4

Pick a provider

Pass any provider name, or a pre-configured provider instance to customise the image and resources. The provider name is identical for Python and YAML.

How It Works

One sandbox is provisioned lazily on first tool use and torn down when the run ends, even if a step raises.
Action-only steps join the sandbox too. A step with action: but no matching agent: builds a temporary agent during the run — that temp agent shares the same sandbox, so no shell or file tool escapes to the host.

Load-time Validation

A typo in run_on: fails when the YAML loads, not halfway through a paid run. The provider name is checked against the registry at parse time. An unknown provider raises with the full list of valid names:
A non-string value raises immediately too:
The value is case- and whitespace-insensitive — DOCKER and " docker " both normalise to docker.

Configuration Options

run_on= accepts a provider name or a pre-configured provider instance. The accepted values are identical for Python (run_on="docker") and YAML (run_on: docker).

Which param goes where

run_on= is the team- and workflow-level kwarg; per-agent execution still uses compute=.
run_on= and per-agent compute= are different knobs. Set run_on= on the flow or team when agents share files; use compute= on an individual agent to sandbox just that agent.

Common Patterns

Hand a file between two agents — step 1 writes, step 2 reads the same /workspace.
Share one sandbox across a team where one agent’s output file is another agent’s input.

Choosing a Provider

Pick the provider that matches where you want the sandbox to live.

Best Practices

Per-agent compute= gives each agent its own isolated instance, so files written by one agent are invisible to the next. Set run_on= on the flow or team when agents need the same /workspace.
The default is zero-overhead — nothing is provisioned. Only set run_on= when a run actually shares files or shell state across agents.
All steps share one instance. Pass a configured provider instance to size the image, CPU, and memory for the biggest step, since it affects the whole run.
Agents that already carry their own backend= are deliberately skipped — they keep pointing at their own runtime. Use one approach or the other per agent.

YAML Workflows

Full no-code workflow reference — including the top-level run_on: key.

Managed Agents

Per-agent managed execution and providers.

Managed CLI

Use managed ps / stop to find and reclaim stray sandboxes.

Managed Agents (Docker)

Docker daemon setup and provider details.

Managed Agents (E2B)

E2B cloud sandbox and E2B_API_KEY setup.

Managed Agents (Modal)

Modal cloud compute setup.

Tenki Cloud

Tenki microVM and TENKI_API_KEY setup.