Skip to main content

ccmon v0.1.0 — first public release

· 3 min read
ccmon team
ccmon contributors

The first public release of ccmon — a local Linux daemon and desktop UI that watches every claude CLI session running on your machine, surfaces what each one is doing, and lets you approve or deny permission requests from any terminal.

Highlights

  • Live monitoring of every claude session via Claude Code's hook system. The daemon never spawns claude; it only observes.
  • Desktop UI with a Sessions tab, Approvals tab, History tab with full-text search, and a Settings tab for notifications, retention, and rules.
  • Auto-approve rules with literal / glob / regex patterns and a dry-run mode so you can promote frequent decisions from the audit log and verify them against real traffic before they take effect.
  • Approval audit log — every decision the daemon ever resolved, with who decided (UI / CLI / notification / timeout / rule).
  • Desktop notifications via notify-send, including opt-in stuck-detection (CCMON_STUCK_THRESHOLD_S).
  • ccmon:// deep links — notification "Open" actions take you straight to the right approval modal.
  • Single .deb package that bundles the daemon and the desktop UI into one ~70 MB installer — no Python or Node runtime needed on the user's machine.

Backend

  • HTTP API on 127.0.0.1:7777 with the next-free-port fallback.
  • WebSocket interface for the desktop UI — single connection carries sessions, approvals, audit log, and live event stream.
  • SQLite-backed event log at ~/.local/state/ccmon/ccmon.db.
  • Fail-safe hook scripts: if the daemon is down, hooks exit 0 and Claude Code falls back to its in-terminal prompt. You never lose a session because the daemon crashed.
  • claude -p summarizers capped at 2 concurrent so you don't burn through rate limits; summaries cache for 30 s.
  • ccmon doctor for one-shot health checks.

UI

  • Sessions tab with live state pills (working / awaiting / stuck / ended) and a chat-style timeline.
  • Three-pane Approvals tab with risk classification, deny-with-message, deny+interrupt, and a 9-minute countdown.
  • History tab with two subtabs (Sessions browser + Approval audit log), full-text search, filters, and per-session transcript export.
  • Settings tab covering auto-approve rules, notifications, summaries, retention, and hooks/daemon status.
  • Rules editor with sample-traffic preview and inline lints.

Known limitations

  • Hook timeout is 10 minutes. If you don't decide within ~9 minutes, the daemon falls back to ask and the in-terminal prompt fires. Intentional.
  • ~/.claude/settings.json is global — hooks fire for every Claude Code session on the machine. Sessions started while the daemon was down still get tracked the moment they fire their next event.

Getting started

Welcome aboard.