Ever wonder how much water your AI coding sessions use? Thirsty shows you.
It reads your Claude Code sessions, looks at how many tokens you used, and turns that into a rough estimate of water. Then it draws a glass of water filling up in your terminal and tells you what that water could have done in real life, like how many bottles or how many minutes in the shower.
It is a fun little tool. The goal is simple. Make the invisible cost of AI feel a bit more real, and make you smile while it does.
If it makes you smile, drop a ⭐ on the repo. It genuinely helps other people find it. 💧
💧 T h i r s t y · how much water did Claude just drink?
THIS SESSION ALL TIME
╭───────────────╮ ╭───────────────╮
│···············│ │···············│
│···············│ │···············│
│···············│ │···············│
│···············│ │···············│
│···············│ │···············│
│≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈│ │···············│
│▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓│ │≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈│
│▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓│ │▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓│
╰───────────────╯ ╰───────────────╯
╰┬╯ ╰┬╯
2.51 L 163.4 L
🌊 A small pond of prompts.
Ducks are considering relocating to your terminal.
Your all-time Claude water footprint is roughly:
🧴 326.9 water bottles
🚿 18.2 min in the shower
🥤 81.7 days of drinking water
🛁 1.1 bathtubs
Short answer, no. It is a smart guess, not a fact.
Here is why. The companies that run these AI models do not publish how much water or power a single token actually uses. And even if they did, it changes based on where the data center is, how it cools itself, and how the local power grid works. So there is no exact number anyone can give you.
The numbers in Thirsty are set to a believable range based on public research, but they are meant to give you a feeling, not a lab result. Think of it like a step counter that is roughly right, not a medical scan. If you find better numbers, you can plug them in yourself (see Tune the numbers below).
Just Node version 16 or newer. If you already run Claude Code, you have it.
# get the code
git clone https://github.com/Ayushmore1214/thirsty.git
cd thirsty
# run it right away, nothing to install
node bin/thirsty.js
# or install it once so you can type "thirsty" anywhere
npm install -g .No build step. No extra downloads. Nothing to set up.
thirsty # water for this project plus your all-time total
thirsty --all # use your all-time total for both glasses
thirsty --watch # keeps refreshing so you can watch it grow
thirsty --json # plain data output, no drawing
thirsty --demo # fake data, good for screenshots
thirsty install # add Thirsty to your Claude Code status bar
thirsty uninstall # take it back out
thirsty --help # show all optionsClaude Code has a little status bar at the bottom. You can put Thirsty there and watch your water climb in real time while you work.
thirsty installThis adds Thirsty to your Claude Code settings and saves a backup of your old settings first. Restart Claude Code and you will see something like this at the bottom:
💧 2.71 L this session · 851.7 L all-time
Want to set it up by hand instead? Add this to your ~/.claude/settings.json file:
{
"statusLine": {
"type": "command",
"command": "thirsty statusline"
}
}No. It is not a timer and not a background app. Claude Code runs Thirsty for you and shows what it prints. It runs again each time the status bar refreshes, which happens as you use the session, so your water ticks up right after Claude replies. When you are not doing anything, nothing runs and it uses no power. Every run reads your log files fresh, so the number is always current.
Changed your mind? Take it out in one line:
thirsty uninstallThis removes Thirsty from your Claude Code status bar and leaves the rest of your settings alone. Reload Claude Code and it is gone.
Want to remove the command from your computer too?
npm uninstall -g thirstyAnd if you cloned the repo, you can just delete the folder.
Claude Code saves a file for every session on your computer. Inside each file, every reply from Claude records how many tokens it used. Thirsty adds all of those up and multiplies by a small water cost per token.
Some tokens cost more than others:
| token type | water per token | why it costs what it does |
|---|---|---|
| output | most | this is the model actually thinking, so it is the priciest |
| cache write | medium | like input, plus the cost of saving it |
| input | low | your prompt going in, fairly cheap |
| cache read | almost nothing | just re-reading memory, barely any work |
Do not like the defaults? Change them. Make a file called thirsty.config.json in your project folder, or in your ~/.claude folder, and set your own values. There is an example file called thirsty.config.example.json to copy from.
{
"water": {
"ml_per_input_token": 0.0025,
"ml_per_output_token": 0.05,
"ml_per_cache_write_token": 0.003,
"ml_per_cache_read_token": 0.0001
}
}The values are milliliters of water per single token. Put in whatever numbers you trust and Thirsty will use them.
thirsty/
├── bin/thirsty.js the main program you run
├── src/parse.js finds your Claude Code files and counts tokens
├── src/water.js turns tokens into water, and writes the funny lines
├── src/render.js draws the glass and the report
├── thirsty.config.example.json
└── README.md
Everything is small and easy to read on purpose. This is fully open source, so fork it and take it further. Some ideas: a leaderboard between friends, a mode that shows water saved by using cache, a little plant that wilts as you use more, or a weekly email with your total.
If Thirsty made you laugh or made you think, a ⭐ means a lot and helps others find it. Thanks for hanging out.
MIT. Use it, change it, share it. Drink some water while you are at it.