Claude Code Stats.
Token-Statistik aus JSONL.
Ein Python-Skript liest die lokalen Session-Logs von Claude Code und baut daraus ein interaktives HTML-Dashboard: was die Nutzung als API-Abrechnung gekostet hätte, wohin die Tokens fließen, wie eine Session wirklich ablief. Alles lokal, ohne externe Dependencies.


Jede Session hinterlässt ein Log, das niemand liest
Claude Code legt jede Session als JSONL-Datei unter ~/.claude/ ab: jede Nachricht, jeder Tool-Aufruf, jeder Token. Die Daten sind vollständig, aber roh. Was eine Arbeitswoche wirklich verbraucht hat, steht dort nur implizit.
Wer im Abo arbeitet, zahlt einen festen Preis und sieht nie, was dieselbe Nutzung über die API gekostet hätte. Ob sich Pro oder Max rechnet, bleibt Bauchgefühl.
Dazu kommt: Claude Code räumt alte Session-Transkripte standardmäßig nach 30 Tagen weg. Wer seine Historie auswerten will, muss sie erst vor dem Verfallsdatum retten.
Ein Skript, ein Dashboard
Claude Code Stats ist ein einzelnes Python-Skript ohne externe Dependencies. Es liest die JSONL-Logs, rechnet die Statistiken und schreibt ein einziges, in sich geschlossenes HTML-Dashboard. Kein Server, kein Konto, keine Cloud: Die Auswertung bleibt auf dem Rechner, auf dem sie entstand.
Installation
Kein Paketmanager, kein Build-Schritt. Python 3.8+ genügt, das Skript nutzt nur die Standardbibliothek.
git clone https://github.com/AeternaLabsHQ/claude-code-stats.git
cd claude-code-stats
cp config.example.json config.json
python3 extract_stats.py
Das Ergebnis ist eine einzelne HTML-Datei (public/index.html), die sich direkt im Browser öffnet, plus die Rohdaten als JSON.
Die Historie retten
Claude Code löscht Session-Transkripte standardmäßig nach 30 Tagen. Wer länger zurückschauen will, hebt die Frist in der settings.json von Claude Code an:
{ "cleanupPeriodDays": 99999 }
Ohne diese Einstellung schrumpft das Dashboard-Fenster stillschweigend auf die letzten 30 Tage.
Privatsphäre
Das Dashboard zeigt, was in den Logs steht, und da steht viel: Code, Pfade, Projektnamen, Memories. Deshalb bleibt es eine lokale Datei und gehört nicht auf einen öffentlichen Server. Für Screenshots gibt es einen eingebauten Anonymisierungs-Modus (F2), und wer seine Projekt-Memories aus der Auswertung heraushalten will, startet mit --no-memories.
Status
v0.8.1 ist die aktuelle Version. Die oben angezeigte Versionsnummer wird beim Build live aus den GitHub-Releases geholt.
Kosten-Analyse
Was die Nutzung als reine API-Abrechnung gekostet hätte, aufgeschlüsselt nach Modell und Tag, und wie viel das Abo dadurch spart.
Session-Flow
Eine Canvas-Animation replayed jede Session als Graph: User, Claude, Tools, Sub-Agenten, Nachricht für Nachricht.
Aktivität & Fehler
Heatmaps nach Stunde und Wochentag, Tool-Nutzung, Fehlerraten, Git-Aktivität. Alles aus denselben Logs.
Wie es entstand
Das Tool begann mit einer einfachen Neugier: Was steckt eigentlich in dem .claude-Verzeichnis, das Claude Code lokal anlegt? Aus der ersten Auswertung wurde ein Dashboard, aus dem Dashboard ein offenes Projekt.
Die Weiterentwicklung kam aus der Community: Die Session-Flow-Visualisierung geht auf einen Reddit-Post zurück, der zeigte, wie schön man Claude Code beim Denken zusehen kann. Und fehlende Modellpreise kamen per Pull Request aus der Community ins Tool.
Selbst nutzen?
Repository klonen und ein Python-Skript ausführen, mehr braucht es nicht. Quellcode und Doku auf GitHub.
Auf GitHub ansehen ↗