make lint)make build # Compile warden binary
make test # Run unit tests
make cover # Tests with coverage report
make lint # Run golangci-lint
make fmt # Format code
make tidy # go mod tidy
make clean # Remove built binaries
cmd/warden/ Host binary — CLI, orchestrator, inspect, extensions
cmd/relay/ Container binary — proxy, ledger writer, DNS, TLS, fair scheduler
ledger/ Shared library — wire format types, reader, verification
examples/ Example Dockerfiles
docs/design/ Specifications and design documents
cmd/warden/ runs on the host. It creates the network, builds the relay image, starts containers, configures iptables, runs inspect, and tears everything down.cmd/relay/ runs inside a container. It intercepts traffic, writes the ledger, and generates the ephemeral CA. Fully independent of the warden binary.ledger/ is the only shared code — defines the binary ledger format and provides read/verify logic used by both warden inspect and the relay’s test suite.Extensions implement BeforeBuild(env *CtrEnv) error and optionally Env() map[string]string. They:
.warden/ (which gets COPY’d into the build image).warden/ext.d/ (exec’d inside the build container)FROM lineCurrent extensions:
/etc/ssl/certs/)Integration tests require a working container runtime:
warden build examples/Dockerfile.simple
Verify the output:
warden inspect /tmp/warden-ledger-*/ledger
make testgit tag v0.x.ygit push origin v0.x.y