clearcutt-java25 : slim
Runtime tier — language runtime plus minimal troubleshooting binaries.
This image is currently in Preview status. It has catalog evidence, but is not recommended for production environments until general availability.
Published Wed, 10 Jun 2026 01:24:14 GMT
Last Rebuilt Wed, 10 Jun 2026 01:24:14 GMT
About this Image & Usage
Explore container capabilities, common use cases, and integration blueprints.
Capabilities & Guarantees
This Java Runtime Environment (JRE) image delivers a Zulu OpenJDK JRE 25 environment equipped with a restricted BusyBox debugging shell. It is designed for lightweight hosting with basic shell inspection capabilities.
Common Use Cases
- Deploying standard enterprise web applications (Spring Boot, Quarkus, Micronaut)
- Running microservices that require runtime hooks or staging environment diagnostics
- Hosting modular JRE processes with optimized memory configurations
Runtime Security & Execution Contract
Developer blueprints
Copy pre-configured code structures to accelerate deployment pipelines.
# Stage 1: Build the Maven application inside Java JDK dev builder
FROM ghcr.io/northcutted/clearcutt/clearcutt-java25:v0.11.0-dev AS builder
WORKDIR /app
COPY pom.xml .
COPY src ./src
RUN mvn clean package -DskipTests
# Stage 2: Hardened runner stage (distroless or slim Java JRE runtime)
FROM ghcr.io/northcutted/clearcutt/clearcutt-java25:v0.11.0-slim
WORKDIR /app
# Copy JRE-optimized JAR file
COPY --from=builder /app/target/*.jar ./app.jar
# Run JRE application as secure non-root operator
USER 10001:10001
CMD ["java", "-jar", "app.jar"]
If your organization mandates a certified base OS (like Red Hat UBI, Amazon Linux, or Ubuntu Pro) for compliance, you can stack ClearCutt's RPATH-bound /nix/store closure directly on top without modifying base layers or bundled agents.
{
description = "ClearCutt java25 grafted onto a mandated base";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
clearcutt.url = "github:northcutted/clearcutt/v0.11.0?dir=core";
};
outputs = { self, nixpkgs, clearcutt }:
let
system = "x86_64-linux";
pkgs = import nixpkgs { inherit system; };
mandatedBase = pkgs.dockerTools.pullImage {
imageName = "registry.access.redhat.com/ubi9/ubi-minimal";
imageDigest = "sha256:REPLACE_WITH_PINNED_BASE_DIGEST";
sha256 = "sha256-REPLACE_WITH_NIX_PREFETCH_DOCKER_HASH";
};
in {
packages.${system}.overlayImage = clearcutt.lib.graftOntoBase {
inherit system;
fromImage = mandatedBase;
runtime = "java25";
tier = "slim";
name = "acme-java25-ubi";
tag = "v0.11.0";
};
};
}
# Build: nix build .#packages.x86_64-linux.overlayImage
# Then prove the grafted runtime is byte-identical to the native runtime:
# clearcutt overlay verify \
# --runtime-archive clearcutt-java25.tar \
# --grafted-archive result \
# --runtime-ref ghcr.io/northcutted/clearcutt/clearcutt-java25:v0.11.0-slim@sha256:... \
# --grafted-ref ghcr.io/acme/java25-ubi:v0.11.0@sha256:... \
# --target java25-slim \
# --output-predicate # Run an interactive local dev shell with the exact same remediated Zulu JDK:
$ nix shell github:northcutted/clearcutt/v0.11.0?dir=core#clearcuttJava25-native
# Or declare inside your local flake.nix:
{
inputs.clearcutt.url = "github:northcutted/clearcutt/v0.11.0?dir=core";
outputs = { self, nixpkgs, clearcutt }: {
devShells.x86_64-linux.default = let
pkgs = import nixpkgs {
system = "x86_64-linux";
overlays = [ clearcutt.overlays.default ];
};
in pkgs.mkShell {
buildInputs = [ pkgs.clearcuttJava25 ];
};
};
} # Layer a custom JAR application declaratively in your Nix configuration
pkgs.dockerTools.buildImage {
name = "custom-java-microservice";
tag = "latest";
# Layer on top of ClearCutt's JRE base
fromImage = clearcutt-base-image;
copyToRoot = pkgs.buildEnv {
name = "image-root";
paths = [
pkgs.zlib # Layer in native dynamic libraries
java-app-package # Include your packaged JAR launcher
];
pathsToLink = [ "/bin" "/lib" ];
};
config = {
Cmd = [ "/bin/java-app" ];
User = "10001:10001";
};
} Pull & Run Workspace
Select your preferred container engine or deployment platform target.
Pull by multi-arch digest (Recommended, Secure)
docker pull ghcr.io/northcutted/clearcutt/clearcutt-java25@sha256:e3cba0708f2898c004e9e750197b821fa3b719b9fcd724413283b037c2fe3eba Pinned to release
docker pull ghcr.io/northcutted/clearcutt/clearcutt-java25:v0.11.0-slim Quick pull (rolling)
docker pull ghcr.io/northcutted/clearcutt/clearcutt-java25:slim Hardened docker run
docker run --rm \
--read-only \
--cap-drop=ALL \
--security-opt no-new-privileges \
--user 10001:10001 \
--tmpfs /tmp:mode=1777 \
ghcr.io/northcutted/clearcutt/clearcutt-java25:v0.11.0-slim Pull by multi-arch digest (Recommended, Secure)
podman pull ghcr.io/northcutted/clearcutt/clearcutt-java25@sha256:e3cba0708f2898c004e9e750197b821fa3b719b9fcd724413283b037c2fe3eba Pinned to release
podman pull ghcr.io/northcutted/clearcutt/clearcutt-java25:v0.11.0-slim Quick pull (rolling)
podman pull ghcr.io/northcutted/clearcutt/clearcutt-java25:slim Hardened podman run
podman run --rm \
--read-only \
--cap-drop=ALL \
--security-opt no-new-privileges \
--user 10001:10001 \
--tmpfs /tmp:mode=1777 \
ghcr.io/northcutted/clearcutt/clearcutt-java25:v0.11.0-slim services:
app:
image: ghcr.io/northcutted/clearcutt/clearcutt-java25:v0.11.0-slim
read_only: true
user: "10001:10001"
security_opt:
- no-new-privileges:true
cap_drop:
- ALL
tmpfs:
- /tmp:mode=1777 apiVersion: v1
kind: Pod
metadata:
name: clearcutt-java25
spec:
automountServiceAccountToken: false
securityContext:
runAsNonRoot: true
runAsUser: 10001
runAsGroup: 10001
seccompProfile: { type: RuntimeDefault }
containers:
- name: app
image: ghcr.io/northcutted/clearcutt/clearcutt-java25:v0.11.0-slim
imagePullPolicy: IfNotPresent
securityContext:
readOnlyRootFilesystem: true
allowPrivilegeEscalation: false
capabilities: { drop: ["ALL"] }
volumeMounts:
- { name: tmp, mountPath: /tmp }
volumes:
- { name: tmp, emptyDir: { medium: Memory } } {
inputs.clearcutt.url = "github:northcutted/clearcutt/v0.11.0?dir=core";
outputs = { self, nixpkgs, clearcutt }: {
devShells.x86_64-linux.default = let
pkgs = import nixpkgs {
system = "x86_64-linux";
overlays = [ clearcutt.overlays.default ];
};
in pkgs.mkShell {
buildInputs = [ pkgs.clearcuttJava25 ];
};
};
} Verify & Audit Compliance
Inspect catalog evidence, run registry-side verification where evidence exists, and review vulnerability gates.
Provenance & signatures
Cryptographically audit OCI identity claims and supply chain gating artifacts.
Cryptographic Proof
CATALOG REPORTS SIGNATUREOIDC Certificate Subject
Supply Chain Provenance
PROVENANCE RECORDED 3Compilation & Tests
TESTS PASSEDAttestations
4 kinds of evidence for this image. The counts are how many times each was independently signed into the public transparency log — not how many distinct artifacts exist.
cosign verify-attestation. gh attestation verify. The subject above is the multi-arch index (amd64 + arm64). Each architecture's SBOM is attested separately, in both ecosystems — so one SBOM naturally appears as several signed records below. Records also accumulate as the image is rebuilt, with each release re-signing into the transparency log afresh. Every entry is independent and publicly verifiable: click any #index below to inspect it in Sigstore Rekor, or use the copy-paste commands below to verify them locally.
How and where the image was built — binds this digest to the exact workflow run, commit, and builder.
Software Bill of Materials — the full inventory of packages baked into the image.
Signed evidence that the release-gate test suite passed for this exact digest.
The keyless cosign signature statement covering the image index.
Active Verification Toolkit
Run registry-side verification commands for the recorded release evidence.
Direct Cryptographic Evidence & Verification
https://github.com/northcutted/clearcutt/.github/workflows/release.yml@refs/heads/main https://token.actions.githubusercontent.com sha256:e3cba0708f2898c004e9e750197b821fa3b719b9fcd724413283b037c2fe3eba Run the native compiled Go CLI command locally to verify the registry digest, Sigstore signature, SBOM and test attestations, and SLSA provenance:
clearcutt verify release-evidence \
--ref ghcr.io/northcutted/clearcutt/clearcutt-java25@sha256:e3cba0708f2898c004e9e750197b821fa3b719b9fcd724413283b037c2fe3eba \
--repo northcutted/clearcutt \
--workflow-identity 'https://github.com/northcutted/clearcutt/.github/workflows/release.yml@refs/heads/main' 1. Inspect Security Metadata
Query deep, high-fidelity security metadata, dynamic entrypoints, non-root user settings, architectures, and release asset URLs.
CATALOG_DIR=./path/to/catalog
clearcutt --catalog "$CATALOG_DIR" inspect java25-slim --tag v0.11.0 2. Local Policy Gate Verification
Check catalog-record evidence flags, smoke tests, vulnerability limits, and lifecycle constraints locally or in CI pipelines. Use the release-evidence command or the Cosign/SLSA tabs for registry-side cryptographic verification.
CATALOG_DIR=./path/to/catalog
clearcutt --catalog "$CATALOG_DIR" verify image java25-slim \
--tag v0.11.0 \
--require-production \
--require-signature \
--require-sbom \
--require-provenance \
--max-critical 0 \
--max-high 5 3. Runtime Conformance Audit
Verify runtime specifications offline, asserting timezone configurations, dynamic links, CA certificate paths, and rootless isolation boundaries.
clearcutt conformance run \
--expect-runtime java 4. Scaffold Nix Overlay Graft
Under strict corporate base OS mandates, generate a workspace scaffolding to graft this runtime overlay onto existing host layers.
clearcutt overlay generate \
--runtime java25 \
--tier slim \
--base registry.access.redhat.com/ubi9/ubi-minimal \
--output my-java25-overlay/ 1. Verify Keyless OIDC Signature
Confirm this OCI image was built in your official release workflow and signed via keyless OIDC certificates.
cosign verify ghcr.io/northcutted/clearcutt/clearcutt-java25@sha256:e3cba0708f2898c004e9e750197b821fa3b719b9fcd724413283b037c2fe3eba \
--certificate-identity 'https://github.com/northcutted/clearcutt/.github/workflows/release.yml@refs/heads/main' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
--output json 2. Verify Cryptographic SBOM Attestation
Extract and cryptographically verify the compiled package software bill of materials statement.
cosign verify-attestation ghcr.io/northcutted/clearcutt/clearcutt-java25@sha256:e3cba0708f2898c004e9e750197b821fa3b719b9fcd724413283b037c2fe3eba \
--type spdxjson \
--certificate-identity 'https://github.com/northcutted/clearcutt/.github/workflows/release.yml@refs/heads/main' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
| jq '.payload | @base64d | fromjson | .predicate' slsa-verifier (SLSA Build L3)
Verify SLSA Build L3 provenance from the configured builder and source ref.
slsa-verifier verify-image ghcr.io/northcutted/clearcutt/clearcutt-java25@sha256:e3cba0708f2898c004e9e750197b821fa3b719b9fcd724413283b037c2fe3eba \
--source-uri 'github.com/northcutted/clearcutt' \
--source-branch 'main' GitHub Native Attestation
Audit the GitHub-native provenance attestation using the GitHub CLI client.
gh attestation verify oci://ghcr.io/northcutted/clearcutt/clearcutt-java25@sha256:e3cba0708f2898c004e9e750197b821fa3b719b9fcd724413283b037c2fe3eba \
--repo northcutted/clearcutt \
--cert-identity 'https://github.com/northcutted/clearcutt/.github/workflows/release.yml@refs/heads/main' \
--source-ref refs/heads/main Deep-Dive & OCI Specifications
Analyze the full Nix store dependency closure, image layer architecture, and OCI configuration labels.
Software Bill of Materials
Every package included in the image's /nix/store
closure. Generated from the actual OCI archive at build time and attached as an SPDX SBOM,
using the same package inventory as the CVE findings above.
SBOM generated Wed, 10 Jun 2026 00:49:48 GMT. Toggle between architectures; the package set typically matches but layer hashes differ.
Image Specifications & Release Ledger
Inspect the static OCI container metadata labels and browse the immutable published release history for this image.
| Key | Value |
|---|---|
| dev.clearcutt.recipe.license | Apache-2.0 |
| org.opencontainers.image.authors | ClearCutt maintainers |
| org.opencontainers.image.description | Hardened ClearCutt Base Image for java (25) - Tier: slim |
| org.opencontainers.image.licenses | NOASSERTION |
| org.opencontainers.image.ref.name | slim |
| org.opencontainers.image.source | https://github.com/northcutted/clearcutt |
| org.opencontainers.image.title | clearcutt-java-25 |
| org.opencontainers.image.url | https://github.com/northcutted/clearcutt |
| org.opencontainers.image.vendor | ClearCutt |
| org.opencontainers.image.version | 25 |
| Tag | Published | Archs | Packages | |
|---|---|---|---|---|
| v0.14.0 latest | Sat, 11 Jul 2026 00:47:46 GMT | amd64arm64 | 19 | .intoto.jsonl ↗ |
| v0.13.0 | Fri, 10 Jul 2026 00:21:20 GMT | amd64arm64 | 19 | .intoto.jsonl ↗ |
| v0.12.2 | Sat, 04 Jul 2026 17:29:57 GMT | amd64arm64 | 19 | .intoto.jsonl ↗ |
| v0.12.1 | Sat, 04 Jul 2026 13:08:58 GMT | amd64arm64 | 19 | .intoto.jsonl ↗ |
| v0.11.1 | Wed, 10 Jun 2026 02:52:21 GMT | amd64arm64 | 125 | .intoto.jsonl ↗ |
| v0.11.0 | Wed, 10 Jun 2026 01:24:14 GMT | amd64arm64 | 125 | .intoto.jsonl ↗ |
| v0.10.4 | Tue, 09 Jun 2026 12:54:17 GMT | amd64arm64 | 125 | .intoto.jsonl ↗ |
| v0.10.2 | Sun, 07 Jun 2026 21:31:16 GMT | amd64arm64 | 125 | .intoto.jsonl ↗ |
| v0.10.1 | Sun, 07 Jun 2026 16:42:20 GMT | amd64arm64 | 125 | .intoto.jsonl ↗ |
| v0.10.0 | Sun, 07 Jun 2026 14:37:59 GMT | amd64arm64 | 125 | .intoto.jsonl ↗ |