Back to Microsandbox

Cloud

docs/cloud/overview.mdx

0.6.106.5 KB
Original Source
<Note> microsandbox cloud is in **private beta**, and currently requires you to explicitly [request access](https://dashboard.microsandbox.dev/signup). If you already have access, you can get your API key from the [dashboard](https://dashboard.microsandbox.dev/access/api-keys). </Note>

microsandbox cloud runs your sandboxes on hosted infrastructure. The SDKs and the msb CLI are the same ones you use locally: the same builders, the same commands, the same code. Select the cloud backend and provide an API key; there is no daemon or separate client.

Connect

bash
export MSB_BACKEND=cloud
export MSB_API_KEY="msb_..."

Same code, different backend

Everything from the quickstart works unchanged. With cloud selected and the API key exported, this creates a sandbox on cloud instead of your machine:

<CodeGroup> ```rust Rust use microsandbox::Sandbox;

let sb = Sandbox::builder("hello") .image("python") .memory(512) .create() .await?;

let output = sb.exec("python", ["-c", "print('Hello from the cloud!')"]).await?; println!("{}", output.stdout()?);

sb.stop().await?;


```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 the cloud!')"]);
console.log(output.stdout());
python
from microsandbox import Sandbox

sb = await Sandbox.create("hello", image="python", memory=512)

output = await sb.exec("python", ["-c", "print('Hello from the cloud!')"])
print(output.stdout_text)

await sb.stop()
go
sb, err := m.CreateSandbox(ctx, "hello",
    m.WithImage("python"),
    m.WithMemory(512),
)
if err != nil {
    return err
}
defer sb.Stop(ctx)

output, err := sb.Exec(ctx, "python", []string{"-c", "print('Hello from the cloud!')"})
fmt.Println(output.Stdout())
bash
msb run python -- python3 -c "print('Hello from the cloud!')"
</CodeGroup>

Hardware virtualization support on your machine is not needed for cloud sandboxes; msb doctor checks apply to the local runtime only.

What works on cloud

<CardGroup cols={2}> <Card title="Sandbox lifecycle" icon="box"> Create, inspect, list, reconnect, start, stop, and remove sandboxes. </Card> <Card title="Commands and files" icon="terminal"> Run buffered, streaming, and interactive commands, then move files in or out. </Card> <Card title="Persistent storage" icon="hard-drive"> Create managed volumes and access their files without starting a sandbox. </Card> <Card title="Network controls" icon="shield-halved"> Apply egress policy and hostname-scoped secrets from the same SDK surface. </Card> </CardGroup>

Compatibility

The everyday workflow is shared across local and cloud: sandbox lifecycle, command execution, common guest-filesystem operations, network policy, secrets, SSH sessions, and managed storage. The differences below are the ones to plan for.

Across the docs, no badge means a feature works everywhere. Exceptions use only three badges: Local-only, Limited on cloud, and Cloud-only.

AreaCloud statusDifference or alternative
Sandbox lifecycle and executionWorks everywhereCreate, start, inspect, list, stop, remove, exec, shell, streaming, and interactive PTY workflows use the same SDK and CLI surface.
Guest filesystemLimited on cloudCommon path operations and host-to-guest copies work. Low-level open-handle operations are local-only.
Managed volumesLimited on cloudDefault and named directory volumes support lifecycle and filesystem access. Create a named volume before mounting it; disk-kind volumes and create-on-mount are local-only.
Volume and host pathsLimited on cloudBind and disk-image source paths resolve against the organization's host volume, not the machine running the client.
Network policy and secretsWorks everywhereEgress policies and hostname-scoped secret substitution carry across backends.
Custom networkingLocal-onlyPublished ports, custom nameservers, interface overrides, rate limiters, TLS interception, and host-CA trust are not accepted by cloud create.
LogsLimited on cloudSDK live-follow works. Bounded or historical reads and the msb logs command are local-only; persist followed output externally when retention matters.
SSHLimited on cloudNative SDK sessions and msb ssh work. msb ssh serve is local-only; reusable SDK servers require explicit key material.
ImagesLimited on cloudOCI image references and registry credentials work. Local cache commands, host-directory or disk-image roots, plain-HTTP registries, and custom registry CAs are local-only.
ReconfigurationLocal-onlyRecreate the sandbox with the new CPU, memory, mounts, or other settings instead of using modify.
SnapshotsLocal-onlyUse a named volume for state that must survive sandbox replacement.
Resource metricsLocal-onlyInstrument the workload with an external monitoring system.
Process controlsLimited on cloudGraceful stop plus maximum-duration and idle-timeout policies work. Force kill, drain, ping, and touch are local-only.

REST API

The same key also authenticates the REST API directly, so you can manage sandboxes, volumes, and usage over plain HTTPS without an SDK. Command execution, file transfer, and SSH ride the sandbox command channel, which the SDKs and CLI handle for you.

What to know

  • Backend selection. Cloud is explicit: set MSB_BACKEND=cloud, select a cloud profile, or choose it in code. See Backends.
  • Networking. Cloud sandboxes get a platform-assigned hostname. SSH works through the same msb ssh and SDK SSH clients you use locally.
  • Images. Specify an OCI image when you create the sandbox; the cloud pulls it for you.
  • Keys and billing. API keys, usage, and invoices live in the dashboard.

Next steps

<CardGroup cols={2}> <Card title="API reference" icon="brackets-curly" href="/api-reference/overview"> The REST API behind the SDKs, authenticated with your API key. </Card> <Card title="Backends" icon="route" href="/getting-started/backends"> Force local, select in code, or switch with profiles. </Card> <Card title="Quickstart" icon="bolt" href="/getting-started/quickstart"> New to microsandbox? Start here; everything carries over. </Card> </CardGroup>