Building from Source
VirtEngine is developed against Go 1.26.8 (go.mod:3, and GO_VERSION
in .github/workflows/ci.yaml). 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.26.8 | 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 | Required on non-Windows: make/init.mk fails without it unless VE_DIRENV_SET is exported (see .envrc) |
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 unzip build-essential libudev-dev 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”There is no release-based install path today. This repository has no
published releases — the only release record is 0.1.0, a draft from
2021 — so neither route below can resolve an artifact:
virtengine/homebrew-tapdoes not exist (GitHub returns 404), sobrew tap virtengine/tapfails.install.shonmaindeclaresOWNER="virtengine-network"andREPO="node"(install.sh:351-352); that repository does not resolve, so the one-liner cannot download anything built from this repository.
Until releases exist, build from source with make virtengine (above). For
network posture, see Network Launch Schedule.
Next steps
Section titled “Next steps”- Development Environment — direnv, frontend tooling, and the Docker localnet.
- Contributing — how changes land.