# features

Everything you need
to ship agents.

Real Linux microVMs with fast boot, socket-reused exec, fork-trees, hibernation, org controls, and open-source deployment paths.

# execution

Run commands without paying handshake tax.

Use REST for simple jobs, PTY for interactive shells, and one WebSocket for high-frequency agent loops.

Multiplexed WebSocket exec

Upgrade once at GET /v1/sandboxes/{id}/exec/ws, then tag each command with an id. Keepalive pings hold the socket open; cancel frames stop runaway work.

~150ms TLS+HTTP~5ms socket reuse
client → { "id": "lint", "cmd": "pnpm lint", "timeout_seconds": 60 }
client → { "id": "test", "cmd": "pnpm test" }
client → { "id": "test", "cancel": true }

server → { "id": "lint", "stream": "stdout", "data": "ok" }
server → { "id": "lint", "exit": 0 }
server → { "id": "test", "error": "cancelled" }

REST exec

POST commands for simple one-shot jobs, CI probes, and SDK defaults.

PTY shell

Interactive terminals with resize events for IDEs and human handoff.

File uploads

Stream source trees, artifacts, and prompt bundles into a running microVM.

# time-travel

Branch reality, then promote the winner.

The SDKs expose sandbox.fork(), sandbox.forkTree(count), and sandbox.promote(treeId, cleanupSiblings) for search, evals, and speculative coding.

const base = await client.sandboxes.create({ template: "nextjs" });
await base.exec("git checkout -b agent/search");

const tree = await base.forkTree(4);
const results = await Promise.all(tree.branches.map(runEval));

await tree.promote(results.at(0).sandboxId, { cleanupSiblings: true });
# lifecycle

Fast when hot. Cheap when idle.

Cold start, TTL, hibernation, wake, and volumes are designed for long-running agents that pause between turns.

Sub-200ms boot

Multi-template warm pools per region keep popular stacks ready to restore in ~179ms p50 (n=50 prod, June 2026).

Idle hibernation

Default 5-minute TTL writes memory + disk state and stops active compute billing.

Persistent volumes

Attach named volumes for caches, repos, model shards, and user state.

# tenancy

A control plane for real teams.

Personal orgs are auto-provisioned on first /v1/me. Teams add members, invites, roles, and Stripe-metered invoices.

Orgs

orgs, org_members, org_invites, and user_current_org live in shared Postgres.

Roles

owner > admin > member permissions, with dashboard pages for team and org switching.

Metered billing

Agents emit pending_meter_events; a 60s edge worker posts Stripe Meter Events idempotently.

open dashboard team settings
# distribution

Move sandboxes without breaking identity.

Warm pools keep starts low; snapshot migration lets the scheduler rebalance across hosts and regions.

Multi-region warm pool

Pre-warmed capacity by template and region for consistent p50s near users.

Cross-host migration

Snapshots carry baked NATID so restores keep the same external identity.

Preview URL ACLs

Share demos and interview prompts with path-level access controls.

# integrations

Meet agents where they already run.

Use PandaStack from SDKs, the CLI, webhooks, or any MCP client that can call tools.

MCP server

Claude, Cursor, and other clients can spin up sandboxes and execute commands with tool calls.

Auth + org switch

API tokens, JWT requests, X-Pandastack-Org, and X-Fcs-Workspace resolver middleware.

Open source

Apache-2.0 core, self-hostable on your machines or available as a managed cloud.

Templates

Use public stacks or bake Dockerfiles and live snapshots into reusable templates.

TypeScript SDK

Create, exec, fork, forkTree, promote, upload, and expose ports.

Python SDK

The same sandbox primitives for agents, notebooks, and evaluation harnesses.

CLI + webhooks

Script sandboxes from CI and subscribe to lifecycle / hibernation events.

Spin up your first sandbox in ms.

Free tier includes $5.40/month of usage credit. No credit card. Self-host with Apache-2.0 anytime.

curl -sSL pandastack.ai/install | sh · Linux / macOS · 10MB binary