If you use Claude Code seriously, you probably have more than one session running. Maybe three. Maybe eight. Each one is in a different terminal tab, working on a different project, and at any given moment one of them needs your attention while the rest are crunching away quietly.
Every two seconds, the display refreshes. You can see at a glance which projects are active, what each instance is currently doing, the last prompt you gave it, and whether anything needs your attention.
The problem it solves
Claude Code doesn't have a built-in way to see what all your sessions are doing. Each instance runs in isolation. If one is blocked on a permission prompt, it just waits — silently, indefinitely — while you're focused on something else. You end up cycling through tabs. Is the API project still running? Did the frontend build finish? Was there a permission prompt I missed ten minutes ago?
We hit this ourselves running StableStack development: one session writing checkers, another updating the marketing site, a third running tests, and a fourth deploying infrastructure. We kept losing track of which session needed what. Permission prompts went unanswered for minutes. Completed tasks went unnoticed.
What each status means
Working (green dot) — Claude is actively using tools: reading files, writing code, running commands. The dashboard shows which tool and what file or command, in real time.
Permission needed (amber dot, pulsing) — Claude is blocked waiting for you to approve a tool call. This is the one you don't want to miss. Pair it with Terminal Notifications and you'll get a macOS alert with sound the moment it happens.
Compacting (blue dot) — Claude is compressing its context window. No action needed, but good to know it's happening.
Idle (green dot) — Claude finished and is waiting for your next prompt.
Jump directly to any session
Each entry has a hotkey — 1 through 9, then a through z. Press it and the dashboard switches your iTerm2 to that exact window, tab, and session. No more cycling through twenty tabs to find the one that beeped.
This uses iTerm2's scripting API to identify each session by its unique ID, so it works reliably even when multiple sessions are in the same window.
Native macOS notifications
The dashboard is half the story. The other half is native notifications that come to you — even when you're in a different application entirely.
StableStack configures Claude Code hooks to send macOS notifications at three critical moments:
- Permission request — a distinct alert sound (Funk) when Claude needs approval - Context compaction — a subtle sound (Sosumi) when the context window is being compressed - Task complete — a completion chime (Hero) when Claude is done and waiting for input
Each notification is clickable and brings you straight to iTerm2.
How it works under the hood
StableStack installs lightweight hooks into Claude Code's event system: PreToolUse, PostToolUse, UserPromptSubmit, Stop, and PreCompact. Each hook writes a small JSON status file to ~/.claude/dashboard/. The dashboard command reads those files and renders the live view.
No background processes. No daemons. No network calls. The hooks are tiny Python scripts that write a file and exit. The dashboard is a simple terminal renderer that polls every two seconds. Everything runs locally, nothing phones home.
Setup takes one command
pip install stablestack
stablestack notifications
stablestack dashboardThe first command installs the hooks and configures macOS notifications. The second opens the live dashboard. Both are completely free — no license key, no signup, no activation. They ship with every copy of StableStack and work with any Claude Code project.
Why we made this free
StableStack's core business is catching bugs in AI-generated code. But the developers who use Claude Code the most — the ones running five sessions in parallel across different projects — are exactly the people we want using StableStack.
Giving away monitoring tools that make Claude Code better to use is a good way to get StableStack into the hands of serious AI-assisted developers. If you're running enough Claude sessions to need a dashboard, you're writing enough AI-generated code to need StableStack's analysis checks too.
Free with every install. No license key required.
pip install stablestack