THE CLEARCUTT BLUEPRINT
Hermetically Built.
ClearCutt is a free, forkable platform kit for publishing your own hardened base-image fleet — with signatures, SBOM attestations, SLSA provenance, catalog evidence, app-team templates, and governance gates under your own GitHub OIDC identities. You run the pipeline; there is no hosted ClearCutt control plane to trust.
About ClearCutt
ClearCutt is a free, open-source base image blueprint designed for platform and security engineers who want cryptographically certifiable, shell-less runtime containers. Unlike traditional opinionated base OS projects, ClearCutt is a forkable framework built with Nix. Downstream teams are expected to fork this repository to compile and govern their own custom internal container feeds, or overlay safe Nix closures on top of standard base images (like Red Hat UBI or Ubuntu Pro).
Our supply chain pipeline compiles target runtimes as isolated, hermetically-built /nix/store closures. The catalog serves as a live worked-example proving the end-to-end verifiability of our OCI builds, from OIDC-based signing to transparent OpenVEX exploitability records.
Supply Chain Architecture Flow
The end-to-end ClearCutt trust flow coordinates hermetic Nix base compilations, OIDC-based signing and attestation metadata, and Kubernetes dynamic policy checks at admission time:
Structural Hardening & Compliance Traits
Auditing modern cloud-native systems requires proof of configuration. ClearCutt translates traditional soft policies into verifiable, structural traits:
Structural Hardening
The distroless tier omits shells, package managers, and core system utilities. That reduces common shell-spawn escape paths, while keeping the exact boundary visible in the security model.
Cryptographic Overlays
Images expose independently verifiable Sigstore signatures, SBOM attestations, SLSA Build L3 provenance, test evidence, and release metadata that downstream gates can pin to exact workflow identities.
Rescan Without Rebuild
Because an SPDX SBOM is attached to every image, the catalog re-scans it nightly against the current vulnerability database — newly-disclosed CVEs surface without rebuilding the image. A separate scheduled job drafts remediation PRs for review; nothing merges or deploys on its own.
Tiers, at a glance
Distroless
No shells, no coreutils, no package manager. Only the language runtime and CA certificates. Smallest attack surface; not for debugging.
Slim
Adds busybox/bash and minimal troubleshooting tooling. Production runtime when you still want a way in.
Dev
Full compiler toolchain, debug shells, and the transient credential helper. Strictly build-time; never deploy this to clusters.
Runtime closure policy
ClearCutt defaults to a compatibility-first runtime closure, then makes the trade-offs explicit. The baseline keeps the primary language runtime, CA trust, required dynamic libraries, and the transitive packages Nix proves are reachable from that runtime. The slim tier adds only a small diagnostic shell/tool surface. Distroless removes that operator surface.
Packages that exist mainly for optional features, such as Java printing, AWT, fonts, or image codecs, are tracked as pruning candidates instead of being silently removed. The default image should run ordinary workloads without customization; specialized users can fork the Nix closure or adopt a future minimal profile when they can prove they do not need those compatibility edges.
What we attest
- SPDX SBOM — emitted by Syft from the actual OCI archive, attached to the manifest as a cosign predicate of type
spdxjson. - Test results — a custom predicate recording the vulnerability and structure gates that passed before publication.
- SLSA Build L3 provenance — generated by the upstream slsa-github-generator reusable workflow, against the multi-arch manifest digest.
- Sigstore keyless signature — cert chain points back to the exact GitHub Actions workflow file and ref that built the image.
The catalog reports those channels independently; provenance never stands in for a missing signature, and vulnerability scans show as pending until every architecture has fresh scan data.
Threat model boundaries
Distroless removes exec()-style shell escapes but does
not mitigate every RCE class. Direct syscalls, bundled interpreter APIs, or
statically-linked shells inside an application binary are unaffected. See the
architectural decisions log
in the repo for the full trade-off discussion.