Claudication

Your knee hurts while Claude works.
It relaxes when Claude is ready.

A Chrome toolbar button that shows whether Claude Code is working, with optional desktop notifications. It works on macOS, Ubuntu and Windows.

claudication (n.): pain in the legs that comes on while they're working and eases with rest.

Three states, one glance

Hover over the icon to see how many sessions are working.

Working

Claude Code is working on a task in at least one session.

Ready

Claude has finished, or is waiting for your input or permission.

Not connected

The local helper isn't running. Run the installer.

What you get

Small, local, and with no dependencies beyond Python 3.

Install

Requires Python 3.9 or newer and Google Chrome.

git clone https://github.com/Tpojka/claudication.git
cd claudication
./install.sh

Choose what to install

  1) Chrome extension
  2) Chrome extension + OS notifier
  3) Nothing (exit)
Choose 1, 2 or 3: 2
Play a sound with notifications? [Y/n]:

Load the extension (once)

  1. Open chrome://extensions and turn on Developer mode.
  2. Click Load unpacked and pick the extension folder the installer printed.
  3. Pin Claudication to the toolbar.
  4. Restart any running Claude Code sessions so they load the hooks.

OS notifier

You get a notification when Claude finishes a task or needs your permission. The title includes the project name.

Change settings any time

Run these from the repository. They take effect with the next notification, with no restart:

python3 -m claudication.install set sound off           # silent notifications
python3 -m claudication.install set sound on
python3 -m claudication.install set notifications off   # no notifications at all
python3 -m claudication.install set notifications on

On Windows, use py -3 instead of python3.

Or use your OS settings

OSWhere
macOSSystem Settings → Notifications → Script Editor
Ubuntu (GNOME)Settings → Sound → System Sounds, or Notifications → Do Not Disturb
WindowsSettings → System → Notifications → Windows PowerShell

How it works

Claude Code hooks write each session's state. A small local helper sends changes to Chrome.

Claude Code ──hook──► claudication.pyz hook ──► sessions/<id>   (busy | ready)
                                  └──────────► desktop notification (optional)

Chrome ──starts──► claudication.pyz host
                      watches sessions/, pushes status on change
                                  │  native messaging
                                  ▼
                   extension swaps the icon

It covers Claude Code: the terminal, IDE extensions and the Desktop app's Code tab. It doesn't cover regular Claude chat.