This guide is the shortest path from clone to productive local development.
If you only want to run the product locally and do not need the full contributor toolchain yet, use the installer:
bash ./scripts/install.shPowerShell alternative:
powershell -ExecutionPolicy Bypass -File .\scripts\install.ps1That path is ideal for evaluators, demos, and new teammates who first want to see the system working before they install lint, policy, and Terraform tooling.
If you plan to contribute code, run these commands from the repository root:
make env-init
make dev-setup
make doctor
make dev-checkIf you work from PowerShell on Windows and do not use make, use:
powershell -ExecutionPolicy Bypass -File .\scripts\env-init.ps1
powershell -ExecutionPolicy Bypass -File .\scripts\ci-local.ps1 -SkipSmoke -SkipRaceWhat this gives you:
- a local
.envfile based on the repo defaults - pre-commit and pre-push hooks
golangci-lint,govulncheck, andcheckov- an early signal if Docker, ports, or required config are missing
Use these commands most often:
make runto run the gateway directlymake upto run the full local stack with Prometheus and Grafanamake dev-checkfor a fast local sanity pass while iteratingmake replay FILE=... REPLAY_ARGS='-source github -dry-run'to test payloads safely
Run the same classes of checks that run on push in GitHub Actions:
make ci-localIf your change adds or modifies webhook provider contracts, also run:
make ci-contractPowerShell equivalent:
powershell -ExecutionPolicy Bypass -File .\scripts\ci-local.ps1If your machine is still missing some local dependencies, you can run a partial pass with:
powershell -ExecutionPolicy Bypass -File .\scripts\ci-local.ps1 -SkipSmoke -SkipPolicy -SkipTerraform -SkipRaceThat command runs:
- Go formatting,
go vet, unit tests, lint, and vulnerability scan - race detector tests
- fixture catalog lint plus targeted contract checks
- Terraform fmt/init/validate
- Checkov policy checks for Terraform and Kubernetes
- docker compose smoke validation against
/healthzand/metrics
If local checks fail before your code even runs, check these first:
- Docker daemon is not running
- local ports
8080,9090,3000, or8085are already occupied terraform,checkov,golangci-lint, orgovulncheckare not on yourPATH- your Go patch version is outdated, so
govulncheckis flagging standard library advisories until Go is updated - Windows race tests need
CGO_ENABLED=1plus a local C toolchain, otherwise use-SkipRacefor a partial pass .envis missing or hasQUEUE_BACKEND=pubsubwithout Pub/Sub identifiers- admin auth is enabled locally but
ADMIN_JWT_SECRETis still weak or unset
make doctor now surfaces these issues early so developers do not have to discover them from CI.