For contributors, and for an OS or architecture with no published build. A normal install belongs on Docker Compose instead.
Requirements
- Go 1.26+
- Node 24+ (any recent LTS builds the bundle; CI uses 24)
- Docker, for Postgres and for actually running game servers
Build
git clone https://github.com/briggleman/kraken.git
cd kraken
make buildmake build is web bundle first, then the three Go binaries into bin/:
panel, agent, krakenctl. make help lists every target.
Without make (Windows, say), the recipes are one-line shell blocks and can be
run directly:
npm --prefix web ci
npm --prefix web run build
go build -trimpath -o bin/ ./cmd/...Version stamping
Release builds stamp the version through -ldflags. make build mirrors the
release workflow, so a local build reports the same tag, commit and date a
release build would:
make versionAn unstamped go build reports dev. Honest, and perfectly usable. Bear in
mind that the Panel compares its own version against each Agent to decide when
to offer an update, so a fleet driven by an unstamped Panel says less about
upgrades than a released one would.
Run it
docker compose -f deploy/docker-compose.yml up -d # postgres
./bin/panelWith no KRAKEN_DATABASE_URL the Panel falls back to an in-memory store.
That is a development convenience and nothing else.
On a fresh database the dev bootstrap login is admin / admin, overridable
with KRAKEN_BOOTSTRAP_ADMIN_USER and KRAKEN_BOOTSTRAP_ADMIN_PASSWORD.
Agent updates from a source build
The Panel pushes Agent upgrades by streaming a binary it carries inside itself.
It embeds the Agent builds matching its own version, so an Agent it updates can
only land on that version. A plain make build does not cross-compile those:
make embed-agents # linux/amd64, linux/arm64, windows/amd64 into the embed dir
make build-goSkip it and the update endpoint answers 503, which is the honest response: the
Panel has nothing to push.
Checks
make checkEverything CI runs: the web build and unit tests, gofmt, go vet,
staticcheck, go test -race, and the wiki staleness gate. Run it before
opening a PR. See
CLAUDE.md for the
branch and PR-title conventions.