Skip to content

Execution backends ​

Every tool that touches a filesystem or runs a command goes through an execution backend. The backend decides where that happens. The tool suite does not change: read_file, shell, grep, git_commit and the rest behave identically whether they are running on your laptop, inside a container, or on a host across the network.

Switching ​

/backend
/backend local
/backend docker {"image": "python:3.11-slim"}
/backend ssh {"host": "10.0.0.5", "user": "build", "key": "~/.ssh/id_ed25519"}

/backend with no argument prints the current one. The change applies to the session immediately, including work already in flight on the next tool call. A project can set its default in <project>/.snowpea/settings.json under backend.

local ​

The default. Commands run as your user, in the session's working directory, with your environment. Nothing is isolated — this is the backend you want while working on your own code, and the one you should not point an auto-mode job at.

docker ​

/backend docker {"image": "python:3.11-slim"}
KeyDefaultMeaning
imagepython:3.11-slimimage to create the container from
workdirthe session workdirbind-mounted at the same absolute path inside

The container is named after the session, created lazily on the first tool call, and removed when the session closes. The working directory is bind-mounted at the same absolute path, so paths the model reasons about are the same inside and outside. Everything else — installed packages, network, environment — is the container's.

This is the right backend for auto mode. The agent can install whatever it likes and break whatever it likes, and you throw the container away.

Requires a running Docker daemon. Without one, the backend reports the failure rather than silently falling back to local.

ssh ​

/backend ssh {"host": "10.0.0.5", "port": 22, "user": "build", "key": "~/.ssh/id_ed25519"}
KeyMeaning
hosthostname or address
portdefaults to 22
userremote user
keyprivate key path
passwordalternative to key
cwdremote working directory, defaults to the remote home

Commands run over SSH; file reads and writes go over SFTP. Files the agent writes exist on the remote host only — nothing is mirrored locally, and a write_file under an ssh backend leaves your own disk untouched. Key authentication is strongly preferred; a password in a session config is a password in a config file.

Checking where you are ​

The honest test is to ask:

bash
snowpea -c "run hostname and tell me what it printed"

Under local it is your machine, under docker the container id, under ssh the remote host. Since the agent's whole view of the filesystem comes through the backend, this is not a detail it can be wrong about.

What does not move ​

The backend covers tool execution, not the daemon. Sessions, memory, the approval queue, the scheduler and the gateway all stay in the daemon on your machine, whichever backend a session uses. Network tools — web_search, web_extract, the browser tools, media tools and MCP servers — run from the daemon, not from the backend host.

Next ​

Headless — using all of this from a script.

MIT licensed. The manual is generated from the product repositories — see the banner on each page.