PandaStack
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.ai

Or sign in with the CLI:

pandastack auth login
pandastack me

2. 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 list
curl -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 both
curl -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 pandastack
from 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/sdk
import { 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

On this page