Earlyman never stores or sends
your prompts.
It keeps an eye on how you use Claude Code: how many tokens, which tools, what failed. Here is what that means for you, in plain words. Every line is checked against the code.
Runs on your computer
Earlyman is a program on your own computer. There is no Earlyman account and no Earlyman server.
Sees counts, not conversations
It reads numbers like tokens, times and which tools ran. It never stores or sends your prompts or Claude's replies. Optional local content mode, off by default, reads text only on your Mac and never sends it.
Nothing goes to us
Earlyman's makers receive nothing from you: no usage data, no crash reports. There is no code that could send it.
You choose what connects
Billing checks, alerts and the AI analyst only run once you set them up, or when you press a button.
Turn anything off
Every connection has its own off switch. They are all listed below.
What leaves your computer, and when
Only these. Each one starts because you set it up or asked for it.
Billing checks you set up
If you keep a key for RunPod, OpenAI, Anthropic, OpenRouter, Firecrawl or another usage service on this computer, or add a usage address of your own, Earlyman uses it to ask that service for your usage and spend. Only the key and the question are sent.
To stopRemove the key, or delete that billing check.
AI analyst, only if you turn it on
It is off until you turn it on. Then, about once an hour, it sends counts and labels to Claude through your own Claude Code login, never your conversations. Pressing Explain on a failed step sends what kind of failure it was and how often, never the error text.
To stopLeave it off, or turn it back off. Don't press Explain.
Alerts you configure
If you connect Slack, a webhook or your own script, each new alert and the daily summary go there: what kind of alert it is, the numbers and a suggested fix. Never your conversations.
To stopRemove the channel, or switch alerts off.
Things you start yourself
Pushing a change you approved to your own git repository, checking a hand-off with another AI tool, sending daily totals to your own monitoring system, or the optional relay that passes Claude Code's own traffic through unchanged.
To stopDon't start them. Each one stops when you stop it.
Earlyman's makers
Never. There is no Earlyman server to send anything to.
To stopNothing to turn off.
Last reviewed 2026-10-20 against the code · Free, Apache-2.0, no meter
Technical detailsWhat it reads, what can leave, how long it keeps things, and the leak test
- Put a fake secret in a Claude Code session log.
- Render every page and every answer Earlyman gives.
- Fail if the secret shows up anywhere. PASS
What Earlyman reads
| Source | Uses | Never |
|---|---|---|
| Claude Code's session logs on this Mac | Token counts, model, timestamps, session and agent ids, tool, skill and agent-type names, byte lengths, a session name you set; for a failed tool call, its error class and exit code | Your prompts, Claude's replies, Agent descriptions, tool input and output, file contents |
| Local content mode off by default | Only once you turn it on: prompt and reply text, Agent descriptions and the first error line of a failed step, read on this Mac for Playbooks hints, task summaries, error lines on Traces and hand-off notes. Turning it off archives what it kept, on your Mac, and clears it | Sent anywhere, in either mode: every outbound payload below carries classes, codes, counts, sizes and names only |
| Claude Code's settings file | Hook, status-line, plugin and model entries | Changed without a preview and your approval; setup keeps a byte-for-byte copy |
| Claude Code's list of MCP servers | MCP server names and the address each one points to | Their settings, headers or arguments, where tokens live |
| Billing keys, only in the folder you choose | File names; a key's value only to call the vendor it belongs to | Printed, logged or stored anywhere else |
| Model servers running on this Mac | Their health, model list and metric names (Ollama, llama.cpp, LM Studio, vLLM) | The requests you send them |
| Model folders you name | Names, sizes, file headers, eval score files | Weights past the header; nothing is moved or written there |
| Reliability and change events | The same session fields as Traces, plus a fingerprint of your Claude Code settings, project instructions and rules, the plugin and MCP server name lists and the Claude Code version, each time they change | The content of those files, settings values, or MCP server settings |
What can leave this machine
| Call | When | What is sent | Turn it off |
|---|---|---|---|
| AI analyst (Claude Haiku), to Anthropic through your own Claude Code login | off by default About once an hour, only after you turn it on (a setting that is off by default); the Run now and Explain buttons when you click them | Usage counts, tool and agent-type names. Explain adds the failing steps' error classes, exit codes and counts; never error text, Agent descriptions, prompts or replies | Leave it off, or turn it back off. A start-up switch keeps it off whatever the setting says |
| RunPod billing check | if a key is found Every minute | Your key and a question about your pods and spend | Remove the key, or start Earlyman with billing checks off |
| Billing checks you add: OpenAI costs, Anthropic cost report, Firecrawl credits, an event-count service, or a usage address of your own | only if you add one On that check's schedule | That vendor's key and a date-range question | Delete the check in Spend, or start Earlyman with billing checks off |
| Provider usage reports: OpenAI, Anthropic, OpenRouter | only with an admin key file Hourly | The key and a usage question | Remove the key file |
| OTel export to your own monitoring system | on request Only when you run the export and give it an address | Daily token totals per model | Run the export without an address; it then writes a file only |
| Request proxy | opt-in Only while you run it and point Claude Code at it | Claude Code's own API traffic, forwarded byte for byte to its usual destination; Earlyman logs sizes only | Stop the proxy |
| Changes: Apply | on approval After you approve a change | A git branch pushed to your repo's own remote, never main | Do not approve |
| Hand-off verify | on request When you run it | The hand-off file you wrote, to the AI tool you pick; any quoted prompts (local content mode only) are cut first | Do not run it |
| Alerts to your webhook, Slack or a command you name | only if you add one When a new alert opens, at most once per cooldown (6 h default) per alert | The alert's kind, severity, a templated title, counts, the fix line, a dashboard link and the paste block. Never prompt or reply text, tool output, file contents or project names. Webhooks are signed with a secret you choose; addresses stay in a private file on your Mac and are never printed | Switch alerts off, remove the channel, or start Earlyman with alerts off |
| GitHub sign-in, on a shared Earlyman server | only with sign-in on When someone signs in with GitHub, and only if the server's owner has turned on accounts | A one-time sign-in code to GitHub, which returns that person's verified email and user name | Leave accounts off (the default); a single-user Earlyman on your Mac never calls GitHub |
| Earlyman's makers | Never | Nothing. There is no Earlyman server and no code path to one, so there is no toggle to find | Nothing to turn off |
Everything Earlyman keeps stays on this machine for as long as your disk keeps it. It keeps per-request counts after Claude Code's 30-day log cleanup; you can set it to keep fewer days.
The leak test ships with the source, so anyone can run it. The exact switches and settings for every row are in the docs.
Last reviewed 2026-10-20 against the code