Notices when you're cooked before you do.

Tempo is a load-aware companion for people who work long hours with Claude — chat, Cowork, Claude in Chrome, or Claude Code. It reads the shape of your session — never your words — and when the pattern says your nervous system has left the building, it offers exactly one thing: a 40-second reset, at a pause, never interrupting your work.

free while in beta macOS · Linux · WSL needs python 3 no account no network calls

the whole product, in one late night
claude — ~/projects/app
tempo ● steady 9:40 pm
●steady — nothing, ever ●elevated — glyph warms, still silent ●depleted — one line, at a seam, max 2/day
why it's different

On from minute one. Keeps receipts.

Tempo works immediately — hours actually spent in Claude, unbroken stretches, retry spirals and late-night urgency are visible with zero training. And in Claude Code it also keeps measuring in the background, so every day it runs, analyze.py shows a richer picture from your own logs: what actually happens to your prompts and error rates after hour three. If your data ever says it isn't helping, it will show you that too — and you delete one folder. In chat and Cowork, the same rules ride along as a skill Claude applies itself.

Never interrupts

Hooks always exit 0. No modals, no stolen turns. Interventions exist only in seams — after a turn completes, never mid-agent.

Volume counts, not just trouble

Two families of signal. Friction — retry spirals, error rates above your own normal, prompts collapsing to fragments — spikes and fades. Dose — hours actually in Claude today, minutes since a real break, how many codebases you are holding, days running without a lighter one — accumulates. A day can go badly without a single error in it.

Evidence, not vibes

Every offer cites the signal that earned it: "3 retries on the same test in 9 minutes." Max two a day. Declines silence it.

Resets that fit a terminal

20 nervous-system practices from The 40-Second Reset — breathwork, grounding, movement, fuel, reframes — rotated so it's never the same reset twice in a row. Compact card, breath-paced countdown, no streaks, no praise.

try it

Free beta. Two minutes. Every Claude surface.

Claude chat, Cowork & Chrome

The Tempo skill teaches Claude itself to notice load signals — retry loops, terse rapid-fire messages, late hours — and offer a reset at a pause. Works in any conversation, and because the Claude in Chrome side panel now runs as a Cowork session, a skill you save once shows up in the browser too.

↓ download tempo.skill

Then in Claude: open Settings → Capabilities/Skills and add the file — or just attach it in a chat and ask Claude to save it as a skill. From then on: type /tempo, or let it notice on its own — in chat, in Cowork, and in the Chrome side panel.

Claude Code (measured)

The full version, live from minute one: a statusline that warms as your session degrades, reset offers when the signals earn one, and silent local measurement that turns into your own data story over time.

Install is one line in Terminal:

curl -fsSL https://trytempo.net/install.sh | bash

Piping to bash deserves a look first — read the script (it backs up your Claude settings before touching them), or download the zip and install by hand.

Needs macOS, Linux, or Windows via WSL, plus Python 3.

  1. One line in Terminal — that's the whole install (it backs up your Claude settings first):
    curl -fsSL https://trytempo.net/install.sh | bash
  2. Open your next Claude Code session. Seeing the tempo ● glyph in the statusline means it's running — that glyph is the proof, always. Past an hour it also shows the running total for the day, so a calm dot is visibly a measured calm dot.
  3. Not sure it's working? python3 ~/.tempo/doctor.py checks every link in the chain — hooks, signals, scoring, offers — and, if Tempo is being quiet, tells you exactly why.
    python3 ~/.tempo/doctor.py
  4. Any time after: python3 ~/.tempo/week.py — your week in tempo: best hour, worst hour, and whether resets measurably helped, from your own logs. Pause everything with rm ~/.tempo/enabled.

Want a preview first? python3 tempo/demo.py plays the whole product in a sandbox on synthetic data, right now.

pricing — help us set it

Free today. Help us work out what comes next.

Nothing to pay, and there is no card field anywhere on this site. Tempo is free through the beta, and the core — statusline, load scoring, the resets, your local data story — stays free afterwards. What comes after that is genuinely undecided: both the price and what you would get for it. Click the price you would actually pay and tell us what it would need to include. That is the whole mechanism.

Free · forever

Tempo, complete

Everything in the demo above — the whole working product, on your machine.

  • Load-aware statusline and reset offers
  • 20 practices from The 40-Second Reset
  • Your weekly data story, from your own logs
  • Claude Code, Claude chat, Cowork, and Chrome
Pro · not built yet

For the people it happens to weekly

When the 1am retry spiral is a standing feature of the job, not a bad week.

  • Everything free, plus more — what exactly is the open question
  • The free product stays free and complete; this would only ever add
  • Whatever it becomes, it stays local: files on your machine, no licence server, no network call
Team · not built yet

For a whole engineering team

When the 2am pattern belongs to the team, not to one person.

  • Being scoped with the teams that want it — tell us what yours would need
  • One rule already fixed: anything team-shaped stays aggregate-only, opt in per person, never individual data
  • The same local-first commitments as everything else

Want a say in what it becomes — and to hear when it ships at that price?

no price picked yet — clicking one above fills this in

This section records which price you clicked, and which directory sent you if you arrived from one. No cookies, no pageview tracking, no IP, no third parties — just one local flag so the prices you see stay the same on every visit.

privacy

What it never stores

No prompt text. No file contents. No paths. No command strings. No tool outputs. Tempo logs derived shapes only — word counts, error flags, salted hashes — to a plain-text file you can read (~/.tempo/events.jsonl). There is no network call anywhere in the codebase, no account, no telemetry. rm -rf ~/.tempo is a complete erasure. Open the source — it's short on purpose: read the installer, or the whole bundle.

questions people actually ask

Before you run it

I use Claude all day and I haven't noticed Tempo doing anything. Is it broken?

Probably not, but there is now a command that tells you for certain: python3 ~/.tempo/doctor.py. It walks the whole chain — hooks registered, signals arriving, scoring running, offers permitted — and if Tempo is being quiet it names the reason. The honest answer is that Tempo is designed to be quiet: the glyph only warms past about three and a half hours of unbroken work, and it only ever speaks at the top of the scale, at most twice a day. Past an hour the statusline also shows your running total for the day, so you can see it measuring even when it has nothing to say.

Does it notice how much I use Claude, or only when things go wrong?

Both, and they are weighted separately. Friction signals — retry spirals, error rates above your own normal, prompts collapsing into fragments — spike when something is going wrong. Dose signals accumulate whether or not anything is wrong: hours actually spent in Claude today (idle gaps of fifteen minutes or more are not counted), minutes since your last real break, how fast you are prompting against your own baseline, how many separate codebases you are holding at once, and how many days you have run without a lighter one. Enough dose on its own is enough to earn an offer — an eight-hour day, most of it unbroken, does not need to have gone badly to have cost you something.

Does Tempo work with Claude in Chrome?

Yes, through the skill. The Claude in Chrome side panel now runs as a Cowork session, so the skills you have saved are available in the browser with nothing extra to set up — add tempo.skill once and it rides along in chat, Cowork and Chrome. What Chrome cannot give you is the measured version: the statusline glyph, the load index and your local data story all depend on Claude Code's hook system, which browsers have no equivalent for. In Chrome, Tempo is Claude watching the shape of the conversation; in Claude Code, it is instrumented.

Does Tempo send my code, prompts, or data anywhere?

No. There is no network call anywhere in Tempo's codebase — no account, no telemetry, no server. It writes derived signals (word counts, error flags, salted hashes) to a plain-text file on your own machine at ~/.tempo/events.jsonl, and never stores prompt text, file contents, paths, or command strings.

Will it interrupt me while I'm working?

No. Tempo's hooks always exit 0, and it only ever speaks in a seam — after a turn has completed, when nothing is running. No modals, no stolen turns, at most two offers a day, and a single decline silences it for the rest of the session.

What do I need to run it?

macOS or Linux (or Windows via WSL), Python 3, and Claude Code for the measured version. The Claude chat, Cowork and Chrome version is a single skill file with no requirements at all.

What does the one-line installer actually do?

It downloads Tempo's bundle to ~/.tempo, backs up your existing ~/.claude/settings.json with a timestamp, then merges in the hooks and a statusline. If you already have a statusline it is neither discarded nor silently skipped: your command is saved to ~/.tempo/wrapped.json and runs first, unmodified, with the glyph appended after it. You can read the whole script at trytempo.net/install before you run it.

How much does Tempo cost?

Tempo is free while it is in beta, and the core — the statusline, the load scoring, the resets and your local data story — stays free. Paid tiers are being considered, but neither the price nor what they would contain is settled; the pricing section is where you can weigh in on both.

How do I pause or remove it?

Pause it with rm ~/.tempo/enabled. Remove it with rm -rf ~/.tempo — that is a complete erasure, because everything Tempo ever recorded lives in that one folder.

Does it work with Cursor, Copilot, or other assistants?

Not yet. Tempo is built on Claude Code's hook system and Claude's skills, so today it covers Claude Code, Claude chat, Cowork and Claude in Chrome.

notes

Why this is a problem worth measuring

Tempo exists because of an argument, and the argument is written down. Two kinds of writing: what a long agentic session does to a person, and how the machinery under Claude Code actually works — since that is what Tempo is built out of.

Why hour six with Claude feels different

Agentic coding removed the compiles, the waits and the walls that used to break up a day, and shifted the work from producing to judging. Why a productive day can leave you emptier than an unproductive one.

The retry spiral, and how to notice you're in one

Three retries on the same test in nine minutes is not persistence. It is a state with a measurable signature and an exit that feels like losing — which is why nobody takes it.

What a 40-second reset actually is

Not meditation, not a wellness break, no streaks. The five families of practice, three you can do at your desk right now, and why the length is the whole design.

Building a statusline worth looking at

How statusLine works, what the payload gives you, what earns a place on one line — and how to add to a statusline you already have instead of clobbering it.

Claude Code hooks: the ones that matter

Every event and what it is for, why exit code 2 will ruin your afternoon, and the pattern for observing a session without ever interrupting it.

All notes →

No newsletter and no popup. If something in there is useful, it is useful on its own.

shape the roadmap

Tell us what you think

Two minutes. Every submission gets read by a human (Pen).