Local-First Sandboxes
for AI Agents on macOS.

Lightweight Linux VMs powered by Apple Virtualization.framework. Ephemeral by default. No Docker required.

Fast, Ephemeral, Stateful.
Infrastructure for AI Agents.

01

Ephemeral by Default

Every run starts from a clean rootfs. Install anything, break anything. Nothing persists unless you save it.

Ephemeral container dissolving
02

Checkpoints

Save disk state as named snapshots. Restore, branch, and iterate. Like git commits for your environment.

Git DAG branching checkpoint tree
03

Apple Silicon Native

Built on Virtualization.framework. No emulation layer, no Docker dependency. Near-native speed on ARM64.

Apple Silicon chip with lightning bolt
grid: 3 cols

Simple CLI.
Run, checkpoint, restore.

terminal

$ shuru run -- echo "hello from the sandbox"

hello from the sandbox


$ shuru run -- cat /etc/os-release | head -1

NAME="Debian GNU/Linux"


# VM boots, runs, and tears down — nothing persists.

$ shuru run -- curl https://example.com

curl: (6) Could not resolve host: example.com


$ shuru run --allow-net -- curl -s https://example.com | head -1

<!doctype html>


# Sandboxes are offline by default. All traffic goes through a proxy.

$ shuru run --cpus 4 --memory 4096 -- free -m | head -2

total used free

Mem: 4096 38 4002


$ shuru run --disk-size 2048 -- df -h /

Filesystem Size Used Avail Use% Mounted on

/dev/vda 2.0G 18M 1.9G 1% /

$ shuru run --mount ./src:/workspace -- ls /workspace

main.py utils.py tests/


$ shuru run --mount ./src:/workspace -- sh -c 'echo "new" > /workspace/tmp && cat /workspace/tmp'

new


# Host directory is untouched. Guest writes live in a tmpfs overlay.

$ shuru checkpoint create myenv --allow-net -- sh -c 'apt-get install -y nodejs npm'

shuru: checkpoint 'myenv' saved


$ shuru run --from myenv -- node -e 'console.log("ready")'

ready


# Restore any checkpoint instantly. Branch and reuse.

$ shuru checkpoint create py --allow-net -- apt-get install -y python3

shuru: checkpoint 'py' saved


$ shuru run --from py -p 8080:8000 -- python3 -m http.server 8000

shuru: forwarding 127.0.0.1:8080 -> guest:8000


$ curl http://127.0.0.1:8080/

<!DOCTYPE HTML>...


# No --allow-net needed. Tunneled over vsock.

Built for Agents.
Safe execution for any workload.

Configure per project.
One file, full control.

Define allowed domains, secrets, and resources in a single shuru.json file.

shuru.json

{

"secrets": {

"API_KEY": {

"from": "OPENAI_API_KEY",

"hosts": ["api.openai.com"]

}

},

"network": {

"allow": ["api.openai.com"]

}

}

{

"network": {

"allow": [

"registry.npmjs.org",

"github.com",

"*.githubusercontent.com"

]

}

}

{

"secrets": {

"OPENAI_KEY": {

"from": "OPENAI_API_KEY",

"hosts": ["api.openai.com"]

},

"ANTHROPIC_KEY": {

"from": "ANTHROPIC_API_KEY",

"hosts": ["api.anthropic.com"]

}

},

"network": {

"allow": ["api.openai.com", "api.anthropic.com"]

}

}

{

"cpus": 4,

"memory": 4096,

"mounts": ["./src:/workspace"],

"secrets": {

"API_KEY": {

"from": "OPENAI_API_KEY",

"hosts": ["api.openai.com"]

}

},

"network": {

"allow": ["api.openai.com"]

}

}

Works with your agent.
Install once, sandbox everything.

Shuru ships as an agent skill. Once installed, AI agents automatically use shuru run whenever they need sandboxed execution — no prompting required.

Install with one command

Works across Claude Code, Cursor, Copilot, and more.

terminal

$ npx skills add superhq-ai/shuru

Works with Claude Code Cursor GitHub Copilot Gemini CLI OpenAI Codex + more

Get started in seconds.

One command to install. One command to run.

# Install

$ brew tap superhq-ai/tap && brew install shuru


# Run your first sandbox

$ shuru run

# Install

$ curl -fsSL https://shuru.run/install.sh | sh


# Run your first sandbox

$ shuru run