docs/getting-started/quickstart.mdx
npx microsandbox run debian
<CodeGroup>
```bash Rust
cargo add microsandbox
```
```bash TypeScript
npm install microsandbox
```
```bash Python
pip install microsandbox
```
```bash Go
go get github.com/superradcompany/microsandbox/sdk/go
```
```bash CLI
curl -fsSL https://install.microsandbox.dev | sh
```
</CodeGroup>
<CodeGroup>
```rust Rust
use microsandbox::Sandbox;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let sb = Sandbox::builder("hello")
.image("python")
.memory(512)
.create()
.await?;
let output = sb.exec("python", ["-c", "print('Hello from a microVM!')"]).await?;
println!("{}", output.stdout()?); // Hello from a microVM!
sb.stop().await?;
Ok(())
}
```
```typescript TypeScript
import { Sandbox } from "microsandbox";
await using sb = await Sandbox.builder("hello")
.image("python")
.memory(512)
.create();
const output = await sb.exec("python", ["-c", "print('Hello from a microVM!')"]);
console.log(output.stdout()); // Hello from a microVM!
```
```python Python
import asyncio
from microsandbox import Sandbox
async def main():
sb = await Sandbox.create(
"hello",
image="python",
memory=512,
)
output = await sb.exec("python", ["-c", "print('Hello from a microVM!')"])
print(output.stdout_text) # Hello from a microVM!
await sb.stop()
asyncio.run(main())
```
```go Go
package main
import (
"context"
"fmt"
"log"
"strings"
m "github.com/superradcompany/microsandbox/sdk/go"
)
func main() {
ctx := context.Background()
// Optional: download msb + libkrunfw to ~/.microsandbox/ if not
// already there. The first SDK call does this for you, but
// calling it explicitly surfaces install errors up front.
if err := m.EnsureInstalled(ctx); err != nil {
log.Fatal(err)
}
sb, err := m.CreateSandbox(ctx, "hello",
m.WithImage("python"),
m.WithMemory(512),
)
if err != nil {
log.Fatal(err)
}
defer sb.Close()
defer sb.Stop(ctx)
output, err := sb.Exec(ctx, "python", []string{"-c", "print('Hello from a microVM!')"})
if err != nil {
log.Fatal(err)
}
fmt.Println(strings.TrimSpace(output.Stdout())) // Hello from a microVM!
}
```
```bash CLI
msb run python -- python3 -c "print('Hello from a microVM!')"
```
</CodeGroup>
Here's what actually happened behind that Sandbox.builder(...).create() call:
The exec call sent a message to that guest agent, which spawned python inside the VM, streamed stdout back, and returned the exit code. No SSH involved, no network overhead. The command channel is completely separate from the sandbox's network stack.
exec, shell, attach, and streaming