KRAKEN wiki

Panel from source

Build the Panel yourself — the one build-order rule that decides whether you get the real web UI or a stub, and what a development run looks like.

on this page

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 build

make 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 version

An 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/panel

With 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-go

Skip it and the update endpoint answers 503, which is the honest response: the Panel has nothing to push.

Checks

make check

Everything 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.