Claude Code Traffic Light

A small Windows tray app that shows every Claude Code session at a glance: which one is working, which one waits for you, which one is done. Answer its permission prompts without switching windows, and get a push on your phone only when you are away.

Free and open source (GPL-3.0). One portable .exe, no installer, no administrator rights, no telemetry. Beta 0.9.

Two Claude Code sessions in the tray menu, with the usage limits and the use at API prices on top; one asks a question in a panel near the tray, is answered, goes on and finishes; the same question on a phone and on a smartwatch with its answer buttons; the statistics window

What the colours mean

With several sessions open, the tray icon shows the most urgent state; the tray menu lists every session, named after its chat.

Features

All sessions, one icon

Console and VS Code sessions alike. Bring a session's window to the front from the menu, mute one session, or pause everything for an hour.

Answer without switching

A panel near the tray shows the permission prompt or the question with its answer options. Click, or press Win+Alt+C and answer from the keyboard.

Phone, only when away

Pushes through ntfy (ntfy.sh or your own server) only when you did not react on the computer or the screen is locked. Answering prompts from the phone is optional.

No false "done"

When Claude only stops to wait for its own background task, such as a build or tests, the lamp shows clock hands for as long as the task runs, and nothing is reported as finished. A wait of half an hour gets one notice, in case the task is stuck.

Errors, not "done"

A turn cut short by an API error, such as a usage limit, overloaded servers or a lost sign-in, shows red, with what happened in Claude's own words, here and on the phone.

Context before it is compacted

Each session shows how full its context is, and warns at 90% of the point where Claude compacts on its own, so you can finish the step or compact yourself.

Usage limits at a glance

The 5-hour and weekly limits with their reset times, at the top of the menu, in the icon tooltip and in every push. Exact after /usage, estimated in between from your own sessions, or exact all along with /usage run in the background. Next to them the tokens and what they would cost at API prices, and a statistics window with what made the use dearer. The app itself asks nothing of Anthropic.

Out of Claude's way

Driven by Claude Code hooks that exit within milliseconds. If the app is not running, the hooks simply do nothing.

Fits your Windows

7 languages, light, dark or system theme, follows Windows high contrast, display scaling and several monitors.

On your computer

A request shows up in a panel near the tray, and the state changes come as ordinary Windows notifications. A click on a notification only closes it; the button on it goes back to the session window or does what the notice is about. Each kind can be switched off.

The panel near the tray: Claude Code needs you, a Bash command npm test with Allow, Deny and Allow and don't ask again, the rule that would be added, and links to open the session window or answer later
A permission prompt in the panel: answer it, let Claude Code's own rule stop the question for good, or open the session window first.
Windows notification: Claude Code finished, demo-app, with the first line of what Claude did: added tests for the CSV and JSON export, all 13 pass, and an Open the session window button
Finished, with what was done and a button back to the session.
Windows notification: Claude Code needs you, demo-app, Bash: npm test, with an Answer button
Needs you, with an Answer button when the panel is off.
Windows notification: Claude stopped because of an error, a usage limit was reached, with Claude's words: you have hit your limit, resets 9pm, and an Open the session window button
Stopped by an error, in Claude's own words, with the same button.

On your phone

The ntfy app on a phone: Claude Code asks permission to run npm test with Allow, Always and Deny buttons, answered with Always; Claude asks which test runner to set up, answered with the first option; a task finished in 12 minutes; each push ends with the usage limits, such as 5 hours about 38% and the week about 48%

Pushes arrive in the free ntfy app (Android and iPhone), from ntfy.sh or your own server.

  • Permission prompts come with Allow and Deny, and with Always when Claude Code offers a rule so it does not ask again; the push says what that rule allows.
  • Questions with answer options get a button for each of the first three answers.
  • Finished tasks are reported only when they ran long enough for you to look away.
  • Usage limits close every push, so you see what is left without opening Claude.
  • On a smartwatch or fitness band too: allow ntfy in the watch's notification settings on the phone. A watch that shows notification buttons lets you answer from your wrist.
  • Answer on the computer first, and the phone is told the buttons no longer work.
A fitness band showing the same kind of push: demo-app, Claude asks a question, which test runner should I set up, and the usage limits A round smartwatch showing the same push in three steps: Claude asks a question, the two answers with their descriptions, and the buttons 1) Vitest and 2) Jest under the line with the usage limits

Answering from the phone is off until you turn it on. The topic name is random and secret, and buttons work once, only for the request still waiting.

Usage limits

The tray menu: Claude usage limits at the top, 5 hours 42% and the week 63% with their reset times; under them the use at API prices with the date of the prices, today about $15 and 15M tokens, 30 days about $35 and 44M tokens; then the list of sessions, and Statistics above Settings

How much of Claude's 5-hour and weekly limits you have used, and when each resets, without typing /usage every time.

  • Exact right after /usage: Claude Code keeps those figures on your computer, and the app reads them.
  • Estimated in between (marked ≈), because Claude Code gives the current figures only on /usage: the app adds what your sessions used since, each model weighed by your own past figures. So far that stayed within one or two percentage points; every /usage puts it right again.
  • Exact all along, if you switch it on: whenever the estimate may be more than 1% off while you work, the app runs Claude Code's own /usage in the background: more often near the end of a limit, and more often by itself when the estimate starts to miss (a model or an effort it has not learnt yet), never more often than every 5 minutes. It asks no model, so it uses no limit.
  • The same figures on the second line of the icon tooltip and at the end of every push; optionally a notice, here and on the phone, every N percent, when a limit runs out, when it is back and when a used window ends.
  • Under them, the tokens used today and in 30 days and what they would cost at API prices, every kind of token at its own price: on a subscription, to see what the same work would cost by the token; with an API key, close to the bill. The prices are built in, with their date shown, and can be updated from the open price file of LiteLLM, a community project on GitHub: on request, or once a day if you switch it on.
  • Statistics in a window of its own: what the use came to, what it went on (reading the cache, writing it, the replies), what made it dearer (a large context, breaks longer than the cache lasts, with what helps), by session and by day.

The app itself never contacts Anthropic and never touches your Claude sign-in: in the background it only starts Claude Code's own command. Use on other devices shows up at the next /usage. A sign-in without a subscription (an API key) has no such limits, and the app shows none.

The statistics window for 7 days: about 40% of the weekly limit, $35 at API prices; what it went on and what made it dearer, each bar with its share of the limit at its end; a bar per day on a scale of the weekly limit; three sessions with model, steps, largest context, share of the week and dollars

Get started

1. Download ClaudeCodeTrafficLight.exe from the releases page and run it.
2. Answer Yes to "Connect to Claude Code": the app adds its hooks to ~/.claude/settings.json and keeps a backup of the original.
3. Start Claude Code as usual.

Requires Windows 10 or 11 (the .NET Framework it needs is part of Windows). The file is not code-signed, so Windows SmartScreen may warn on the first start: More info → Run anyway. Each release is built by GitHub Actions from the tagged source, reproducibly, and lists its SHA-256 checksum in SHA256SUMS.txt.

Privacy

The program collects nothing and sends nothing about you: no telemetry, and no update checks unless you switch them on (once a day, one anonymous request to GitHub for the latest release). Nor does it load the prices of the models unless you ask (one anonymous request to GitHub for LiteLLM's price file, on a button or once a day if switched on). Otherwise it uses the network only if you set up phone notifications, and then only to the ntfy server you chose. For the usage limits it reads the session transcripts and the figures Claude Code keeps on your computer; it never contacts Anthropic itself and never touches your Claude sign-in (if you switch on refining the limits, it starts Claude Code's own /usage, and Claude Code asks Anthropic, as when you type it). This page has no counters or trackers either.