Niam's AI usage and training

Date range

Daily tokens by model

Token mix

Always shows all four kinds, whatever the cache switch says.

Model share

Estimated cost at API prices

All time, all tools; the range and model filters do not apply, the provider filter does. Pay-as-you-go list prices, so on a subscription plan this is a value, not a bill. Models without a known price show no cost and are left out of the totals.

Skills I've built

reports

Turns research or analysis into a polished, self-contained HTML report.

admin-analytics

Adds first-party, cookieless analytics to every page of a site and builds a private admin dashboard themed to the project.

referral-links

Generates a UTM referral-link suite for a project and keeps a registry so every new project cross-promotes the others.

Custom Claude Code skills I wrote and use daily. All of them are in the niams-ai-skills repo.

Skills and tools I use

Ponytail

Lazy-senior-dev mode: the smallest change that fully solves the task.

Graft

A prebuilt graph of the repo so code is found by exact file and line, not by grepping.

Impeccable

Design skills for building and polishing frontend interfaces.

brag

Turns a project website into a short, shareable launch video.

Hook-injected tools (Ponytail, Graft, Impeccable, Model router)

Fires: times the tool's hook added text to a session. Injected: estimated tokens of that text (characters / 4), paid again on every turn it stays in context. Saved: Graft's own estimate against reading whole files, from the tokens-saved line in its tool results. Its baseline is reading every covered file whole, so a graft grep over a few hundred files reports hundreds of thousands: treat it as an upper bound, not a measured saving. The model router is a hook that sends each prompt to the cheapest model that can handle it (Haiku, Sonnet or Opus). Ponytail and Impeccable have no honest savings baseline, so only their cost and activity are shown.

Local models (Qwen, Laya)

Models that run on this computer, so they are not in the totals, charts or cost above and the filters do not apply. Time is wall-clock time per request. Qwen runs in Ollama, which does not record tokens, so its token cells are blank. Laya tokens and time come from the Laya Trading Bot's usage ledger; a day's calls that skipped the ledger show as "untracked".

New to AI? What a token is and why it matters

A token is a small piece of text
An AI model does not read letters or whole words. It reads tokens: short chunks of text, usually a word or part of a word. In English, one token is about 4 characters, so 1,000 tokens is roughly 750 words (about a page and a half). A short word like "cat" is one token; a long word like "unbelievable" may be three.
Input tokens: what you send
Everything the model is given to read: your message, the earlier conversation, instructions, and any files it looks at. Models have no memory between requests, so the whole conversation is sent again every time.
Output tokens: what it writes
The model's reply, including the code it writes and, for some models, its "thinking" before it answers. Output is the slow, expensive part, so it usually costs several times more per token than input.
Cache: why the numbers get so big
An AI coding tool works in many steps for one request, and each step re-sends the whole conversation. To save work, the provider keeps a copy of text it has already seen. Saving that copy is a cache write; reusing it is a cache read, which costs about a tenth of normal input. That is why a day of work can add up to hundreds of millions of tokens, most of them cache reads.
How tokens become cost
Providers charge a price per million tokens, with one price each for input, cached input and output. Cost = tokens used x price. The cost table on this page applies public pay-as-you-go prices. If you pay a flat monthly plan instead, it shows what the same usage would have cost, not what you were billed.
Context window
The most text a model can hold in mind at once, also counted in tokens. A 1M-token window holds roughly 750,000 words. When a long conversation fills it, the tool shrinks or summarises the older parts.
Provider and model
The provider here is the tool you used (Claude Code, Codex, Copilot, Freebuff, Mistral or OpenCode). Each tool can run several models, such as Claude Opus or GPT-6, and each model has its own prices. Use the Provider and Model filters above to compare them.

Methodology

Where the numbers come from
Claude Code, Codex, GitHub Copilot (VS Code), Mistral Vibe, OpenCode and Freebuff each save their chats on this computer. claude.ai chats and Cowork sessions come from your account data export (messages, sessions and hours only: the export has no token counts, so they add no tokens or cost). A nightly job reads them, stores one frozen file per finished day, and writes the CSV files this page embeds. Nothing is sent anywhere.
Call
One request Claude Code makes to a model. A single reply that uses tools makes several calls. A tool call (skill or MCP) is counted separately from model calls.
Tokens
Input is new text sent to the model, output is what it wrote, cache write is context saved for reuse, cache read is saved context served again. Total adds the four. Each reply is counted once even though transcripts save it in several pieces.
Why cache reads are hidden by default
The whole conversation is re-read from cache on every call, so cache reads are usually over 90% of all tokens and say little about how much you did. The switch adds them back.
Why these tokens differ from Claude's own stats page
Claude's page counts differently (for example it can count a reply once per saved piece) and covers all your devices and apps. This page covers only the transcripts on this computer and counts a reply once, so the two will not match.
Messages, sessions
Messages are your prompts plus model replies. Sessions are chats active that day; a chat that runs past midnight counts on each day, so session totals add per day. Peak hour is the local hour with the most prompts and replies. These are not split by model, so the model filter does not change them.
Active days, tokens per active day
An active day is a day with any recorded activity (with a model chosen: any call by that model). Tokens per active day divides the shown token total by it, so the partial current day lowers it slightly.
What the transcripts cannot see
Usage on other devices, Claude cloud and web sessions (claude.ai, Claude Code on the web), which are not stored on this computer, requests that failed before saving, background requests made by mods (they never reach a transcript), your plan limits, and the contents of tool inputs and results (never read). Subagent work is included and marked as subagent scope in the models CSV.
Partial days
Today is still in progress, so it is included but marked partial until the nightly job freezes it. The oldest days may also be partial: Claude Code deletes old transcripts, so a day archived late can miss earlier activity.
Colors
Each model keeps the same color everywhere. Past thirteen models, the rest are grouped as Other in the daily chart.