Building from Source
VirtEngine is developed against Go 1.25.5. The build is Makefile-driven
and produces a single binary, virtengine, containing the full node and
client functionality.
Prerequisites
Section titled “Prerequisites”| Requirement | Notes |
|---|---|
| Go 1.25.5 | With GOPATH set and $GOPATH/bin in $PATH |
| C/C++ compiler | gcc or clang — required for C dependencies (libusb, libhid) |
| GNU make 4+ | macOS ships an ancient make; install via Homebrew (keg-only — prepend its gnubin to PATH) |
| direnv ≥ 2.32.x | The repo uses direnv extensively for environment setup |
Supported platforms
Section titled “Supported platforms”| Platform | Arch | Status |
|---|---|---|
| Darwin | amd64 / arm64 | Supported |
| Linux | amd64 / arm64 | Supported |
| Linux | armhf (GOARM 5,6,7) | Not supported |
| Windows | amd64 | Experimental |
-
Install dependencies.
Terminal window # macOSbrew install curl wget jq direnv coreutils make npmexport PATH="$(brew --prefix)/opt/make/libexec/gnubin:$PATH"# Debian-based Linuxsudo apt updatesudo apt install -y jq curl wget build-essentials ca-certificates npm direnv gcc -
Clone and build.
Terminal window git clone https://github.com/virtengine/virtenginecd virtenginemake virtengineThe compiled executable is written to
.cache/bin. Inside the repository environment it takes precedence over any system-widevirtengine.
The .cache build environment
Section titled “The .cache build environment”The build creates a .cache directory at the source root for pinned
versions of temporary build tools (protoc and friends), installed only
when a target needs them:
.cache/ bin/ # build tools run/ # work directories for _run examples versions/ # version markers used to detect tool upgradesSet VE_DEVCACHE to relocate it. Tool versions and install rules live in
make/init.mk and make/setup-cache.mk.
Installing releases instead
Section titled “Installing releases instead”For published release tags, installation paths exist via Homebrew and an install script:
brew tap virtengine/tapbrew install virtenginecurl -sSfL https://raw.githubusercontent.com/virtengine/virtengine/main/install.sh | shBefore production use, verify the tag is actually published and the network posture matches your deployment — see Mainnet Launch Posture.
Next steps
Section titled “Next steps”- Development Environment — direnv, frontend tooling, and the Docker localnet.
- Contributing — how changes land.