Your thinking spinner, now with a water bill.

Claude Code says Pondering… while it works. WaterBar replaces that with an estimate of the water the request is drinking — and keeps a running total in your menu bar, with milestones to unlock.

Free and open source · macOS 13+ · Apple silicon & Intel · No account, no network

The WaterBar menu bar popover, showing 627 litres across 22,544 requests, progress toward the Cubic Metre milestone, a 14-day chart and the achievement list.

What it does

A running tally of something nobody was counting.

Every Claude Code request has a token count. WaterBar turns that into millilitres, adds it up, and puts the number where you'll actually see it.

Live in the spinner

The thinking verb becomes Evaporating 22 mL. It updates after every request, using what the last one actually cost.

🎖

22 milestones

From your first millilitre to an Olympic swimming pool. Each one arrives as a notification, whether or not you wanted to know.

📈

Today, this week, all time

A 14-day chart, your thirstiest projects, and a breakdown by model — Opus costs a great deal more than Haiku.

🔒

No account. No network.

It reads the transcripts Claude Code already writes to your disk. The app links no networking frameworks at all — it cannot phone anywhere.

🧮

Every constant is yours

The whole model lives in one editable JSON file. Think the numbers are wrong? Change them and rebuild the totals.

📦

Counts your whole history

First launch prices every session you've ever run. And the ledger is append-only, so old totals survive Claude Code's transcript cleanup.

Install

Two ways in.

Homebrew — recommended

Clears the quarantine flag for you, so there's no Gatekeeper detour at all.

brew install --cask bmoresca/tap/waterbar

Or download the disk image

Drag WaterBar to Applications. Because the app is ad-hoc signed rather than notarized, macOS blocks it the first time.

On macOS 15 Sequoia and later, open System Settings → Privacy & Security, scroll to Security, and click Open Anyway. Apple removed the old Control-click shortcut in Sequoia. On macOS 13–14, Control-click the app → OpenOpen. Once, not every launch.

Download WaterBar 1.0.0

Optional: the Claude Code plugin

WaterBar refreshes the spinner on its own every 20 seconds. The plugin does it the instant a request lands, and adds /water for a full report.

/plugin marketplace add https://github.com/bmoresca/waterbar

Achievements

22 milestones, in ascending order of concern.

Cumulative, across every project. They unlock quietly and arrive as a notification.

The numbers

These are estimates. Loudly.

Anthropic doesn't publish per-request water use, and if it did the figure would move with the datacenter, the season and the grid. Nothing here is measured. What WaterBar does is apply a transparent chain of published constants to a token count:

tokens → watt-hours → kWh (× PUE) → litres (× on-site cooling + grid water)

ConstantDefaultWhere it comes from
Opus, output tokens3.00 Wh / 1kScaled from the anchors below
Sonnet, output tokens1.10 Wh / 1k ″
Haiku, output tokens0.30 Wh / 1k ″
Input tokens~1/30th of outputPrefill is one parallel pass; each output token is its own forward pass
Cache reads~1/200th of outputThe KV state already exists; it only has to move
Datacenter PUE1.10Typical hyperscale overhead
On-site cooling1.80 L / kWhUS datacenter water use efficiency
Grid electricity3.10 L / kWhWater spent generating the power itself

Those defaults were fitted between two public anchors. Google (2025) put the median Gemini text prompt at roughly 0.24 Wh and 0.26 mL — a small, heavily optimised model on a short prompt. Li et al. (2023), “Making AI Less Thirsty”, put GPT-3-scale inference nearer 500 mL per 10–50 responses.

A heavy agentic Opus turn lands around 20–30 mL. If you think that's wrong, it probably is — every constant is in ~/.claude/water/model.json, and WaterBar rebuild re-totals from them.