Open source · Python · dependenciesMCP server · Agent Skill · HTTP API

A record that checks what your agents claim.

Agents write their hypotheses, runs, results and claims into HypGraph. It refuses a number no result accounts for, “always” without the counts and “ruled out” without a powered search, and works out from the record on every read what has been shown and what is at risk.

Don't believe the hype. Test the hyp.
verifying…
What you can check

Facts, each with its source.

Each figure here is a claim in this page's own HypGraph record, bound to the measurement it came from and re-measured another way by a reviewer before the page was built. Click a claim to open it in the record.

Tests
passing on this build; CI runs Linux, macOS and Windows
Runtime dependencies
The engine, CLI, HTTP server and UI use the standard library
Example records verify
SHA-256 over the exact strings that were hashed — run it here, in your browser
What it refuses

Overclaims don't get into the record.

These were written into a scratch record when this page was built. The engine refused each one with a code and what to fix; the rewrite underneath, on the same evidence, was accepted.

Eight rules

Each rule is a mistake that was really made.

HypGraph came out of a team of AI agents doing long investigations, and the errors they made despite instructions not to. Each became a rule the record enforces when work is written, not advice it hopes is followed.

Standing is derived

No field says “confirmed”. Review, risk, support and evidence strength are computed from the record when it is read.

Append-only

Hash-chained with SHA-256. Corrections are new versions; withdrawals stay on record. verify() catches an edit.

Reviews pin versions

Revise a checked claim and its check goes stale. A decision based on the old version is flagged to revisit.

Claims carry numbers

A claim's numbers are bound to result fields. A number with no source is refused — the commonest way summaries go wrong.

Independence is counted

Three results from one run are one line of evidence, not three. Lines that share data or a source merge.

Exclusions need power

“Rules out” only after a search was shown to find a planted answer. Otherwise it's inconclusive.

Authors don't review themselves

Only named reviewers' verdicts count, and not on their own work. Others' are kept as comments.

Instruments speak for themselves

Only the lab runner files a lab-recorded run. A run you describe is labelled as your report.

The arithmetic of never

failures in tests still leaves across a million uses.

An agent that sees none in its tests writes “it never happens”. The record refuses that sentence and asks for the counts, then states what they leave open at the scale you deploy.

The arithmetic, worked through

failures not ruled out across uses, at 95 % confidence, from in tests.

One record, five workflows

Each discipline's method, enforced by the record.

A profile carries its discipline's stages, the gate out of each and what counts as done. The stage is derived from the record, never set by an agent. Each row has a live example.

profilea question passes throughthe record refusesdone when
scientific@2asked → conjectured → preregistered before a run → run → evidenced → claimed → reviewed numbers no result accounts for; “never” without the count; “significant” without the test; a check on stale evidenceeach question settledWatch
software@2specified → implemented (a diff by hash) → verified by the instrument on that head → claimed → reviewed “it passes” without an instrument run, or on a superseded head; the diff's author as its reviewereach requirement's claim rests on a passing run on the current headWatch
trading@2asked → thesised → preregistered → backtested out of sample, after costs → claimed → risk-reviewed → positioned → monitored a backtest without its costs; “edge” without both, or without the configurations tried; a position without size, stop and review date; a live orderquestions settled; a position taken or declinedWatch
knowledge@2asked → sourced (the passage, retrieved, its kind) → claimed → checked a claim with no source; a source without its passageeach claim cites a source and is checkedWatch
optimization@2posed (the instance by hash) → modelled → configured → solved → verified → claimed → checked an objective without feasibility; “optimal” without a bound, or on a changed instancea feasible, bounded incumbent, verified on the current instanceWatch
For the people who deploy agents

Wire it in where your agents already run.

Agents, over MCP

Your agent gets the record's tools, and the method as an Agent Skill.

claude mcp add hypgraph -- hypgraph --db study.hypgraph mcp
hypgraph skill --install

Python

Roles as policy: reviewers, the instrument, reserved authors.

from hypgraph import Graph, Policy
g = Graph("study.hypgraph", policy=Policy(reviewers={"critic"}))

The UI and the JSON API

Read-only by default; follows a running swarm live.

hypgraph serve --db study.hypgraph

Gate CI on the write-up

Lints a report against the record; exits non-zero on errors.

hypgraph check summary.md

Hand over a verifiable bundle

Anyone can check it, in any language or in the browser.

hypgraph export --telemetry -o study.bundle.json
hypgraph verify study.bundle.json

Run a swarm on it

HypSwarm schedules agents from the record's own work board.

pip install --pre hypswarm
This page has a record

We hold this page to the rules it describes.

The figures above are claims in a HypGraph record built with the page. The build's instrument measures them, a reviewer re-measures each another way, and the page's text is checked against the record with hypgraph check, so a figure the record doesn't hold doesn't reach the page. Open it in the app above with This page's record, or download the bundle and verify it yourself.

Trust

What the record shows, and what it doesn't claim.

✓ It shows

  • that no event was changed after it was written: each write is hashed into a chain, and anyone can re-check it;
  • which numbers in a claim are bound to which result, and which run produced it;
  • who checked what, against which version, and whether that version is still current;
  • what falls if a premise is withdrawn.

— It doesn't claim

  • that a claim is true. It checks what was written against what was recorded;
  • to make a model reason better. It keeps a model's overclaims out of the record;
  • anything about telemetry carried in a bundle: that sits outside the hash chain;
  • to check events a scoped bundle redacts. Verification says when a bundle is scoped.

It runs where you run it: a local file, no account, and no network calls of its own. Releases are published to PyPI from GitHub Actions by trusted publishing.