The census tools¶
In short. Six small command-line tools that run Record’s rules over every Claude Code log you keep, on your own machine. You sign the result as a report. Anyone can verify it offline. You can choose to record the report's fingerprint in a public log.
Not public
The tools are not a public repository. Write to hello@thecommons.ooo if you'd like to run them.
The tools¶
| tool | what it does | needs | what leaves your machine |
|---|---|---|---|
| census | reads every log by Repeat, Scope and Fingerprint (its report also still lists Boundary, a check withdrawn on 19 October 2026); splits your own sessions from the subagents they ran; counts by month; lists every write outside the folder given | Python 3 | nothing |
| sign report | turns the census into a report signed with your own key | Python 3.9+, cryptography |
nothing |
| verify report | checks a report's signature and digest, offline | Python 3.9+, cryptography |
nothing |
| anchor report | posts the report's fingerprint to Sigstore's Rekor (no report has been anchored so far); --dry-run posts nothing |
cryptography |
when anchoring: the report's digest, its period, your DID, a note, the signature and public key. Not the report, not the logs. |
| stream | reads a month of records in the order they arrived, against your own floor, with 100 random orders beside | numpy, and the floor module | nothing |
| tamper demo | copies a report, changes one count, verifies both: the original passes, the copy is refused | nothing |
A month, end to end¶
python3 -I census.py --logs ~/.claude/projects --out ./census
python3 sign_report.py --census ./census/census_session-logs.json --period 2026-10 --out report-2026-10.json
python3 verify_report.py report-2026-10.json --census ./census/census_session-logs.json
python3 anchor_report.py report-2026-10.json --key ~/.habitat-keys/report-ed25519.key --dry-run
Two more, when you want them:
python3 stream_logs.py --logs ~/.claude/projects --since 2026-10-01 --until 2026-11-01 --out ./stream --orders 100
python3 tamper_demo.py report-2026-10.json
sign_report.py also takes --key (where your key lives), --who and --note (written into the signed report).
To check an anchor later, with no key and no network:
The first time you sign, a key is made and kept at ~/.habitat-keys/report-ed25519.key, readable only by you. It is
never printed.
What to share, and what not to¶
- The signed report carries totals, counts by month, the rules as text, and the census file's name, size and fingerprint. It does not list paths.
- The census file itself lists the paths of your logs and of every write outside the folder. Keep it to yourself unless you mean to share those.
- A Rekor entry is public and permanent. Anchor only what you are happy to have on record.
What a signed report does not prove¶
That the census ran on all of your logs, or on the right ones. That the counts are true of anything but the files read. That the signer is a particular person.
Time¶
The census and signing take moments. The stream grows with the square of the number of records: about 16 seconds for 25,818 records on a laptop, and about 26 minutes for 100 random orders of that. Choose the window to fit.