Tokenforest reads your Claude Code and Codex transcripts on your own machine and turns the tokens you use into a forest, in your terminal and on the web.
~ npx tokenforest forest
Tokenforest38 trees · 1.92B weighted · 6.84B tokens total
▰▰▰▰▰▰▰▰▰▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱ 30.0M to the next tree 18,402 responses · 412 sessions · 23 projects · 2026-09-01 → 2026-09-30 opus-5-5 ██████████████░░░░░░░░ 64% 1.23B sonnet-5-5 █████░░░░░░░░░░░░░░░░░ 23% 441.6M gpt-5-codex ███░░░░░░░░░░░░░░░░░░░ 13% 249.6M~
Every 50 million weighted tokens grows one tree. Your prompts, code and file paths never leave your machine.
A forest in your terminal
Run one command and Tokenforest scans the transcripts that Claude Code and Codex already keep on your machine, then draws what you have used as trees.
No account needed to see your forest
A breakdown by model and token type
Responses, sessions and projects counted locally
tokenforest forest
~ npx tokenforest forest
Tokenforest38 trees · 1.92B weighted · 6.84B tokens total
▰▰▰▰▰▰▰▰▰▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱ 30.0M to the next tree 18,402 responses · 412 sessions · 23 projects · 2026-09-01 → 2026-09-30 opus-5-5 ██████████████░░░░░░░░ 64% 1.23B sonnet-5-5 █████░░░░░░░░░░░░░░░░░ 23% 441.6M gpt-5-codex ███░░░░░░░░░░░░░░░░░░░ 13% 249.6M~
Counts, not content
When you connect a machine, Tokenforest sends token counts, model names and timestamps. Prompts, output, code, tool arguments, file paths and repository names stay where they are.
Sent when you sync
Token counts
Model names
Timestamps
Stays on your machine
Prompts and output
Code and tool arguments
File paths
Repository names
One forest across every machine
Log in once per machine and turn on automatic sync. The first sync brings in the last 30 days, then Tokenforest keeps your forest current every two hours.
LaunchAgent on macOS
A user-level systemd timer on Linux
Task Scheduler on Windows
tokenforest sync
~ tokenforest sync
Sending 1,204 Claude Code responses…
Sending 386 Codex responses…
1,590 new · 0 already known · 0 outside the window
112.6M weighted tokens · 2 trees in this batch~ tokenforest auto-sync status
Automatic sync is on · every 2 hours.
~
Seven commands
Everything the command line does, from the first look to automatic sync. Requires Node.js 22.17 or newer.
npx tokenforest
Show the command guide
tokenforest forest
Scan local Claude Code and Codex transcripts
tokenforest login
Connect this machine to your account
tokenforest sync
Upload local usage
tokenforest auto-sync on
Sync automatically every two hours
tokenforest status
Show what this machine is connected to
tokenforest logout
Remove this machine’s credential
The details
Weighted tokens
Input counts once, output and thinking three times, cache writes 1.25 times and cache reads 0.02 times, so a tree reflects real work.
Wildlife milestones
Butterflies arrive at 5 trees, a rabbit at 15, a fox at 35, a deer at 70 and an owl at 120.
Connectors
Claude Code, Codex, Gemini CLI, Cursor, the OpenAI and Anthropic APIs, and OpenTelemetry.
Teams
Roles, attribution by person and a CSV export of your team’s forest.
A public world forest
See every connected forest together at tokenforest.ai/world.
Open source CLI
The command line is released under the MIT License, with its source on GitHub.
After that, token counts, model names and timestamps
Never prompts, output, code, file paths or repository names
Its own privacy policy at tokenforest.ai
Questions
Does Tokenforest read my code?
It reads the usage records in your Claude Code and Codex transcripts on your machine. When it syncs, only token counts, model names and timestamps leave your computer.
Do I need an account?
No. tokenforest forest works entirely on your machine. An account is only needed to sync across machines and see your forest on the web.
Which AI tools does it support?
The command line reads Claude Code and Codex. The web app also has connectors for Gemini CLI, Cursor, the OpenAI and Anthropic APIs, and OpenTelemetry.
How is a tree counted?
One tree is 50 million weighted tokens. Output and thinking tokens weigh more than input, and cache reads weigh very little.