The problem
Once you start running Claude Code in more than one project, you lose track. One session is busy working, another is quietly waiting for you to approve a tool call, a third finished ten minutes ago and you forgot. There’s no single place to see what’s going on across all of them.
So I built one. CSM — Claude Sessions Monitor — is a small terminal tool that shows every Claude Code session you have running, in one live view.
What it shows
Run csm and you get a dashboard that refreshes in place. For each session it shows:
- Status — working, waiting for input, idle, or finished
- Project name and git branch
- Context usage — how full the context window is
- Last activity and a preview of the most recent message
A few keystrokes switch views: h for history of past sessions and u for your Anthropic usage and quota (5-hour and 7-day windows, with per-model breakdowns).
Not just the terminal
CSM also has a web dashboard, for when you’d rather watch your sessions in a browser tab than in the terminal. Press w in the live view to open it, or start it directly:
csm --web # terminal view plus the web dashboard
csm --web-only # just the web server, no terminal UI
It serves on localhost and updates live as your sessions change — the same session cards, plus detail views with the full message timeline and per-session metrics (token usage, tool breakdown, turn count). The whole frontend is embedded in the binary, so there’s nothing extra to install. Leave --web-only running on a spare machine and you’ve got an always-on overview.
The handy extras
A couple of features came straight out of my own annoyances:
- Ghost detection — it spots orphaned Claude Code processes that are still running but doing nothing, and
csm -kill-ghostscleans them up. - Origin badges — it figures out where each session was launched from (Ghostty, iTerm, VS Code, Cursor, Zed…) and labels it, so you know which window to go back to.
Built to be boring to install
CSM is written in Go with essentially zero external dependencies, so it compiles to a single self-contained binary. The web dashboard is embedded right into that binary — no separate files, no build step.
Install it with Homebrew:
brew tap yepzdk/tools
brew install csm
Then just run csm.
Have a look
The code, releases, and full docs are on GitHub: github.com/yepzdk/claude-sessions-monitor. If you live in Claude Code across a pile of projects like I do, it might save you the same context-switching headache it saved me.