Python client SDK for Sandbox Agent — universal API for automatic coding agents in sandboxes
Project description
sandboxagent
Python client SDK for Sandbox Agent — the universal API for automatic coding agents in sandboxes.
Installation
pip install sandbox-agent-sdk
Quick Start
import asyncio
from sandboxagent import SandboxAgent
async def main():
# Connect to a running sandbox-agent server
agent = await SandboxAgent.connect("http://localhost:2468")
# Check health
health = await agent.health()
print(f"Health: {health}")
# Filesystem operations
await agent.write_file("/tmp/hello.txt", "Hello from Python!")
content = await agent.read_file("/tmp/hello.txt")
print(f"File content: {content}")
# Run a process
result = await agent.run_process({
"command": "/bin/echo",
"args": ["hello", "world"],
"cwd": "/tmp"
})
print(f"stdout: {result['stdout']}")
# List available agents
agents = await agent.list_agents()
print(f"Available agents: {[a['id'] for a in agents]}")
# Get inspector URL
print(f"Inspector: {agent.inspector_url}")
await agent.dispose()
asyncio.run(main())
Starting a Local Server
from sandboxagent import SandboxAgent
# Download and start a local sandbox-agent binary
agent = await SandboxAgent.start()
print(f"Server running at {agent._base_url}")
print(f"Inspector: {agent.inspector_url}")
# ... use the agent ...
await agent.dispose()
ACP Sessions
# Create an ACP session with an agent
session = await agent.create_session(agent="claude")
# Send a prompt
response = await session.prompt("Write a Python function to calculate factorial")
print(response)
# Configure session settings
await session.set_model("claude-sonnet-4-20250514")
await session.set_mode("code")
# Destroy the session
await agent.destroy_session(session.id)
Workspace Configuration
Inject config files and environment variables into sandboxes during startup:
from sandboxagent import SandboxAgent
from sandboxagent.workspace_config import WorkspaceConfig
# Generate config content
auth_content = WorkspaceConfig.auth_json({
"openai_api_key": "sk-...",
"anthropic_api_key": "sk-ant-..."
})
# Start sandbox with workspace files
agent = await SandboxAgent.start(
workspace_files={
"auth.json": auth_content,
".env": "API_KEY=secret\nDEBUG=1"
},
workspace_env={"FOO": "bar"}
)
API Coverage
Core APIs
- Health:
health(),wait_for_health() - Filesystem:
read_file(),write_file(),list_entries(),stat(),move(),delete_entry(),mkdir_fs() - Processes:
create_process(),run_process(),list_processes(),get_process(),stop_process(),kill_process(),delete_process() - Agents:
list_agents(),get_agent(),install_agent() - Config:
get_mcp_config(),set_mcp_config(),get_skills_config(),set_skills_config(),get_process_config(),set_process_config()
Session Management
create_session(),resume_session(),destroy_session(),list_sessions(),get_session()- Session helpers:
prompt(),set_model(),set_mode(),set_thought_level(),set_config_option()
Process Helpers
- Logs:
follow_process_logs()— SSE streaming with log subscription - Terminal:
connect_process_terminal()— WebSocket interactive terminal
Sandbox Lifecycle
pause_sandbox(),resume_sandbox(),restart_sandbox(),destroy_sandbox(),kill_sandbox()
Development
# Setup
uv sync
# Run tests
uv run pytest
# Run integration tests (requires local server)
uv run pytest -m integration
# Lint and format
uv run ruff check
uv run ruff format
# Type check
uv run mypy sandboxagent
License
Apache-2.0
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sandbox_agent_sdk-0.1.4.tar.gz.
File metadata
- Download URL: sandbox_agent_sdk-0.1.4.tar.gz
- Upload date:
- Size: 91.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.1 {"installer":{"name":"uv","version":"0.11.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aa9a01ad94c2b148a53f92feae6c8e0db420145c4243fc9983027d7c3381317c
|
|
| MD5 |
6ba8219c7795bc416e93245aca013de9
|
|
| BLAKE2b-256 |
9df03195ef21307feba66d9c5f6c3b396ae1c34d4b2029127a805417a67e08f7
|
File details
Details for the file sandbox_agent_sdk-0.1.4-py3-none-any.whl.
File metadata
- Download URL: sandbox_agent_sdk-0.1.4-py3-none-any.whl
- Upload date:
- Size: 81.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.1 {"installer":{"name":"uv","version":"0.11.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
438cb8c3d05f178dbfbe0adeda4d565798f69aaf813783118b8e6128500d55e6
|
|
| MD5 |
15abcb1b2207c87fc0131cd3106a1c8b
|
|
| BLAKE2b-256 |
5ef0bd3facfc9b2f6443abc1b00030635bf5a5b95c41a592e9b96d183fd66417
|