oneproof.dev
Evidence infrastructure for AI agents

Logs are testimony.
Receipts are evidence.

Open tools for the day someone asks you to show — not tell — what your AI system did. Prevent with ratified policy. Detect when the verified system changes. Prove where every answer came from.

# Prevent is shipped today — install it from PyPI $ pip install onedoor
onedoor v0.7.0 · Apache-2.0 · no framework, no telemetry, runs on your machine
action payments.transfer tier 2 amount € 480.00 cap € 500.00 policy ver 29e85d2c…5166 ratified
verdict ALLOW undo 900 s
action payments.transfer amount € 2 340.00 cap € 500.00 verdict REFUSE exceeds cap
Exhibit A — two verdicts under one ratified policy version worked example
The rainy day

Every AI deployment has a sunny-day story: the demo works, the dashboard is green. Then comes the other day — a transfer that should have been refused, an answer citing a document that says the opposite, an auditor asking: what exactly happened, and how do you know? On that day a log is testimony — something your system says about itself, in a form it can quietly change. That day requires evidence: records made before the question was asked, in a form a stranger can check without trusting you.

Observability takes the demo meeting. Evidence takes the deposition.

The shape of the evidence
One question, ten records“Maximum single-invoice value for Meridian Fabrication under the 2025 framework agreement, in USD?” — every stage carries its own provenance contractRECEIPT · re-derivable ✓DECLARED · bytes frozena receipt replays; a declaration admits it cannot — both are integrity-checkableS0 · Source custodyFrameworkAgreement_2025.pdfsha256 9f3a…c21,482,331 bytes · filed copyidentity record — everythingtraces back to these bytesRECEIPT · re-derivable ✓S1 · Conversionpdftotext 23.11 · -layoutin 9f3a…c2out 41d0…8esame tool, same bytes —anyone can replay itRECEIPT · re-derivable ✓S2 · Cleaningclean.py v1.4 · rules pinnedin 41d0…8eout 7bb2…19census: 2 tables unparsed —counted + listed, not hiddenRECEIPT · re-derivable ✓S3 · Chunkingchunker v2.0 · 800 / 120out 412 chunks · #217 e51c…03#217 = clause 7.3origin: parent text S2 —containment re-derivableRECEIPT · re-derivable ✓S4 · Embedding · indexembed model + versionin chunk digestsout idx-2026-08-28-apinned local weights: receipt;hosted API: declaredpinned ✓API → declaredS5 · Retrievalquery 22ae…f7 vs snapshotout top-5 ids + scores#217 ranked firstdeterministic againstthe frozen indexRECEIPT · re-derivable ✓S6 · External tool — FX APIECB rates · 14:02:11 CETreq frozen · resp cc17…4b{"EURUSD": 1.0842}world-state: proves what itanswered then, not tomorrowDECLARED · bytes frozenS7 · Prompt assemblytemplate v3 + chunks + FX respout b90d…61what the model saw —answerable to the byteRECEIPT · re-derivable ✓S8 · LLM generationmodel id · params recordedout 5e2f…9a (frozen)cannot promise repeatability —and says so on its faceDECLARED · bytes frozenS9 · Citation checkclaim → containment → span → bytes€250,000 · clause 7.3VERIFIED · derived span · unique match3 outcomes kept apart: verified /contradicting / couldn't-checkRECEIPT · re-derivable ✓pdftexttextchunksindex snapshotchunksratepromptanswerFreeze what you can’t re-derive · receipt everything you can · count what fell through · let the checker be someone who doesn’t trust you.onetrace — stage-receipt method, worked example at the derived-span profile (the level the reference pipeline implements) · six receipts, two declarations, one mixed stage, one mechanical check
Exhibit B — ten records behind one answer the format, specified →

Three doors, one discipline

The suite

Different questions, one discipline: a record at every step — from the evidence an answer rests on to the authorization an action required — each checkable by someone who doesn't trust us. Use one alone, or all three together.

Where it fits in a typical AI stack — one picture →

Prevent — onedoor

A policy engine for agent actions. Define caps, bounds, and undo windows; ratify a version; every action is then checked against that ratified snapshot — allow, review, or refuse — and every verdict names the exact policy version that decided it.

Shipped · v0.7.0 on PyPI · Apache-2.0 · user manual (PDF)
github.com/shamiksaharcciit-oss/onedoor →

Detect — onewatch

Change-evidence monitoring. The system you audited on Monday is not automatically the system running on Friday. onewatch keeps verifiable baselines so that when something underneath you changes, you hold a record that it did — evidence, not a feeling.

Public September 10 · verification tooling open
Ask for early details →

Prove — onetrace

Forensic provenance for retrieval pipelines. A receipt at every stage — source bytes, cleaning, chunking, retrieval, assembly, the model call — so an answer traces to the exact passage that produced it, and every step can be re-derived from the records alone.

Paper & code in preparation · verifier ships open
The record format and digest recipes →
The protocol underneath

Written down where no vendor can move it

The rules oneproof enforces are not proprietary behavior — they follow a published protocol. AADP, the Agent Action Decision Protocol, specifies per-action authorization for AI agents: how an action is described, how a decision is made against ratified policy, and what record the decision leaves behind.

It is an individual-submission Internet-Draft at the IETF, with a public interoperability fixture and independent external review — so an implementation you write is checkable against the same text as ours.

draft-saha-aadp
Title
The Agent Action Decision Protocol (AADP): Per-Action Authorization for AI Agents
Status
Internet-Draft, individual submission · −01 posted; −02 in preparation
Fixture
CDX-AADP-INPUT-PROVENANCE-001 interoperability fixture (public)
Reference
datatracker.ietf.org/doc/draft-saha-aadp
House rules for claims

What this site will not do

No aspiration dressed as capability

If a feature is planned, it is labeled planned. If a number comes from a worked example, it is labeled a worked example. Nothing on this site describes what we hope the tools will do as if they already do it.

Cryptography is opt-in, off by default

Receipt chaining, signing, and anchoring exist as options you turn on deliberately — and every claim about them travels with that sentence. A default you didn't choose is not a guarantee you hold.

Three outcomes, honestly reported

A verification can come back verified, contradicted, or couldn't check — and couldn't-check is never rounded up to verified. A checker that only ever says yes is a decoration.

Read the case

Publishing the week of Sept 8