Skip to content

LangGraph Agent + OpenSandbox Example

Integrate LangGraph with OpenSandbox using a graph-driven control flow. The example uses explicit state machine nodes to create, prepare, run, inspect, and clean up a sandbox, plus a decision node to retry with a fallback command if the run step fails.

Start OpenSandbox server [local]

Pre-pull the code-interpreter image (includes Python):

shell
docker pull sandbox-registry.cn-zhangjiakou.cr.aliyuncs.com/opensandbox/code-interpreter:v1.1.0

# use docker hub
# docker pull opensandbox/code-interpreter:v1.1.0

Start the local OpenSandbox server, logs will be visible in the terminal:

shell
uv pip install opensandbox-server
opensandbox-server init-config ~/.sandbox.toml --example docker
opensandbox-server

Run the example

shell
# Install OpenSandbox + LangGraph deps
uv pip install opensandbox langgraph langchain-anthropic

# Run the example (requires SANDBOX_DOMAIN / SANDBOX_API_KEY / ANTHROPIC_API_KEY)
uv run python examples/langgraph/main.py

The workflow writes files, executes a job, retries with a fallback command on failure (default python vs python3), then summarizes results with Claude and cleans up the sandbox instance.

LangGraph + OpenSandbox screenshot

Environment Variables

VariableDefaultDescription
SANDBOX_DOMAINlocalhost:8080Sandbox service address
SANDBOX_API_KEY(optional for local)API key if your server requires authentication
SANDBOX_IMAGEsandbox-registry.cn-zhangjiakou.cr.aliyuncs.com/opensandbox/code-interpreter:v1.1.0Sandbox image to use
ANTHROPIC_API_KEY(required if ANTHROPIC_AUTH_TOKEN is unset)Your Anthropic API key
ANTHROPIC_AUTH_TOKEN(alternate)Alternate Anthropic auth token (uses Authorization header)
ANTHROPIC_BASE_URL(optional)Anthropic API endpoint override
ANTHROPIC_MODELclaude-3-5-sonnet-latestModel to use

WARNING

ANTHROPIC_API_KEY and ANTHROPIC_AUTH_TOKEN should not be set together.

References

Released under the Apache 2.0 License.