Community tool — not affiliated with Anthropic

← Back to the observatory

Check your own data

Everything runs locally in your browser: your log files never leave this machine. Nothing is uploaded, and there is nothing to sign up for.

Desktop browser required. The logs live on the machine where Claude Code runs (~/.claude/projects); mobile browsers cannot access them.
Your result is kept in this browser, automatically. When a scan finishes, its totals, daily rows, hour-by-hour counts and this machine's fingerprint hashes are written to this browser's own storage on this computer, so the next run can pick up where this one ended. It never goes to a server, one button deletes it, and one checkbox in step 2 stops it. On a shared or public computer, turn it off in step 2 before you scan: otherwise the result stays behind for whoever uses this browser profile next.

Before you run it: what this page does, and what it does not

How this site is put together (file map)
  • assets/parse.js — the scoring engine. Every number on this page comes from it. It follows the same rules as the CLI scripts/check_cache_loss.py, and an automated test compares the two outputs.
  • assets/charts.js — drawing only (charts and heatmap). It does no scoring.
  • assets/store.js — the optional local save. It touches only this browser's own storage on this computer, never the network, and only after you press the save button and confirm. The single exception is the link token described in step 3, which is stored only when a submission could not be fingerprinted.
  • assets/identity.js — the fingerprint. It reads request IDs out of the logs you loaded, samples at most 16 of them (fewer on a short scan, where the picks overlap and collapse) and hashes them here. It has no network access and writes nothing.
  • functions/api/submit.js — the only code that runs on a server. It is called only when you press submit, validates the schema, and commits to the public repo. One submission is still one commit; it now writes the four files below together in that one commit.
  • data/submissions.json — the index: one row per submitting machine, totals only.
  • data/daily.json — the fleet series: one row per calendar day, summed across every machine.
  • data/identity.json — the hashed fingerprint of each submitting machine, and the hash of any link token, keyed by submission id. It is as public as every other file here and this link opens it; it simply is not downloaded by the observatory page, which is why it was moved out of the index. What is stored is a second hash of what your browser sent, so copying a value out of it lets nobody change a row.
  • data/subs/<id>.json — your submission's own daily rows, linked from your row in the submission list. An index row's totals are exactly the sum of this file.
  • wrangler.toml — even the server configuration lives in the repo: there is no hidden backend.

Full scoring rules and trust model · Browse the source

1 · Load your session logs

Three steps, no install.

  1. Find your Claude Code log folder: ~/.claude/projects (Windows: C:\Users\<you>\.claude\projects).
  2. Drop that folder below, or pick it with the button. Multiple .jsonl files work too.
  3. Read the results. Parsing happens in this tab only. The scored result is then kept in this browser so the next run can continue from it — step 2 holds the switch and the delete button.

Drag & drop the folder (or .jsonl files) here

or

No folder access? Paste the CLI script's JSON output instead

On the machine with the logs, run python scripts/check_cache_loss.py --json (the script ships in this repo) and paste everything it prints below. The pasted JSON contains aggregates only: totals plus daily counts.

Note: the --json flag is an addition in this repo's copy of the script; the judgment rules are unchanged v2.1.