One MicroVM, four starting points:
code: Alpine with Node and Python
docker-lite: Alpine with Docker preinstalled
max: Debian for broader Linux tooling
docker: Debian + Docker for heavier container workloads
Pick one with image at create time. Same isolation either way.
Not every agent task fits in one request.
Start a dev server or a long install as a background command and get a PID back right away. Then stream its logs, wait for exit, or kill it from separate calls. Your agent stays responsive while the sandbox works.
Python SDK tip: let the sandbox clean up after itself.
from voidrun import VoidRun
vr = VoidRun()
with vr.create_sandbox(cpu=2, mem=2048) as sb:
r = sb.exec("python3 --version")
print(https://t.co/8gQnQYrP52.stdout)
The sandbox is removed when the block exits. Async? Use async with.
Your agent's terminal shouldn't die when the WebSocket drops.
VoidRun persistent PTY sessions keep the shell running after a disconnect. Reconnect and recent output is replayed, then live output picks up. Several clients can attach to the same session at once.
Your agent needs the staging database. Your staging database should never touch the public internet.
VoidRun sandboxes ship with Tailscale pre-installed. Run tailscale up with an ephemeral auth key and the sandbox joins your tailnet, then drops off when it's gone.
Testing infra changes shouldn't need a spare cluster.
VoidRun sandboxes run Docker and K3s natively, so you (or your agent) can build images, apply manifests and dry-run a deploy inside a throwaway MicroVM.
Break it, delete it, start fresh.
A sandbox can lock down the kernel and still leak through the network.
VoidRun gives every sandbox granular internet access control: allowlist the package registries and APIs your agent actually needs, block everything else.
Isolation covers egress too.
SDK tip: let your agent show its work with a live preview URL.
Declare the port when you create the sandbox, start the server in the background, then grab the public HTTPS URL:
const sb = await vr.createSandbox({ publishPorts: [3000] });
await https://t.co/hwW1GAMxBD("python3 -m http.server 3000");
const url = await sb.getPublicUrl(3000);
Up to 4 ports per sandbox, set at create time. Docs: https://t.co/8GbT4JAiA3
Sandboxes are the one place "black magic" code can't live. That's where isolation breaks.
So at VoidRun, agents write code against designs we've already worked out, and every line gets reviewed by someone who understands it.
Boring engineering. Sandboxes you can trust.
• Developer-first SDKs in TypeScript and Python
Our mission: make secure, isolated compute a default for every AI agent, not a premium feature.
Big updates coming soon. Follow along.
🔗 https://t.co/ghCQ2SEwLr
Sandboxes for AI agents should be fast, secure, and affordable at any scale.
Since our launch, the VoidRun team has been heads down on one goal: making secure execution cost-effective enough to run everywhere.
Here's what we've been working on 🧵
• Smart lifecycle: sandboxes auto-sleep when idle, wake on the next request, and auto-delete when done, so you never pay for idle compute
• Scale on demand: hundreds of isolated microVMs in parallel for agents, evals, CI, and code execution
@fdotinc Building VoidRun a secure sandbox layer for AI agents & developers.
Enables safe code execution, isolation, and infra abstraction for agent workflows.
We believe this becomes core infra for the AI-native stack. https://t.co/ghCQ2SEwLr