Supply Chain Integrity
Reproducible Builds
DevGuard OCI images are built with Nix. Given identical source and dependency closures, it deterministically yields bit-for-bit identical output, satisfying the formal definition established by reproducible-builds.org.
Why reproducible builds matter
GitHub Actions runs on infrastructure in the United States — openCode runs on sovereign German governmental infrastructure. When both independent build environments produce the same SHA-256 digest, it constitutes cryptographic evidence that no build-time tampering occurred — directly addressing the SLSA supply-chain threat model for build-level compromise.
Tamper evidence
Any build-time injection — compiler backdoor, compromised dependency, or tampered CI runner — would alter the output binary and produce a diverging SHA-256 digest. Matching digests across independent environments are cryptographic evidence of an unmodified build.
Independent verification
Two independent build environments under separate administrative control constitute an N-of-M verification model: a supply-chain attacker would need to compromise both infrastructure providers simultaneously, across different jurisdictions, to go undetected.
Nix-powered
Nix models each build as a pure function over a content-addressed input closure. Every dependency is pinned to a cryptographic hash in the Nix store, eliminating non-determinism from timestamps, locale settings, and floating dependency resolution.
Live digest verification
OCI image digests are fetched live from both registries and compared. A matching SHA-256 digest across independent build environments is a necessary condition for build integrity.
Signatures and attestations
Every published image is signed via Sigstore/Cosign . Each release additionally carries SLSA provenance attestations in the in-toto predicate format, a VEX attestation, and a CycloneDX SBOM attestation — enabling independent verification of what was built, from which source revision, under which build environment, and what known vulnerabilities apply.
Signed images
Each image digest is signed with Cosign against a static public key. Verifying the signature cryptographically binds the digest to the key holder, making unauthorized image substitution detectable.
Build provenance
SLSA provenance attestations, encoded in the in-toto predicate format, record the exact source revision, build platform, and entry-point invocation. They allow a verifier to reason about the full build provenance chain — from source commit to published digest.
VEX and SBOM
Each image carries a CycloneDX SBOM attestation enumerating all transitive dependencies with their cryptographic hashes, and an CycloneDX VEX attestation asserting the exploitability status of known CVEs — enabling precise, machine-readable vulnerability impact analysis.
cosign verify \
--key https://raw.githubusercontent.com/l3montree-dev/devguard/main/cosign.pub \
ghcr.io/l3montree-dev/devguard:main-amd64Verify manually
Pull both images independently and compare their SHA-256 digests. Digest equality is a sufficient condition for byte-for-byte output identity — no external trust anchor required.
Pull both images
Fetch the images from both registries independently.
docker pull ghcr.io/l3montree-dev/devguard:main-amd64
docker pull registry.opencode.de/oci-community/images/l3montree/devguard/devguard:main-amd64Compare the digests
Inspect the cryptographic digest of each image. Both must be identical.
docker inspect --format='{{index .RepoDigests 0}}' \
ghcr.io/l3montree-dev/devguard:main-amd64
docker inspect --format='{{index .RepoDigests 0}}' \
registry.opencode.de/oci-community/images/l3montree/devguard/devguard:main-amd64Alternatively: use skopeo
skopeo lets you inspect remote images without pulling them first.
skopeo inspect \
docker://ghcr.io/l3montree-dev/devguard:main-amd64 | jq '.Digest'
skopeo inspect \
docker://registry.opencode.de/oci-community/images/l3montree/devguard/devguard:main-amd64 | jq '.Digest'Where images are built
Both pipelines build from the same Git revision on every push to main. The workflow definitions are publicly auditable — inspect them to confirm the build inputs, toolchain version, and push targets are identical.
Builds and pushes all images to ghcr.io on every commit to main.
Mirror pipeline on openCode, German governmental infrastructure hosted in Germany, builds and pushes to registry.opencode.de.