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.
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.
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
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.
- 01
Your CI measures
The repository's own workflow runs the checks and writes a canonical evidence bundle. It never leaves the repository.
- 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.
- 03
The commitment is anchored
Only the commitment enters Midnight, inserted into a historic Merkle tree. The evidence is nowhere on chain.
- 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.