OpenReason

Reasoning you can verify — by people and machines.

Big decisions — in policy, in markets, in AI — rest on reasoning you’re asked to trust but never get to see. OpenReason is an open standard that puts it in the open: the sources, the assumptions, the trade-offs, structured so anyone can check it. Since v0.3, a machine can verify it cryptographically before acting on it.

The story 01
The problem01 / 26

Someone just made a decision that affects you.

Do you know how they got there?

Two readers 02
Public reasoning

For people

Document, inspect, fork and challenge the reasoning behind a decision. Trust comes from argument and cited sources — not authority. This is the original civic mission.

How it works →
Verifiable data product

For machines

Verify a dataset offline, enforce what may be done with it, and prove use — a signed passport an agent checks itself, with no new crypto. Added in v0.3.

The machine layer →
What it is 03

Not a report. A simulatable object.

An ORP document is reasoning you can re-run — five structured layers, from where the data came from to how the conclusion was reached, that anyone can fork and re-run with different assumptions. Disagreement becomes locatable: you can point to the exact assumption two parties diverge on.

In v0.3 the object is sealed with a signature — so a machine can verify the whole thing offline and know exactly how far to trust it.

The machine layer · v0.3 04

Data products

Start 05

Write your first document

Apache-2.0 · Python · runs locally.

pip install orp-validator
orp new my-policy.yaml --compliance basic
orp validate my-policy.yaml
Not just text on a website 06

Real, now. Verify it yourself.

Everything on this page is shipped. Check a cryptographic signature in your own browser, send a real document to the live API, and install the same tools an agent would use — then tell us what breaks.

In your browser · offline

Verify a signed passport

A real ORP v0.3 document, signed with Ed25519. Your browser recomputes the canonical hash and checks the signature against the key in the did:key. No server is asked — and nothing is asked to trust us.

documentProvenance passport — Danish Environmental Protection Act §33 (EU IED transposition)
known_exclusionsExecutive orders (bekendtgørelser) issued under §33 are not included
signerdid:key:z6MkkBamoGmcEv…i7o9N2
claimed hashsha256:6aeae224eca961e…ac62dee7
Same result from Python, the JS SDK or an agent via MCP.
Hosted API · live

Validate a real document

Four different documents — a full policy analysis, a post-hoc AI-training reconstruction, a bare minimum, and a broken one — sent to the public validator at api.publicreasonproject.org. The response is whatever the API says right now, and it should differ.

Paste your own →
Spec: REST API · validates v0.1 and v0.2 today; v0.3 profiles via the CLI.