Installation
Install LoadWave with go install, from a release archive, or build it from source. One self-contained binary with the dashboard inside it.
Every LoadWave install is one executable with the dashboard embedded in it. There is no agent package, no server component and no database — the same file runs a test, coordinates a fleet, and serves the UI.
With go install
go install github.com/SnowyFoxStudios/LoadWave/cmd/loadwave@latestNeeds Go 1.26 or later. The binary lands in $(go env GOPATH)/bin, so make
sure that is on your PATH.
From a release archive
Download from Releases. Every archive is one self-contained executable — extract it and put it wherever you keep local binaries.
From source
Building from source needs Go 1.26+ and Node 26+, because the dashboard is a React application compiled and then embedded into the Go binary.
git clone https://github.com/SnowyFoxStudios/LoadWave.git
cd LoadWave
make build # ./bin/loadwavemake build runs the frontend build first and then compiles the Go binary
around it. Running go build ./cmd/loadwave on its own produces a working
binary too, but it embeds a placeholder where the dashboard should be, and the
server will tell you so when you open it. That is deliberate: contributors
working only on Go never need a Node toolchain.
Check it worked
loadwave versionThen, for a real end-to-end check that needs nothing else installed and no service to point at:
loadwave demo --duration 30s --headlessThat starts a small target server inside the same process, runs a two-scenario test against it and prints a report. If that works, the whole path — coordinator, agent, worker processes, merged metrics, thresholds — works.
What you will need in production
Nothing else, for a single-machine run. Two things are worth setting up before a large or distributed one:
- Raise the file descriptor limit. Every connection is a descriptor and the
default will bite long before the CPU does:
ulimit -n 65535. - Run NTP on every load host. Metric buckets are aligned to the wall clock so that nodes agree on what a given second means. See Distributed runs.