Pulse · macOS menu-bar status lamp

Know when an agent needs you

Leave an agent running, switch away, and find it stuck on an approval. Pulse shows that in the menu bar: red needs you, green running, gray idle. Open the tray; click a row to focus that terminal.

macOS 14+ · MIT · v0.27.2 · Menu bar

menu bar 2 · 4m
Needs you · 2 Claude · Codex

Needs you · 2

  • Approve package install

    ~/code/pulse · Bash · 4m ago

    4m
  • Review failing CI

    ~/code/titpea · 1m ago

    1m

Running · 1

  • Draft release notes

    ~/code/pulse · 2m ago

local probe · harvest · hooksclick a row to focus the terminal
Red / green / graySessions in the trayWaiting is never inferredRuns locally

A look inside

Glance first; open the tray when you need detail

The menu bar answers whether to look up. The tray lists who is waiting and why, then focuses the matching terminal.

Fit and limits

Fit and limits

Use it when

Agents keep running while you are elsewhere, and you want to know without switching terminals — especially with more than one agent at once.

Current platforms

macOS 14+ only. Claude Code and Codex get Waiting through hooks in Preferences → Waiting Signal. Other agents use process probe and session harvest; Waiting depth varies, and some have none.

Out of scope

No quota, spend, or reset timers. No desktop pet or analytics dashboard. The tray does not approve or deny — it takes you to the session.

In the menu bar

In the menu bar

Menu-bar lamp

Red when something needs you (new waits flash once), green while agents are running, gray when only recent sessions remain, orange if probe and harvest both fail.

Sessions in the tray

Rows are sessions: task title first, path and last activity on the secondary line, agent identity on the icon. Click a row to focus that terminal when a TTY is available.

Waiting is not inferred

Waiting only comes from hooks or an explicit pending mark. Agents without a Waiting path stay on Running / recent and say so — the lamp does not invent a red state.

Snooze keeps the row

Snooze quiets the lamp and notifications for a while. The row stays under Needs you with remaining time. Footer actions clear waits, jump to the oldest wait, or open preferences.

Probe follows state

Polling is faster while waiting, slower when idle, and stops when the display sleeps or locks. Quiet hours and per-agent mute are in preferences.

Questions & download

Which systems are supported?

macOS 14+. Current builds are ad-hoc signed, so the first open may need Open from the context menu, or clearing quarantine with xattr.

Do I need hooks?

Without hooks you still see running and recent sessions. For Claude Code and Codex, install Waiting Signal hooks so Needs you can light from their approval prompts. Some other agents surface Waiting via pending marks instead.

Does it upload my sessions?

No. Probe, harvest, and hooks stay on the Mac. Update checks only read public GitHub releases.

What license does it use?

MIT.