Requirements
You need one runtime on the host:
| Runtime | Box type |
|---|---|
| Docker | Container (default) |
| Podman | Container |
| nerdctl | Container |
| smolvm | microVM |
| microsandbox | microVM |
You do not fetch a desktop image. The first box builds its image from source, which takes a few minutes. Later boxes with the same configuration start in seconds.
Cloud sandboxes such as E2B, Vercel, Daytona, and Modal need no local runtime, only a vendor API key. See Runtimes.
Install script
The script downloads a release build of holm and holmd for macOS or Linux on x86_64 or aarch64, and verifies its checksum:
curl -fsSL https://raw.githubusercontent.com/holm-inc/holm/main/scripts/install.sh | sh| Setting | Flag | Default |
|---|---|---|
HOLM_VERSION |
--version <tag> |
The latest release |
HOLM_INSTALL_DIR |
--dir <path> |
~/.local/bin |
Make sure that the install directory is on your PATH.
Build from source
Install Rust 1.85 or newer, then:
git clone https://github.com/holm-inc/holm.git
cd holm
cargo install --path . --lockedRelease builds include e2b, vercel, daytona, modal, sqlite, postgres, and s3. A source build adds them with features:
cargo install --path . --locked --features e2b,vercel,daytona,modal,microsandbox,sqlite,postgres,s3| Feature | Adds |
|---|---|
e2b |
E2B cloud sandboxes |
vercel |
Vercel Sandbox |
daytona |
Daytona sandboxes |
modal |
Modal sandboxes |
microsandbox |
The microsandbox Rust library, for the library API. The server uses the msb CLI with no feature. |
sqlite, postgres, s3 |
Durable storage for holmd |
The two binaries
holmcontrols boxes from a shell and serves MCP over stdio.holmdis the long-running server. It serves REST under/v1and MCP over HTTP at/mcp, and keeps traces, forks, and box expiry across commands.
You do not need holmd to start. When no server is running, holm starts one for the life of the command.
Check the install
BOX=$(holm new)
holm screenshot "$BOX" screen.png
holm rm "$BOX"The first holm new builds the image. When screen.png shows a desktop, the install is correct.