arcentra checkout.
Toolchain
- Go 1.25 or later (matches
go.mod). - Buf — Protobuf and gRPC code generation.
make buf-installinstalls it on demand. - Wire — compile-time dependency injection.
make wire-installinstalls it on demand. - golangci-lint v2 — installed automatically into
bin/bymake lint. - staticcheck (optional) —
make staticcheckinstalls and runs it. - addlicense (optional) —
make addlicenseadds Apache 2.0 headers to Go files. - Docker (optional) — required for
make docker-buildandmake docker-buildx.
Make targets
make help prints the full target list. The targets you reach for most
often are:
The repository carries two binaries by default:
arcentra (control plane)
and arcentra-agent. Any directory inside cmd/ can be built with
make build TARGET=<dirname>.
Code generation
Two generators are wired into the build:- Buf generates Go message and gRPC service code under
api/<service>/v1. - Wire generates dependency-injection wiring (
wire_gen.go) undercmd/arcentra/andcmd/arcentra-agent/.
make codegen after editing any .proto file or any wire.go file.
Testing
go test -race ./internal/path/... directly.
Configuration during development
The default configuration files underconf.d/ are tailored for local
development:
conf.d/config.toml— control plane.conf.d/agent.toml— agent.conf.d/plugins.toml— plugins and builtins.
make run starts the control plane against these defaults; you can also run
go run ./cmd/arcentra -conf <path> and go run ./cmd/arcentra-agent -conf <path> directly.
See Configuration for a reference of every section.
Versioning and releases
Arcentra uses a four-part YY.Major.Minor.Patch version scheme:YY— last two digits of the year (25for 2025,26for 2026).Major— incremented for architecture changes or breaking APIs.Minor— incremented for new, backward-compatible features.Patch— incremented for bug fixes and small adjustments.
Choosing the version at build time
TheMakefile resolves the version in this order:
- The
VERSIONenvironment variable. - A
VERSIONfile at the repository root. - An exact-match git tag (with the leading
vstripped). - Fallback to
<current-2-digit-year>.0.0.0.
Tagging a release
vYY.Major.Minor.Patch convention.
Reading the version from Go
Contributing
ReadCONTRIBUTING.md
for the full process. In short:
- Fork and branch from
main. - Run
make codegen,make lint, andmake testlocally before opening a PR. - Add or update documentation in this site for any user-visible change.
- Reference the related issue and follow the project’s commit and PR conventions.
SECURITY.md.