Sandflare Python SDK — Firecracker microVM sandboxes for AI agents
Project description
Sandflare Python SDK
The official Python SDK for creating and managing Sandflare sandboxes.
Install
pip install sandflare
For local development:
pip install -e sdk/python/
Quick start
from sandflare import Sandbox
sandbox = Sandbox.create("agent")
sandbox.run_code("value = 10")
result = sandbox.run_code("value += 5\nprint(value)")
print(result.stdout)
Environment variables
SANDFLARE_API_KEY: preferred API keySANDFLARE_API_URL: optional API base URL overridePANDAAGENT_API_KEY: legacy API key aliasPANDAAGENT_BASE_URL: legacy base URL alias
Sandbox methods
exec / run_python / run_node
result = sb.exec("ls /home/agent")
result = sb.run_python("print('hello')")
result = sb.run_node("console.log('hello')")
stream / exec_stream
stream() reads all SSE output then yields StreamEvent objects (backward-compatible):
for event in sb.stream("python3 train.py"):
if event.event in ("stdout", "stderr"):
print(event.line, end="", flush=True)
elif event.event == "done":
print(f"\nexited {event.exit_code}")
exec_stream() is a true SSE generator that yields events as they arrive:
for event in sb.exec_stream("python3 train.py", timeout=120):
if event.type in ("stdout", "stderr"):
print(event.data, flush=True)
elif event.type == "done":
print(f"\nexited {event.exit_code}")
metrics()
m = sb.metrics()
print(f"CPU: {m.cpu_used_pct:.1f}% RAM: {m.mem_used}/{m.mem_total} bytes")
kill_process(pid)
sb.kill_process(1234)
git_clone(repo, ...)
result = sb.git_clone(
"https://github.com/org/repo",
path="/home/agent/repo",
branch="main",
depth=1,
)
print(result.output)
File I/O
sb.write_file("/home/agent/data.csv", csv_text)
content = sb.read_file("/home/agent/output.txt")
sb.upload("local.png", "/home/agent/img.png")
raw_bytes = sb.download("/home/agent/img.png")
entries = sb.ls("/home/agent")
Template class
Build custom sandbox templates from Dockerfiles:
from sandflare import Template
# Submit a build (returns immediately)
job = Template.build(
name="my-template",
dockerfile="FROM ubuntu:22.04\nRUN apt-get update && apt-get install -y python3",
description="Custom Python env",
)
print(job.id, job.status) # e.g. "tmpl-abc123", "building"
# Poll until ready (up to 30 minutes)
job = Template.wait_for_build(job.id, timeout_seconds=600)
print(job.status) # "ready"
# Use template when creating a sandbox
sb = Sandbox.create("agent", template_id=job.id)
# List all templates
jobs = Template.list()
# Check build status manually
job = Template.get_build_status("tmpl-abc123")
# Delete a template
Template.delete("tmpl-abc123")
New dataclasses
| Class | Fields |
|---|---|
ProcessInfo |
pid, command, cpu_percent, memory_percent |
SandboxMetrics |
sandbox_id, status, cpu_count, cpu_used_pct, mem_total, mem_used, disk_total, disk_used, ts |
GitCloneResult |
path, repo, branch, output |
TemplateBuildJob |
id, name, status, description, error, team_id, created_at, updated_at, logs |
Build locally
cd sdk/python
python3 -m pip wheel . --no-deps -w dist/
Publish to PyPI
cd sdk/python
rm -rf dist/
python3 -m pip wheel . --no-deps -w dist/
python3 -m twine upload dist/*
Use a PyPI API token via TWINE_USERNAME=__token__ and TWINE_PASSWORD=<pypi-token>.
Project details
Release history Release notifications | RSS feed
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 sandflare-2.1.4.tar.gz.
File metadata
- Download URL: sandflare-2.1.4.tar.gz
- Upload date:
- Size: 19.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
670c1b84e8fbcf48d36ff2b60029c5117a270113170003cb9bfda7111ec52e79
|
|
| MD5 |
fa2aa6747aada8f6bb6c04fa1b14b125
|
|
| BLAKE2b-256 |
17bdb4403be1faa8d5e5adcab679b3d82ca74d266a058dafc883dc79dcdd59e2
|
File details
Details for the file sandflare-2.1.4-py3-none-any.whl.
File metadata
- Download URL: sandflare-2.1.4-py3-none-any.whl
- Upload date:
- Size: 18.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a6798c3ba9bfe5797cecf90a0bd566c091620c42661abf59b050a9202a72d586
|
|
| MD5 |
6def013895a748f0eca4ffaf6cf76ec4
|
|
| BLAKE2b-256 |
0ba6b6dd4deafaffa769a20289f1521294c13ebc8c8974a12f62d09990150db7
|