zkuat
Zero-knowledge attestation on Midnight

Prove your security posture.Disclose nothing.

Every security review forces the same trade: to prove your codebase is healthy, you hand over your source, your CI logs, and your vulnerability findings. The evidence is the exposure. The verifier never needed it — they needed a boolean.

Verify an artifact

The asymmetry

One artifact. Two irreconcilable views.

Every number on the left is absent from the right — and absent from the chain. The verifier gets the boolean it actually needed.

What the attester holds

acme-corp/payments-api · never leaves the machine

  • Critical vulnerabilities0
  • High vulnerabilities3
  • Known-exploited (KEV)0
  • Vulnerable dependencies6
  • Total dependencies427

Private — not written to Midnight

ZK proof
What the verifier sees

ACME Bank Procurement v1 · satisfied

  • No critical vulnerabilities
  • At most 5 high vulnerabilities
  • No known-exploited (CISA KEV) vulnerabilities
  • Build provenance verified (SLSA / Sigstore)
  • Evidence no older than 30 days

artifact 3d8f21a90b…03b41e

How it works

Four steps, and the evidence never moves.

  1. 01

    Your CI measures

    The repository's own workflow runs the checks and writes a canonical evidence bundle. It never leaves the repository.

  2. 02

    GitHub signs a commitment

    A salted commitment to that evidence is signed under the repo's OIDC identity — the same trust root SLSA and npm provenance use.

  3. 03

    The commitment is anchored

    Only the commitment enters Midnight, inserted into a historic Merkle tree. The evidence is nowhere on chain.

  4. 04

    You prove, locally

    A zero-knowledge proof generated on your machine shows the anchored evidence satisfies a published policy. One boolean is disclosed.

Why this needs Midnight

Remove the zero-knowledge layer and you are back to emailing a PDF.

Predicates over private data

A public chain would need the evidence on chain to check the policy. Compact evaluates the predicate and discloses only the result.

Compiler-enforced disclosure

Every disclose() is a deliberate hole a reviewer can audit. The comparison is disclosed; the operands never are.

Anonymous set membership

A historic Merkle tree lets a repository prove it belongs to the attested set without revealing which member it is.

Local proving

Proofs are generated on the developer's machine. No third party ever receives the evidence — which is the entire point.

Where it applies

Vendor security review

Answer fifty enterprise questionnaires without fifty NDAs and fifty document exchanges.

Supply chain assurance

A dependency demonstrates green CI and zero criticals continuously, without publishing a map of its weak points.

Continuous compliance

Per-commit control attestation with an expiry date, instead of an annual snapshot in a shared drive.

Attest your first repository

Sign in with GitHub. Your evidence stays on your machine — we only ever see a commitment.