This release is a pre-release and may not be stable for production use.
TallyLock
TallyLock was named Prove until 2026-11-07. The command is tallylock and the package is tallylock. 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 anchored timestamps stay valid.
TallyLock freezes evaluation plans and ordinary output files into standalone receipts. Its Python CLI verifies byte integrity offline and separates that evidence from reported scores, model identity and execution claims. Developed by TriplePass Labs. Created and maintained by Christopher Ayers.
Lab website · GitHub organization · Founder profile
It binds an evaluation plan, recorded artifacts and reported results to commitments with optional OpenTimestamps evidence. Verification distinguishes artifact integrity from claims about execution, model identity, timing and scientific validity.
Version 0.1.0a3 is an alpha release for Linux with Python 3.11 through 3.14. Use a supported interpreter and install it in its own environment. The example below selects Python 3.12; substitute your supported interpreter when needed.
On Ubuntu or Debian, that interpreter needs its matching venv package before environment creation. Ubuntu 24.04 users selecting Python 3.12 need python3.12-venv. The offline quickstart gives the prerequisite and an optional fallback when uv is already installed. See the Ubuntu Python setup guide and package record.
python3.12 -m venv .venv-tallylock
. .venv-tallylock/bin/activate
python -m pip install /absolute/path/to/tallylock-0.1.0a3-py3-none-any.whl
tallylock --version
From a reviewed source checkout, python -m pip install . works in the same environment. Installation may fetch dependencies.
Install from PyPI: pipx install tallylock or uv tool install tallylock. Version 0.1.0a3 is published with trusted publishing and signed provenance. The wheel and source steps above still work for offline or reviewed installs. Distribution acceptance and release status are recorded in the readiness audit.
The offline quickstart uses only the installed CLI, a fresh manifest and an ordinary output directory. It needs no model, provider account, research checkout or hosted service. python -m tallylock can replace tallylock in every command.
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
Edit the manifest before preregistration. Run your external evaluation program yourself and pass its output directory to seal. TallyLock never launches a model or executes a scorer named in metadata. See generic integration for explicit score/trace options, bounded reports and recovery.
Anchoring is explicit: tallylock anchor receipt, then tallylock upgrade receipt as calendars gain attestations. Submission and pending proofs are not completed anchoring. Plain tallylock verify receipt checks integrity and reports the timestamp as not checked, exiting 0 when integrity passes. With --chain-cache FILE it also runs the anchored check. --policy anchored is the strict form: it requires qualifying Bitcoin attestations and an explicitly selected local chain cache, and exits 3 without them. Verification never contacts a node or calendar. Independently assess the cache's provenance and freshness.
Output is one JSON object per stdout line when piped and a short plain-language summary on a terminal. Force either with --json or --human (not both). tallylock doctor [RECEIPT] checks the installation and a receipt's timestamp state without writing or using the network. Statuses are 0 for the requested action/check, 2 invalid input, 3 insufficient evidence, 4 unsupported evidence, 5 operational failure and 130 interruption. A returned timestamp action can still be pending or retry-wait. After optional anchoring fails, completed local state and IDs remain in the report. Resume with anchor/upgrade without the original outputs.
Static examples and canonical conformance assets ship under tallylock/data/examples/basic and tallylock/data/conformance, accessible through importlib.resources. Basic use requires no optional harness importer.
- Project plan: scope, protocol decisions, milestones and release gates.
- Threat model: attacks, defenses and remaining trust.
- Acceptance tests: tests required before implementation claims.
- Sources and alternatives: primary references and reuse decisions.
- Review log: critiques and their disposition.
- Flagship roadmap: setup choices, AI instructions and twenty staged features. Phase 1 is built (see the Phase 1 plan). Later phases are proposals and are not implemented.
License
Licensed under Apache-2.0. Copyright 2026 Christopher Ayers.
Record every run
tallylock run --repeat 5 -- python eval.py --seed {seed}
tallylock score
Every attempt is recorded, including failures. score reports the best result, the real score with its range, and a claim line others can check with tallylock check. See the quickstart and the method.
More: check timestamps without running a node (verify --online), compare two results for setup and noise (compare), and publish a static Receipts Board from a registry of plans (registry, board). TallyLock also reads Inspect AI logs and proofbundle files, and exports in-toto statements. See the quickstart and how it compares.
What a receipt means
A valid completed timestamp establishes that a commitment existed by a Bitcoin block. Artifact hashes reveal changes to committed bytes. Neither establishes that an evaluator ran honestly, used the claimed model, disclosed all attempts, or produced a scientifically sound result.
TallyLock works alongside evaluation harnesses. A preregistration ID alone establishes no independently witnessed chronology. External research experiments remain separate from the protocol's cryptographic checks.
Metadata
Release files for tallylock 0.1.0a3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| tallylock-0.1.0a3.tar.gz | 481.1 kB | With provenance | Details for tallylock-0.1.0a3.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| tallylock-0.1.0a3-py3-none-any.whl | Python 3 | none | any | Details for tallylock-0.1.0a3-py3-none-any.whl |
Total release size: 820.2 kB
Release files / tallylock-0.1.0a3.tar.gz
| Download URL | tallylock-0.1.0a3.tar.gz |
|---|---|
| Size | 481.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7564cf360fd9d5bd5b0b3c70bdbe764953123b591e5ebb85801433652aae6465
|
|
BLAKE2b-256 checksum How to use checksums |
2aa2de383b15126bc0e40e6e3cdd453750826156bc0949f34ebe70593c731e4e
|
| 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 logRelease files / tallylock-0.1.0a3-py3-none-any.whl
| Download URL | tallylock-0.1.0a3-py3-none-any.whl |
|---|---|
| Size | 339.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
53377f3dd869cfc42a2f1ac4eec2a5f72f43b56ce8341c33f6b40b58d9c8e207
|
|
BLAKE2b-256 checksum How to use checksums |
b7b96520acffe0aabf0be2f242cbfe565457d8594f8bd0a82879de89cb687776
|
| 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 logSecurity for tallylock 0.1.0a3
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.
Attestation for tallylock-0.1.0a3.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 logA 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.