Skip to main content

List

With no sandboxes it prints No sandboxes yet. Make one with: zode new.

Make

Leave out the name and the API picks one. Names use lowercase letters, digits and hyphens, up to 63 characters. --repo, --branch and --pr are labels; they do not clone anything. Leave out --browser or --desktop and the workspace default applies; --browser=false turns it off explicitly.
On the Free plan you can run 2 sandboxes at once. A third zode new fails with Your free plan runs at most 2 sandboxes at once. Stop one first. A workspace with no card on file and no credit left cannot make, fork or start sandboxes until someone adds a card or credit in Billing. See Pricing.

Open a shell

Without a command you get a root login shell (bash -l) in /workspace. When your stdin and stdout are a terminal, the session gets a TTY and follows your window size. With -- cmd, it runs that command instead, the same way as zode exec: one argument runs through bash -lc, several run as is. zode ssh takes the same -e and --env-file flags as zode exec, placed before the sandbox name.

Run a command

zode exec streams stdout and stderr as the command runs, then exits with the command’s exit code. Put the flags before the sandbox name. The variables go on top of the sandbox’s environment and travel in a header, not the URL. How the command runs depends on how many arguments follow --:
  • Exactly one argument runs through bash -lc, so pipes, &&, globs and variables work. Quote the whole command line as one argument.
  • Several arguments run as argv, as given, with no shell.
With several arguments, a program that does not exist gives zode: command not found: X, and one that is not executable gives zode: permission denied: X. With one argument, bash reports it and the command exits 127 or 126, as in any shell. stdin: piped input is streamed to the command. If your stdin is a terminal and you did not pass -t, the command gets end-of-file at once, so commands that read stdin do not hang. Without a TTY, Ctrl-C sends INT to the remote command instead of dropping the connection. If the kernel kills the command for running out of memory, zode prints zode: killed: out of memory (peak N MB). A sandbox that is not running gives zode: demo is stopped; zode start demo.

Give an agent a task

Runs your default coding agent (set under Agents & proxying, Claude Code otherwise) on one task in the sandbox and streams its output. The command exits with the agent’s exit code. The agent signs in with your subscription or your keys, whichever you chose for it. It runs with its own permission prompts off, because nobody can answer them in an unattended VM.

Fork

The copy has the parent’s memory, running processes and disk, and keeps its size, region, repo and environment. Browser and desktop follow the parent unless you pass the flags. --branch, --pr and --max-cost replace the parent’s branch label, PR label and AI spend cap, with the same rules as on zode new. Flags can go anywhere on the line.
A fork counts toward your plan’s running-sandbox limit.

Stop, start, delete

A stopped sandbox still pays for storage once it is 48 hours old. zode rm cannot be undone. See Sandboxes for the full lifecycle.