Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

TallyLock

Lock the plan. Tally every run. See the real score.

When someone shares an AI evaluation result, readers ask three things. How many tries did it take? Is the difference just noise? Is it comparable to the other numbers? TallyLock records every attempt, including failures, and answers all three in one claim line that anyone can recheck:

0.742 best of 14 runs; adjusted 0.712 ± 0.011 (95% CI, 12 completed, 2 failed); plan 3f2a9c1d (1 of 3 in repo); ledger 9b1e04aa; tallylock check

Free and open source (Apache-2.0). Built by TriplePass Labs. Created and maintained by Christopher Ayers.

Product page · PyPI · Releases · GitHub organization

Install

pipx install tallylock        # or: uv tool install tallylock
tallylock --version

Version 0.1.0a4 is an alpha for Linux with Python 3.11 through 3.14, published with trusted publishing and signed provenance. On Windows, use WSL or a Linux container: commands that write files need Linux, and tallylock doctor says so. For offline installs from a reviewed wheel or source checkout, see the quickstart. On Ubuntu or Debian, a plain venv needs the matching venv package, for example python3.12-venv.

Record every run

Run it inside a git repository. Your eval prints a line such as tallylock: score=0.74 so TallyLock can read the score.

tallylock run --repeat 5 -- python eval.py --seed {seed}   # records every attempt, failures included
tallylock score                                            # best score, real score with its 95% interval, claim line
tallylock check "<claim line>"                             # anyone recomputes it from the ledger

The first run locks the plan: the commit, the command and the config files. Changing any of them starts a new plan, and the old one stays visible. The ledger lives in .tallylock/. Commit it when you want others to check your claim. run exits with your command's own exit code, so a failing eval still fails your CI.

Each ledger update gets an instant RFC 3161 timestamp from two public services and a Bitcoin timestamp through OpenTimestamps a few hours later. tallylock refresh finishes pending proofs. See the quickstart and the method.

More commands

  • tallylock compare A B says whether two results used the same dataset, harness, prompt and decoding settings, and whether the gap is just noise. It never ranks across a mismatch.
  • tallylock verify RECEIPT --online and tallylock check --online check Bitcoin timestamps without running a node. The block and the blocks after it are checked against Bitcoin's real difficulty, and two public services must agree.
  • tallylock export, registry and board publish a static Receipts Board where every entry is rechecked.
  • tallylock adapters import reads Inspect AI logs and proofbundle files. tallylock export --format intoto writes statements cosign can sign.
  • tallylock capabilities --json and tallylock agent-guide let AI assistants drive the CLI safely.

Output is plain language on a terminal and one JSON object per line when piped. Force either with --human or --json. Exit codes: 0 success, 2 invalid input, 3 insufficient evidence, 4 unsupported evidence, 5 operational failure, 130 interrupted. See how it compares to other tools and the receipt request paragraph for reviewers.

Receipts for any output files

TallyLock can also freeze a plan and ordinary output files into a standalone receipt that verifies offline:

tallylock init --out manifest.json --name "My evaluation"
tallylock pre-register manifest.json --receipt receipt
mkdir outputs
printf 'ordinary external output\n' > outputs/result.txt
tallylock seal receipt --artifacts outputs
tallylock verify receipt

Run your evaluation yourself and pass its output directory to seal. TallyLock never launches a model or runs a scorer named in a receipt. Anchoring is explicit: tallylock anchor receipt, then tallylock upgrade receipt as calendars confirm. Plain verify checks integrity offline and reports the timestamp as not checked. Add --online to check it against public block headers, or --policy anchored --chain-cache FILE to check against your own node's data. See generic integration for score and trace options, reports and recovery.

What a result proves

It proves that the plan, the attempts and their outputs existed by a stated time and were not changed later, and that the score counts every recorded attempt. It does not prove that the evaluation ran honestly, which model was used, or that no attempts happened outside the tool. TallyLock records evidence. It does not certify results.

Documentation

Name and license

TallyLock was named Prove until 2026-11-07. Protocol v1 wire identifiers keep their original prove. prefix (for example prove.manifest.v1), and receipts keep their .prove/ state directory, so existing receipt IDs and timestamps stay valid.

Licensed under Apache-2.0. Copyright 2026 Christopher Ayers.

Metadata

Release files for tallylock 0.1.0a4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for tallylock 0.1.0a4
File Size Uploaded Provenance Actions
tallylock-0.1.0a4.tar.gz 489.9 kB With provenance Details for tallylock-0.1.0a4.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for tallylock 0.1.0a4
File Interpreter ABI Platform Actions
tallylock-0.1.0a4-py3-none-any.whl Python 3 none any Details for tallylock-0.1.0a4-py3-none-any.whl

Total release size: 836.2 kB

Release files / tallylock-0.1.0a4.tar.gz

Download URL tallylock-0.1.0a4.tar.gz
Size 489.9 kB
Tags Source
SHA-256 checksum
How to use checksums
9279c21505863c12699a29333dbbb7dadb106ad5331ae40ad3e1afd1bee23b73
BLAKE2b-256 checksum
How to use checksums
1618c078c28e8dbbb73624db758c9ef6ae6e5c3363d3e6271e6e5be30bd1900a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 8, 2026.

Transparency log

Release files / tallylock-0.1.0a4-py3-none-any.whl

Download URL tallylock-0.1.0a4-py3-none-any.whl
Size 346.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
260a647590fd385cf072e60b9c6cb6b4a186815532fbd032cb01dc2cc8e5be54
BLAKE2b-256 checksum
How to use checksums
606e0bfa682d05e0a6cf7d96ac105c651519e6b3cdf7c4962477e858b8feaca8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 8, 2026.

Transparency log

Security for tallylock 0.1.0a4

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

Both files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for tallylock-0.1.0a4.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 8, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page