weft-microsandbox
Microsandbox runner plugin for Weft.
This extension runs disposable command and one-shot provider_cli agent tasks
inside Microsandbox microVM sandboxes. It is intended for probably-hostile tools,
MCP servers, and skills that need a harder process and filesystem boundary than
the host runner.
The runner name is microsandbox.
Install with:
uv add 'weft[microsandbox]'
The current Microsandbox SDK supports Linux x86_64/aarch64 and macOS Apple
Silicon. The SDK is Apache-2.0 licensed. A working local Microsandbox runtime
is required for real execution; weft spec validate --preflight --load-runner
checks the local runtime gate explicitly.
Tool Mode
{
"spec": {
"type": "command",
"process_target": "python",
"args": ["-c", "print('hello')"],
"runner": {
"name": "microsandbox",
"options": {
"image": "python:3.12-alpine",
"mode": "tool",
"network": "none",
"workspace_mode": "none"
}
}
}
}
Agent Mode
{
"spec": {
"type": "agent",
"persistent": false,
"agent": {
"runtime": "provider_cli",
"conversation_scope": "per_message",
"runtime_config": {
"provider": "codex"
}
},
"runner": {
"name": "microsandbox",
"options": {
"image": "ghcr.io/acme/codex-provider:latest",
"mode": "agent",
"executable": "codex",
"network": "allow",
"workspace_mode": "none"
}
}
}
}
runner.options.executable is the executable inside the guest image. It is not
resolved on the host.
Runner Options
image: required OCI image.mode: optional; derived fromspec.typeastoolfor command tasks andagentfor agent tasks.executable: required for agent mode; guest-local provider CLI command.network:noneby default, orallow.workspace_mode:noneby default, orcopy,mount-read-only, ormount-read-write.mounts: explicit host mounts. Entries default to read-only.cwd: guest working directory. Required for workspace modes.sandbox_name_prefix: optional runtime name prefix.
Security Defaults
networkdefaults tonone.workspace_modedefaults tonone.- host environment variables are not forwarded unless they are explicit in
spec.env. - persistent and interactive tasks are rejected.
Current Limitations
Memory, CPU, and file-descriptor limits are passed to the Microsandbox SDK, but
the runner does not yet map SDK OOM or metrics evidence to
RunnerOutcome(status="limit"). A guest killed by the runtime for memory
pressure may currently surface as a generic execution error.
This runner is a process, VM, and filesystem boundary. It is not a semantic defense against prompt injection or malicious output.
Release files for weft-microsandbox 0.5.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| weft_microsandbox-0.5.3.tar.gz | 12.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| weft_microsandbox-0.5.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 28.0 kB
Release files / weft_microsandbox-0.5.3.tar.gz
| Download URL | weft_microsandbox-0.5.3.tar.gz |
|---|---|
| Size | 12.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
17c84241900a2e26f7a5eaba2edabd53dbd2076408e8bf43cdd0ba1bd557e2a9
|
|
BLAKE2b-256 checksum How to use checksums |
d897c4d2fd60a0387041b1980801efc66eaad7625e2ed46b7ef846e1d8b1e1e5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.11 {"installer":{"name":"uv","version":"0.11.11","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / weft_microsandbox-0.5.3-py3-none-any.whl
| Download URL | weft_microsandbox-0.5.3-py3-none-any.whl |
|---|---|
| Size | 15.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7941fdb7aba097f22ef5415f57ee20aed1ff386b5cf4208fa207f0ef4383d1a6
|
|
BLAKE2b-256 checksum How to use checksums |
48105ff2c199161ec026678118ce877a03092002c21fd7a23b950323a9034ab3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.11 {"installer":{"name":"uv","version":"0.11.11","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|