Getting started
Quickstart
Spawn your first sandbox in 30 seconds — CLI, Python, and TypeScript.
1. Authenticate
export PANDASTACK_API_KEY=pds_abc123def456...
export PANDASTACK_API=https://api.pandastack.aiOr sign in with the CLI:
pandastack auth login
pandastack me2. Create a sandbox
from pandastack import Sandbox
sandbox = Sandbox.create(template="code-interpreter", ttl_seconds=3600)
print(sandbox.id)
for sb in Sandbox.list():
print(sb.id)import { Sandbox } from "@pandastack/sdk";
const sandbox = await Sandbox.create({ template: "code-interpreter", ttlSeconds: 3600 });
console.log(sandbox.id);
for (const sb of await Sandbox.list()) console.log(sb.id);pandastack sandbox create --template code-interpreter --ttl 3600
pandastack sandbox listcurl -X POST https://api.pandastack.ai/v1/sandboxes \
-H "Authorization: Bearer $PANDASTACK_API_KEY" \
-H "Content-Type: application/json" \
-d '{"template": "code-interpreter", "ttl_seconds": 3600}'
curl https://api.pandastack.ai/v1/sandboxes \
-H "Authorization: Bearer $PANDASTACK_API_KEY"Available templates are base, code-interpreter, agent, claude-agent, browser, postgres-16, postgres-16-4g, and postgres-16-16g.
3. Run a command
result = sandbox.exec("python -c 'print(\"hello from PandaStack\")'")
print(result.stdout)
for line in sandbox.logs(stream="both"):
print(line)const result = await sandbox.exec("python -c 'print(\"hello from PandaStack\")'");
console.log(result.stdout);
for await (const line of sandbox.logs({ stream: "both" })) {
console.log(line);
}pandastack sandbox exec <sandbox-id> -- "python -c 'print(\"hello from PandaStack\")'"
pandastack sandbox logs <sandbox-id> --stream bothcurl -X POST https://api.pandastack.ai/v1/sandboxes/<sandbox-id>/exec \
-H "Authorization: Bearer $PANDASTACK_API_KEY" \
-H "Content-Type: application/json" \
-d '{"cmd": "python -c '\''print(\"hello from PandaStack\")'\''"}'Python
pip install pandastackfrom pandastack import Sandbox
sandbox = Sandbox.create(
template="code-interpreter",
ttl_seconds=3600,
metadata={"purpose": "quickstart"},
)
result = sandbox.exec("python -c 'print(1 + 1)'", timeout_seconds=30)
print(result.stdout)
sandbox.filesystem.write("/workspace/hello.py", "print('hi')\n")
print(sandbox.filesystem.read("/workspace/hello.py"))
sandbox.kill()TypeScript
npm install @pandastack/sdkimport { Sandbox } from "@pandastack/sdk";
const sandbox = await Sandbox.create({
template: "code-interpreter",
ttlSeconds: 3600,
metadata: { purpose: "quickstart" },
});
const result = await sandbox.exec("python -c 'print(1 + 1)'", { timeoutSeconds: 30 });
console.log(result.stdout);
await sandbox.filesystem.write("/workspace/hello.js", "console.log('hi')\n");
console.log(await sandbox.filesystem.read("/workspace/hello.js"));
await sandbox.kill();Preview a service
sandbox.exec("python -m http.server 3000 &")
print(sandbox.preview_url(3000))await sandbox.exec("python -m http.server 3000 &");
console.log(sandbox.previewUrl(3000));pandastack sandbox exec <sandbox-id> -- python -m http.server 3000
pandastack sandbox preview-url <sandbox-id> --port 3000