Engineering · Internal Tool
Agentmon
A macOS menu bar app that surfaces every active Claude Code session — which projects are running, which are waiting for input, what each one is doing right now, and what it has cost so far. Built in-house to keep our own engineering and audit work coherent across many parallel agents.
The problem
We routinely run four to six Claude Code sessions in parallel — one per project. Without visibility into what each session is doing, you lose track of which ones are working, which are waiting for you to type, and which have quietly cost more than the rest combined. The terminal tabs all look the same.
What it does
- Live session list — every active Claude Code session with its project, model, and last activity, refreshed in real time.
- "Waiting on you" indicator — a distinct blue state for sessions where the assistant has finished its turn and is idle waiting for your next prompt.
- Tool tracking — shows the current tool a session is running (Edit, Bash, Read, etc.) by parsing transcript blocks.
- Token & cost rollups — per-session and aggregate, priced against the running model.
- Idle notifications — surfaces sessions that have sat unattended past your configured threshold.
- One-click resume — clicking any session opens Terminal in the right directory with the session restored.
Status indicators
Each session resolves to one of four states. The menu bar icon adopts the highest-priority color so the "you have work to do" signal is unmissable.
Active
Assistant is working — typing or running a tool.
Waiting
Assistant finished its turn — your move next.
Idle
No activity in the last few minutes — possibly stalled.
Stale
Older than five minutes — moved to the Recent section.
How it works
Agentmon reads from the JSONL transcripts that Claude Code writes to disk for every session. Two data paths feed the menu bar in real time:
- File watcher — polls
~/.claude/projects/*.jsonlevery two seconds, reading only new bytes since the last offset. Cost is negligible even with dozens of active sessions. - Hook server — an optional local HTTP listener on
127.0.0.1:7842that receives push events from Claude Code's hook system. Drops update latency from ~2s to ~50ms. Loopback-only, rejects non-local connections at the connection layer.
Native Swift 6 — no Electron, no web runtime. The release binary is under 400 KB. State persists to ~/Library/Application Support/Agentmon/ so token rollups and project history survive restarts.
Install
macOS 13+, Swift 6 toolchain (Xcode Command Line Tools 16+).
# clone git clone https://github.com/KZM-Labs/agentmon.git cd agentmon # build and launch ./build.sh --run
Look in the menu bar for a circle icon. Click it to see active sessions. Click Preferences to set the idle threshold, mute noisy projects, or wire up hook integration for sub-second push events.
Provenance
Agentmon was built at Mastascusa Holdings as internal tooling for our own engineering workflows. We open-sourced it because the visibility problem isn't ours alone — anyone running multiple AI coding sessions in parallel hits the same wall. The repository is MIT-licensed and accepts contributions.
Links