Skip to content
View as Markdown

Quickstart ​

Three ways in. Pick the one that matches what you already have.

1. The published stack (fastest) ​

bash
curl -O https://raw.githubusercontent.com/sandrpod/sandrpod/main/docker/docker-compose.yml
docker compose up -d
ContainerWhat it is
servercontrol plane on localhost:8080
podera Docker worker; dials the control plane over a reverse tunnel
toolboxpulled by the worker at sandbox-create time, one per sandbox

The worker needs the Docker socket. The control plane needs nothing else.

Verify:

bash
curl -s localhost:8080/health
# {"mode":"control-plane+tunnel","status":"ok","version":"0.7.0", ...}

2. A sandbox, then code ​

bash
pip install sandrpod-cli

export SANDRPOD_API_URL=http://localhost:8080
export SANDRPOD_API_TOKEN=change-me          # the -token you started the server with

sandrpod-cli create demo --provider local
sandrpod-cli execute demo "echo hello from a sandbox you own"
sandrpod-cli delete demo

create waits for RUNNING by default. --no-wait returns the job id so a long provisioning run does not block a script.

3. The same thing over HTTP ​

bash
curl -s -X POST localhost:8080/api/v1/sandboxes \
  -H "X-Sandrpod-Token: change-me" \
  -H 'Content-Type: application/json' \
  -d '{"name":"demo","provider_type":"local"}'

curl -s -X POST "localhost:8080/api/v1/sandboxes/execute?sandbox=demo" \
  -H "X-Sandrpod-Token: change-me" \
  -H 'Content-Type: application/json' \
  -d '{"language":"bash","code":"uname -a"}'

Where the token comes from ​

  • -token on the control plane, or SANDRPOD_TOKEN.
  • It is the operator credential: it can see every sandbox and every worker.
  • A deployment that hands out per-workspace credentials issues them separately (an sk_ key, or an e2b_ key for the E2B surface). See API keys.

Next ​

Apache 2.0 — your clouds, your machines, your rules.