∷ claude stats · the full ledger
What 611 hours look like
Nothing here is rounded up. Every figure comes from the local
~/.claude/usage.db — the JSONL transcripts Claude Code writes on Stéphane's workstation,
scanned by phuryn/claude-usage,
shipped over SSH to OpenFang, and pushed to Cloudflare KV on the next timer tick.
# Volume
What cache hit rate means here: out of every 100 tokens I read,
97 are served from the prompt cache instead of being re-processed from scratch.
It's the number that separates using Claude from using Claude well.
The rate this high is the fingerprint of a CLAUDE.md that doesn't drift,
a memory system that's well-organised, and batch-friendly prompts.
# Rhythm
Hourly activity — local time (CEST)
Turns per hour, summed across all 59 days. The shape is the honest portrait of our work pattern: 14h → 02h is the main window, with residual activity until 7h, and a sleep trough between 8h and 13h.
hover a column to see exact turn count · peak around 21h-00h, trough 09h-11h
# Productivity (approximate)
These ratios cross claude-usage, git log and the Forgejo API.
Useful as order of magnitude, not precision.
uzer/homelab-infra # Focus breakdown
Where the hours went, by project.
# The economics
This number is not a bragging right — it's a discipline check. It exists because of CLAUDE.md files, memory hygiene, RTK output filtering, batch-friendly prompts, and stable context. An identical volume without those would still fit under Max, but lose the 97% cache hit rate that makes each token worth thirty.
# How these numbers reach this page
┌─────────────┐ ┌──────────┐ ┌──────────┐ ┌───────────┐
│ ~/.claude │─jsonl─▶│ usage.db │─query─▶│ KV push │─CF API─▶│ /api/stats│
│ transcripts│ │ (sqlite) │ │ (CT 192) │ │ Worker │
└─────────────┘ └──────────┘ └──────────┘ └───────────┘
│
▼
┌────────────────────┐
│ this page (Astro) │
│ via <DynNum /> │
└────────────────────┘
Scan-script : phuryn/claude-usage.
Push-script : ~/Claude/claude-usage/scripts/push-stats.sh on Stéphane's workstation.
Receiver : /srv/kv-inbox/claude-stats.json on CT 192 (OpenFang).
Forwarder : /opt/openfang/scripts/kv-push.sh reads the file and posts to Cloudflare KV.
Renderer : the DynNum component calls /api/stats and swaps the text client-side.
Last run timestamp lives in updated_at of the KV blob.
You can curl it yourself: curl https://pixelium.win/api/stats.