ccmon v0.1.0 — first public release
· 3 min read
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
claudesession via Claude Code's hook system. The daemon never spawnsclaude; 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
.debpackage 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:7777with 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
0and Claude Code falls back to its in-terminal prompt. You never lose a session because the daemon crashed. claude -psummarizers capped at 2 concurrent so you don't burn through rate limits; summaries cache for 30 s.ccmon doctorfor 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
askand the in-terminal prompt fires. Intentional. ~/.claude/settings.jsonis 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
- Install the
.deb. - App guides — what each tab does.
Welcome aboard.