Skip to content

Features

c9watch gives you and your agents a real-time view of every Claude Code, Codex, Cursor Agent and Pi session running on your machine. The desktop app is for you. The CLI is for your agents. Both share the same detection engine, so you always look at the same data. Here’s what it can do.

Works with any terminal or IDE. No plugins or extensions required. Start an agent from VS Code, Zed, iTerm2, Ghostty, tmux, Terminal.app, Antigravity, or any of the 13 supported JetBrains IDEs, and c9watch picks it up automatically.

Other tools make you launch sessions from inside their app. c9watch finds them by scanning running processes at the OS level. You change no workflow, and nothing locks you in.

A background thread polls every 2 seconds using the sysinfo crate and scans for running agent processes. Each Claude Code process is matched to its session file in ~/.claude/projects/ via path encoding and timestamp correlation. Codex, Cursor Agent and Pi sessions are read from their own session files.

New sessions appear automatically in the dashboard within seconds of starting. Ended sessions are removed. No manual refresh needed.

Every session shows its current status at a glance:

  • Working: the agent is generating a response or executing tools
  • Needs Attention: a tool needs your approval, or the agent asked you a question
  • Ready: the session is waiting for your next prompt

Codex shows Working and Ready only. It has no approval or question state.

Sessions are sorted by priority. Sessions that need attention surface to the top, so you never leave an agent stuck waiting. Each card also shows the model name, project path, git branch, current tool being executed, and elapsed time.

Monitor tab showing sessions grouped by status with attention requests at the top

Expand any session, live or from history, to see the full conversation. Messages are rendered with full markdown formatting, syntax-highlighted code blocks, inline images (for screenshots pasted in user messages), and tool call details.

A navigation sidebar on the right shows all messages for quick jumping. Tool call messages can be toggled on or off to focus on the conversation flow.

Conversation viewer showing formatted markdown, code blocks, and navigation sidebar

From the dashboard, you can:

  • Stop a running session
  • Open the parent terminal or IDE where the session is running
  • Rename sessions with custom titles for easier tracking
  • Resume a past session — click the RESUME chip to copy the command

Sessions are grouped by project directory, with git branch information shown for each group. When you’re running agents across multiple projects, this lets you see at a glance which project each session belongs to.

Click the c9watch icon in the macOS menu bar to see a quick-glance overlay showing all active sessions, their status indicators, and latest messages. Monitor without opening the full dashboard.

The popover uses a native macOS NSPanel, so it appears above full-screen apps and behaves like a system-level overlay.

Tray popover showing active sessions from the menu bar

Get a native macOS notification when a session changes status. It helps most when a session needs your approval. You won’t miss a waiting agent, even when you work in another app.

c9watch includes a built-in WebSocket server that lets you connect from any browser or mobile device on the same network. Scan the QR code displayed in the app to open a real-time web dashboard on your phone. Useful for checking on sessions away from your desk.

Browse all past sessions with two search modes:

  • Metadata filter: instant search by project name, session title, or date
  • Deep content search: searches inside the actual conversation content across all session files

Click a deep search result to open the conversation viewer and automatically scroll to and highlight the matching message. Sessions can be viewed chronologically or grouped by project with collapsible groups.

History tab with search, session list, and project grouping

Track your spending across Claude Code, Codex and Pi sessions with three views:

  • Daily: spending over time, bar chart with per-day breakdown. Sessions spanning midnight are split by date.
  • By project: total cost per project directory with session count, expandable session list showing session names (custom title or first user message), and DATE/COST sort toggles
  • By model: spending split by model (for example Sonnet, Opus, Haiku)

Click any session row to open a conversation preview overlay. It is the same viewer as the history tab.

Costs are computed from assistant message metadata in the session files, using per-model pricing tables. Pi reports its own cost data. Results are cached by file modification time so unchanged sessions aren’t re-scanned.

Cost tracker dashboard showing daily, per-project, and per-model spending

Ever wonder how much your token usage would look like in the physical world? The token distance visualizer converts your total tokens into a rice stack (one token equals one grain of rice, 5mm tall) and animates grains stacking up past 17 real-world landmarks.

Milestones range from a two-story house to the Moon, and include the Eiffel Tower, Taipei 101, and Mount Everest. The animation uses a 3-phase easing with continuous camera zoom-out as the stack grows.

Click SHARE to open the native macOS share sheet, or export an Instagram-ready PNG (1080×1350) with your stats and c9watch watermark.

Token distance visualizer showing a rice stack past Burj Khalifa with landmark milestones

Browse all your memory files in a two-panel layout. The left panel lists all memory files organized by project, and the right panel shows the full content of the selected file.

Quick access to Claude commands lets you jump into sessions directly from the memory view.

Memory tab with two-panel viewer showing project memory files

The same c9watch binary doubles as a command-line interface for scriptable session management. All output is JSON, designed for piping into jq or consumption by other coding agents.

Terminal window
c9watch list # List active sessions
c9watch list --status Working # Filter by status
c9watch status # Aggregate status summary
c9watch view <id> --last 5 --pretty # View conversation
c9watch history -n 20 # Browse past sessions
c9watch search "fix the auth bug" # Deep search
c9watch self # Identify calling agent's own session
c9watch stop <pid> # Stop a session
c9watch watch --compact # Stream status changes (NDJSON)
c9watch tasks <id> # View tasks/todos

The self command is designed for agent-to-agent workflows. A Claude Code session can identify itself by walking up the PID tree, then query its own status or tasks.

Install the CLI standalone (no GUI dependencies) on macOS or Linux:

Terminal window
curl -fsSL https://raw.githubusercontent.com/minchenlee/c9watch/main/install-cli.sh | bash

c9watch also ships with a Claude Code skill. Install it to let Claude Code auto-discover and use the CLI:

Terminal window
ln -s /path/to/c9watch/skills/c9watch-cli ~/.claude/skills/c9watch-cli

On macOS, c9watch needs Full Disk Access to read the working directory of agent processes. If sessions are found but their paths can’t be read, a dismissible banner appears with a direct link to System Settings > Privacy > Full Disk Access.

Press Cmd+Shift+D to open a hidden diagnostic panel that shows real-time detection logs: how many processes were found, which sessions matched, and which ones didn’t. Useful when sessions aren’t appearing in the dashboard.