Installation

Installing From Source

heyvm and heyvmd are built from the mvm-ctrl Rust crate. Building from source requires a Rust toolchain (the version is pinned by rust-toolchain.toml) and git.

With the Makefile

From the mvm-ctrl/ directory:

# User install to ~/.cargo/bin (builds both heyvm and heyvmd)
make install

# System-wide install to /usr/local/bin
make install --sudo

Other useful targets:

Target What it does
make / make all Build the release binaries, then code-sign on macOS
make build cargo build --release
make sign / make sign-debug macOS codesign with entitlements.xml (adds the com.apple.security.virtualization entitlement)
make run Build, sign, and run the local API server (PORT, default 3000)
make restart-heyvmd Restart a running daemon after reinstall (launchd / systemd / SIGTERM)
make verify-path Linux: detect and fix a stale heyvm shadowing the fresh install on PATH

The signing targets are macOS-only and error elsewhere, so on Linux use make build or make install rather than the bare make / make all (which chains sign). make install works on all platforms.

With cargo directly

cargo install --path mvm-ctrl --locked --force

This builds and installs both the heyvm and heyvmd binaries from the workspace.

macOS code signing

The native Apple Virtualization backend (apple_virt) needs the com.apple.security.virtualization entitlement. The Makefile handles this for you via make sign, which uses entitlements.xml and your local codesigning identity. Both heyvm and heyvmd are signed.

If heyvmd reports a missing entitlement at startup on macOS, it prints the exact codesign command needed to recover.