holm

Install

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 . --locked

Release 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

  • holm controls boxes from a shell and serves MCP over stdio.
  • holmd is the long-running server. It serves REST under /v1 and 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.

Next