Trust our storage.
Don't trust us — run this.
Root Witness is a tamper-evident audit log for AI agent activity. Your agents append records — tool calls, trades, approvals, refunds — and we maintain an append-only Merkle transparency log and publish signed checkpoints.
Then you run a witness on your own machine. It fetches our checkpoint, demands a cryptographic consistency proof against the history it already knows, and refuses to co-sign if we ever rewrite, truncate, or fork your log. Our own signature on a bad checkpoint becomes the evidence against us.
10,000 entries/month free · your own witness included · no card
How it works
Four hops from an agent action to a proof you can check offline.
Nothing in this path requires you to believe us. The last hop is a program you run, holding a key we never see.
Agent appends a record
A tool call, a trade, a human approval, a refund. One HTTP call, or one line of the client library.
{"action":"refund","amount_cents":4200,…}
Merkle transparency log
The record is hashed into an append-only RFC 6962 tree. Every entry's position is fixed by every entry after it.
index 10
Signed checkpoint
We publish a C2SP signed note: origin, tree size, root hash, our Ed25519 signature. Public, and once you have a copy, we cannot change what you already hold.
12
gUF7FxKEkz8HK434ellhpxZV18pSLinm…
Your witness checks us
Runs on your infrastructure. Verifies our signature, demands a consistency proof from the last checkpoint it accepted, then co-signs — or refuses and keeps the evidence.
co-signed · 11
Inclusion proofs work the same way. When you append, you get a receipt: the leaf hash, the index, and the audit path. Anyone holding a checkpoint can recompute the root from your record and that path — with no network access and no call to us. If the recomputed root matches a checkpoint we signed, the record was in the log at that size. If it doesn't, something is wrong and the math says so.
The difference
Everyone else asks for trust. We hand you the instrument that checks us.
"Your data is safe in our storage. Here is our compliance certificate."
The evidence that your log is intact is a claim made by the same party that controls the database. If that party — or someone inside it, or someone who compromises it — edits a row, the only detector is that party's own monitoring. You are asked to audit a vendor using artifacts the vendor produces.
"Don't trust us. Run this, and hold the key yourself."
rootwitness is a small, auditable program — a few hundred lines,
source published, reproducible build. It stores the last checkpoint it accepted, demands a
consistency proof for every new one, and signs only what verifies. It never sends us your
witness key, and it will run against a log we can't see it running against.
- Rewrite an old entry → consistency proof fails → witness refuses to co-sign.
- Truncate the log → tree size goes backwards → refusal, with both signed checkpoints saved.
- Show you one history and an auditor another → two signed checkpoints at one size that don't agree. That's a split view, and it's self-incriminating.
A malicious operator with full database access
Assume the worst insider: root on our servers, unrestricted writes, ability to delete backups. They can still corrupt or destroy data — no system prevents that. What they cannot do is change history quietly. Any altered past produces a tree that fails to prove consistency with a checkpoint your witness already holds.
Your witness key, on your machine
To make a rewrite look legitimate, an attacker would need the private key that co-signs
checkpoints — which is generated by rootwitness init, stored on your
hardware or your KMS, and never transmitted to us. Compromising our infrastructure is not
sufficient. That's the point of the design.
Our signature is the liability
Every checkpoint carries our Ed25519 signature over a specific tree size and root hash. If we ever sign two conflicting views of your log, you hold both signed statements. Non-repudiable, verifiable by any third party, admissible as a technical artifact in a dispute.
Who this is for
Built for obligations that bind today — not ones that arrive in 2027.
Records retention rules already require that certain electronic records be preserved in a non-rewriteable, non-erasable form, or that alterations be detectable. Agents now generate those records at machine speed.
Broker-dealers and fintechs
Agents that place orders, move money, adjust limits, or approve exceptions produce books-and-records events. Root Witness gives you per-record receipts and an audit-trail alteration detection story that doesn't rest on your vendor's word. Write-once checkpoint archival is configured per account on the Regulated plan — talk to us before you count on it for a specific retention rule.
Healthcare and health-tech vendors
Audit controls require mechanisms that record and examine activity in systems containing ePHI. Use hash-only privacy mode: you send us record hashes, never the content. You still get inclusion proofs, checkpoints, and independent verification — we hold nothing to breach.
AI agent operators
Anyone running autonomous or semi-autonomous agents against production systems: tool-call logs, approval chains, prompt and policy versions, model and config changes. When an agent does something expensive, "what exactly happened, and can you prove it" arrives within the hour.
The EU AI Act's Article 12 record-keeping duty is real, but its high-risk obligations were pushed to December 2027. We don't lead with it. The rules above apply now.
Get a log
Free tier, no card. One minute.
You get a log URL, an API key, and the exact command to run your own witness against it. The witness is the point: it is what lets you catch us rather than trust us.
Your log
API key — shown once
Run your own witness
Save both lines somewhere before you close this. The witness stores the last checkpoint it accepted; if we ever serve a history that contradicts it, the witness refuses and writes you an evidence file containing both signed statements.
Pricing
Your own witness is included on every plan, including free.
Verification is not an upsell. If independent checking were a paid feature, the free tier would be asking you to trust us — and that's exactly the thing we're arguing against.
$0 / month
For evaluating the model, side projects, and single-agent deployments.
- 10,000 entries per month
- 1 log
- Your own witness included
- Signed checkpoints and inclusion proofs
- Offline verification — no plan gate, ever
$99 / month
For production agent fleets that need privacy separation and offline checking.
- 1,000,000 entries per month
- 3 logs
- Hash-only privacy mode — we never see your data, you still get proofs
- Priority support and a named contact
- Everything in Free
$799 / month
For firms whose examiners, auditors, or counsel will ask to see the evidence.
- Write-once checkpoint archival, provisioned with you
- Bitcoin timestamp anchoring via OpenTimestamps, enabled per account
- Retention configured to your rule, in writing
- Auditor-facing evidence letter
- 100,000,000 entries per month, 50 logs
- Everything in Team
Not a self-serve plan. Archival, anchoring and retention are set up against your specific rule and confirmed in writing before you pay for them — so this tier starts with a conversation, not a card.
Talk to us about RegulatedAlready spoken with us and ready to start? Subscribe to Regulated. Checkout asks which log you are paying for.
Upgrade an existing log to Team
Checkout asks which log you are paying for, and it has to be typed by hand. We check the name against the live log first, because a name that matches nothing takes the payment without lifting the quota.
No log yet? Create a free one first. Your origin and API key do not change when you upgrade, and your entries and proofs are untouched.
Every plan runs the same log and the same witness. Paid tiers add capacity, privacy separation, and the archival and anchoring artifacts an examiner asks for — never the ability to check us. Those two artifacts are provisioned per account rather than switched on by a payment; ask us for the current state of yours and we will tell you plainly.
Honest limits
What this cannot do
A transparency log proves that everything in the log is intact. It cannot prove that everything that happened was written to it. That gap is called omission at the boundary, and it is the honest limit of this entire class of system — ours included.
If an agent takes an action and never calls the append endpoint — because it crashed, because a network path failed, or because someone deliberately disabled the call — no cryptography downstream can reveal a record that was never created. The Merkle tree is a statement about its own contents.
We say this plainly because auditors already know it. A vendor who implies otherwise is either confused or selling. Being precise about the boundary is what makes the claims inside it worth relying on.
- We can't stop tampering. We make it detectable by third parties. Prevention and detection are different properties, and only one of them is achievable by a log.
- We can't validate truth. If an agent writes an inaccurate record, the log preserves an inaccurate record faithfully and provably.
- We can't recover data we never had. In hash-only privacy mode we hold hashes; if you lose the underlying records, proofs remain valid but the content is gone.
- A witness that never runs proves nothing. Detection depends on you actually running
rootwitness watchand alerting on refusals. - Cryptography is not compliance. Verifiable records support your 17a-4, 4511, or 164.312(b) program. They don't constitute one, and we won't tell your examiner they do.
- Archival and anchoring are not on by default. Both are provisioned per account on the Regulated plan, against your retention rule. Paying does not silently switch them on, and we will not let you tell an examiner they are running until they are.
Questions
Details a reviewer will ask about.
01 What exactly is a witness, and why does running my own matter?
A witness is a small program that keeps one piece of state — the last checkpoint it accepted — and one secret: a signing key you generate. Each time we publish a new checkpoint, it verifies our signature, requests an RFC 6962 consistency proof between the old tree size and the new one, and recomputes the hashes itself. Only if that proof verifies does it co-sign. Because the key lives with you, a co-signature is a statement you made, not one we can manufacture. And because a refusal is recorded with both signed checkpoints, our own signature becomes the evidence against us.
02 Can I verify a record without contacting your API?
Yes — that's the design goal. An inclusion proof is a leaf hash, an index, a tree size, and an audit path of sibling hashes. Given a checkpoint you already hold, verification is pure local computation: hash the record, walk the path, compare roots. The rootwitness verify command does this with the network disabled, on every plan including free — auditors can run it on an air-gapped machine, and it needs no account with us at all.
03 How is hash-only privacy mode different?
Your client canonicalizes and hashes the record locally and sends only the digest and non-sensitive metadata. We append the digest. You keep the plaintext in your own systems. Inclusion proofs, checkpoints, consistency proofs, and witness co-signing all work identically, because the log has never needed to read your data — only to hash it.
04 What happens if the consistency check fails?
The witness refuses to co-sign, exits non-zero, and writes an evidence bundle containing both conflicting signed checkpoints, the proof it requested, and the response it received. Wire that exit code into your alerting. Nothing about the failure depends on us cooperating — the artifacts are already on your disk.
05 What does Bitcoin anchoring add on the Regulated plan?
OpenTimestamps commits a checkpoint's root hash into a Bitcoin transaction, producing a timestamp attestation nobody — including us — can backdate. It answers a different question than the witness does: not "is the history consistent" but "did this root hash exist by this date," provable to a third party who has never heard of us. Combined with write-once checkpoint archival, it's the package auditors tend to ask for.
Two caveats we would rather you heard from us. A freshly submitted attestation is a calendar server's promise, not yet Bitcoin evidence — it becomes evidence once a block confirms, and our tooling reports which of the two you are holding. And anchoring is enabled per account rather than by paying, because the cadence and the retention rule are yours to choose. Ask and we will tell you exactly what is running on your account.
06 Why "tamper-evident" and not stronger language?
Because stronger language would be false. Nothing in software prevents a sufficiently privileged party from altering bytes. What a Merkle transparency log with independent witnesses gives you is that alterations to recorded history become detectable by parties who don't trust the operator, using math they can run themselves. That's a precise claim, and precision is why regulated buyers take it seriously.
07 What's the write path overhead?
The client library batches and returns as soon as the entry is durably queued, with a promise of a receipt at the next tree-head integration; you can also request synchronous receipts. Checkpoints are published on a fixed cadence, so witness verification cost is constant regardless of write volume.
08 Is the witness source available for review?
Yes — github.com/725ttzn82p-beep/rootwitness, Apache 2.0. There is no binary to trust: it's a small pure-Python package you install from source and run yourself, four modules totalling a few hundred lines, so a security reviewer can read all of it in an afternoon. A verifier you can't audit would recreate the trust problem one layer down. We don't yet ship a reproducible build or signed release artifacts, because there's nothing compiled to reproduce — if you'd rather pin an exact commit, the repository is the artifact.
Append your first record, then try to catch us cheating.
Free tier, no card, witness included. The quickstart takes about five minutes: install the client, append an entry, verify the receipt with the network off, and start a witness that will keep watching us long after you've stopped thinking about it.