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.