Start
Quickstart
Build the clients, start the gateway, create a sandbox, run a command, and clean up.
On this page+−
Before you begin
Use a checkout of ephemeral-sandbox with Docker running, Rust 1.85 or newer, and Cargo available. The Docker backend needs a local base image and a Linux-musl daemon artifact matching the container architecture.
docker info
docker pull ubuntu:24.04
rustc --version
cargo --versionContent TODO: the gateway launcher also requiresdist/git/linux-arm64.taranddist/git/linux-amd64.tar. The source repository does not currently document a command that creates these archives. Obtain the project-provided artifacts before continuing; no unverified download URL is listed here.
Build the clients
Add the repository wrappers to PATH. They load the shared gateway token and prefer an existing debug binary. Build the three CLI executables and the MCP server together.
cd /absolute/path/to/ephemeral-sandbox
export PATH="$PWD/bin:$PATH"
cargo build -p sandbox-cli --all-features -p sandbox-mcpStart the gateway
Bootstrap the musl cross toolchain once, then start the Docker-backed gateway. The rebuild flag forces a fresh daemon package at the architecture configured by manager.docker.daemon_binary_path in config/prd.yml.
setup-musl-cross
start-sandbox-docker-gateway --rebuild-binaryThe launcher prints the gateway address, token file, PID file, and log path. The default address is 127.0.0.1:7878; the wrappers read the token automatically.
Create a sandbox
Confirm the local image, then create a sandbox whose workspace bind root is the current checkout. The create response contains the sandbox ID used by runtime and observability calls.
sandbox-manager-cli list_docker_images
sandbox-manager-cli create_sandbox --image ubuntu:24.04 --workspace-bind-root "$PWD"
sandbox-manager-cli list_sandboxesCopy the returned ID for the remaining commands. The examples below use the help surface’s verified placeholder eos-abc; replace it with your value.
Execute and inspect
Run a command through the runtime client, then inspect the sandbox from the separate observability client. With no workspace-session ID, exec_command creates an automatic session, publishes its changes after the last command reaches a terminal state, and destroys that session.
sandbox-runtime-cli --sandbox-id eos-abc exec_command pwd
sandbox-runtime-cli --sandbox-id eos-abc file_read --path README.md --limit 20
sandbox-observability-cli snapshot --sandbox-id eos-abcFor interactive commands and stable output offsets, continue with the files and commands guide.
Clean up
Inspect the manager record once more, then stop the daemon, destroy the runtime sandbox, and remove the record.
sandbox-manager-cli inspect_sandbox --sandbox-id eos-abc
sandbox-manager-cli destroy_sandbox --sandbox-id eos-abc
sandbox-manager-cli list_sandboxes