README.md
</a>
</a>
Microsandbox runs untrusted workloads inside fast, local microVMs: AI agents, user code, plugins, CI jobs, dev environments, scrapers, and automation.
shcargo add microsandbox # 🦀 Rustshuv add microsandbox # 🐍 Pythonshnpm i microsandbox # 🟦 TypeScriptshgo get github.com/superradcompany/microsandbox/sdk/go # 🐹 Go
Boot a microVM in a single command:
shnpx microsandbox run debianOr install the
msbcommand globally:sh<details> <summary><em> We also support other package managers →</em></summary>curl -fsSL https://install.microsandbox.dev | shshbrew install superradcompany/tap/microsandboxshnpm i -g microsandboxshuv tool install microsandboxsh</details>cargo install microsandboxThen you can run
msbdirectly:shmsb run debian
Requirements: Linux with KVM enabled, or macOS with Apple Silicon.
Warning: Microsandbox is still beta software. Expect breaking changes, missing features, and rough edges.
The SDK lets you create and control sandboxes directly from your application. Sandbox::builder("...").create() boots a microVM as a child process. No infrastructure required.
rs<details> <summary><b> Python Example →</b></summary>use microsandbox::Sandbox; #[tokio::main] async fn main() -> Result<(), Box<dyn std::error::Error>> { let sandbox = Sandbox::builder("my-sandbox") .image("python") .cpus(1) .memory(512) .create() .await?; let output = sandbox .exec("python", ["-c", "print('Hello from a microVM!')"]) .await?; println!("{}", output.stdout()?); sandbox.stop().await?; Ok(()) }python</details> <details> <summary><b> TypeScript Example →</b></summary>import asyncio from microsandbox import Sandbox async def main(): sandbox = await Sandbox.create( "my-sandbox", image="python", cpus=1, memory=512, ) output = await sandbox.exec("python", ["-c", "print('Hello from a microVM!')"]) print(output.stdout_text) await sandbox.stop() asyncio.run(main())typescript</details> <details> <summary><b> Go Example →</b></summary>import { Sandbox } from "microsandbox"; await using sandbox = await Sandbox.builder("my-sandbox") .image("python") .cpus(1) .memory(512) .create(); const output = await sandbox.exec("python", [ "-c", "print('Hello from a microVM!')", ]); console.log(output.stdout());go</details>package main import ( "context" "fmt" "log" microsandbox "github.com/superradcompany/microsandbox/sdk/go" ) func main() { ctx := context.Background() // Downloads the microsandbox runtime to ~/.microsandbox/ on first run. if err := microsandbox.EnsureInstalled(ctx); err != nil { log.Fatal(err) } sandbox, err := microsandbox.CreateSandbox(ctx, "my-sandbox", microsandbox.WithImage("python"), microsandbox.WithCPUs(1), microsandbox.WithMemory(512), ) if err != nil { log.Fatal(err) } defer sandbox.Stop(ctx) output, err := sandbox.Exec(ctx, "python", []string{"-c", "print('Hello from a microVM!')"}) if err != nil { log.Fatal(err) } fmt.Println(output.Stdout()) }
The first call to
create()pulls the image if it isn't cached locally, so it may take longer depending on your connection. Subsequent runs reuse the cache.
<a href="https://docs.microsandbox.dev/sdk/overview"></a>
The msb CLI provides a complete interface for managing sandboxes, images, and volumes.
shmsb run python -- python3 -c "print('Hello from a microVM!')"
sh# Create and start a named sandbox msb create --name my-app pythonsh# Execute commands msb exec my-app -- python -c "import this" msb exec my-app -- curl https://example.comsh# Lifecycle msb stop my-app msb start my-app msb rm my-app
shmsb pull python # Pull an image msb image ls # List cached images msb image rm python # Remove an image
shmsb install ubuntu # Install ubuntu sandbox as 'ubuntu' command ubuntu # Opens Ubuntu in a microVM msb uninstall ubuntu # Uninstall the ubuntu sandbox
shmsb ls # List all sandboxes msb ps my-app # Show sandbox status msb inspect my-app # Detailed sandbox info msb metrics my-app # Live CPU/memory/network stats
[!TIP]
Run:
·
msb --helpfor quick help menu.
·
msb --treefor complete command hierarchy and descriptions.
·
msb <command> --treefor a specific command tree.
<a href="https://docs.microsandbox.dev/cli/overview"></a>
AI agents are a natural fit for microsandbox. They run tools, inspect files, install packages, call APIs, and execute generated code, often with more ambient access than they should have.
microsandbox gives those actions a dedicated microVM instead of your host process. Agents can still work normally, but their filesystem, network, lifecycle, and secrets are controlled by the sandbox boundary.
Teach any AI coding agent how to use microsandbox by installing the Agent Skills. Works with Claude Code, Cursor, Codex, Gemini CLI, GitHub Copilot, and more.
shnpx skills add superradcompany/skills
Connect any MCP-compatible agent to microsandbox with the MCP server. Provides structured tool calls for sandbox lifecycle, command execution, filesystem access, volumes, and monitoring.
sh# Claude Code claude mcp add --transport stdio microsandbox -- npx -y microsandbox-mcp
For guides, API references, and examples, visit the microsandbox documentation.
Interested in contributing to microsandbox? Check out our CONTRIBUTING.md for guidelines and DEVELOPMENT.md for build, test, and release instructions.
This project is licensed under the Apache License 2.0.
Special thanks to all our contributors, testers, and community members who help make microsandbox better every day! We'd like to thank the following projects and communities that made microsandbox possible: libkrun and smoltcp