agent-monitor
With several sessions open, the hard question is not what they are doing — it is which one has finished and is waiting for you.
What it takes off your hands
Run several AI coding sessions and the one left idle is you. Finding which window wants an approval means clicking through them one at a time.
Guess from when a file last changed and a session waiting on approval looks exactly like a shell command that takes a while — both just look quiet.
So it reads the file each session keeps for itself. Nothing is guessed at; what is written down is what you see.
What it can do
One number in the menu bar
"2/5" — two waiting, five alive. It never grows with the session count, and when nothing is waiting the number goes quiet on its own.
Four states, told apart
Waiting on approval, waiting on input, working, running a shell command. The first two are the ones that need you, and they rise to the top.
Four sources, one list
Claude Code in a terminal, the Claude desktop app, codex in a terminal, and codex threads in the ChatGPT app. Each row carries where it came from.
Why it is waiting
Hover a row and it says what it wants approved, or the last thing it said to you.
Click through to the window
Click a row and the terminal window running that session comes to the front. Right-click to pin the ones you watch most.
Token counters (off by default)
Turn them on to see how full a session is right now and how much it has burned since it started. Subagents are counted in.
Getting it open
- Download it from Releases, unzip it, and move it to where you keep applications.
- Right-click the app and choose Open. It is unsigned, so macOS refuses the first launch. Once is enough.
- The number appears in the menu bar. The first time you click a session row, allow the Terminal control prompt.
Where the information goes
It stays on your machine. The app reads the files sessions already keep locally and sends what it reads nowhere. There is no account and no server.
Honest limits
- It is neither signed nor notarised. Signing a release needs a paid Apple Developer account, which this project does not have, so macOS blocks the first launch — right-click and open gets you past it.
- macOS only, universal (Apple Silicon and Intel). It is built against the macOS 13 SDK, but macOS 26 is the only version it has actually been run on.
- The Claude desktop app and codex in a terminal write no status down, so theirs is estimated from the tail of the transcript. Those rows say they are estimates rather than passing as measured.
Common questions
- Does it cost anything?
- It is free, and the source is open (MIT).
- It will not open — macOS says it cannot verify the app.
- That is the missing signature. Right-click the app and choose Open once. If it still refuses, go to System Settings → Privacy & Security and use "Open Anyway" near the bottom.
- Can I build it myself?
- Yes. With a Swift compiler, cloning it and running build.sh is the whole thing. There are no other dependencies.
- Windows or Linux?
- macOS only, for now.
macOS only · MIT licence