Chain
Each line is hashed to the previous line. Change any payload and verity verify fails.
Append-only evidence ledger
Verity hashes every line of an agent run. A claim is accepted only when the recorded result supports it. Edit a line later and the chain fails.
$ verity log --run verity.jsonl --kind tool_result --data '{"text":"9 passed, 0 failed"}' index=3 hash=1ac27e468272 $ verity claim --run verity.jsonl --statement "the bot tests passed" --evidence 3 index=4 hash=4dcd22ea8e29 $ verity verify --run verity.jsonl OK entries=5
Three rules. No model call in the core.
Each line is hashed to the previous line. Change any payload and verity verify fails.
A claim must cite an observation or a tool result already in the ledger. A goal is not evidence.
9 passed, 0 failed supports a pass claim. binary found does not.
Verity does not run your tests. You or an agent run them. Verity records the result.
Clone the repo and install the CLI. Python 3.10 or newer.
git clone https://github.com/jdkabattles/verity.git cd verity pip install -e .
One file per run. The goal is a statement, not a result.
cd your-project
verity init --run verity.jsonl
verity log --run verity.jsonl --kind goal \
--data '{"text":"run the tests and report the real result"}'
Run the suite yourself, or have Hermes run it. Log what the tool printed.
verity log --run verity.jsonl --kind tool_result \
--data '{"text":"9 passed, 0 failed"}'
Cite the tool_result index. An unrelated observation is refused.
verity claim --run verity.jsonl \ --statement "the bot tests passed" --evidence 1 verity verify --run verity.jsonl
A passing check means this run is intact and the required claim is supported. It does not mean the next run will pass.
printf '%s\n' '{"must_claim":["the bot tests passed"]}' > spec.json
verity check --run verity.jsonl --spec spec.json
Apache-2.0. Local. No account.
pip install "git+https://github.com/jdkabattles/verity.git"
Not built. The free core is the product until a hosted ledger has users.