Don't drift off while AI writes your code
AI Watchdog is a system-tray desktop app that monitors AI coding across VS Code, Cursor, Claude, ChatGPT and the terminal through 6 probes. Track multiple sessions in parallel, set Do Not Disturb, get remote notifications and view a stats dashboard — when the AI finishes or needs you, get notified instantly and jump back with one click.
Features
From six probes to multi-session tracking, one monitor covers every AI workflow you run
Six Probes, Cross-Product Coverage
File probe, process probe, Shell Hook (zsh/bash/fish), Claude session jsonl, Codex rollout lifecycle, and VS Code companion socket — six signal paths cover VS Code, Cursor, Claude, ChatGPT and the terminal, plus custom targets you add.
Multi-Session Parallel Tracking
A collection of state machines grouped by source tracks multiple AI tasks simultaneously without interference. The tray menu shows each active session's source, status and elapsed time; when concurrent, the title reads "Working (N)".
Smart Notification System
Do Not Disturb with manual toggle, scheduled quiet hours and "notify only waiting" tiering; desktop notifications fire only when the app is out of focus; each watch target has an independent notification toggle; done and waiting use different system sounds.
Insightful Notifications, One-Click Takeover
Notification bodies show task duration and changed file count — not just "done". Click a notification to auto-focus the corresponding app (VS Code / Claude / ChatGPT / Terminal) and resume work seamlessly.
Activity History & Stats Dashboard
Persistent activity timeline (last 200 entries) with source-based filtering. The stats dashboard shows today/this week/all-time duration and task counts, a 7-day daily trend, and usage distribution by tool.
Remote Notifications & Fully Configurable
Dual remote channels — Webhook and ntfy.sh — so you get alerts even away from your desk (compatible with Feishu/DingTalk/WeCom bots). Add custom watch targets, tune sensitivity thresholds, enable login launch and global shortcuts. Built-in electron-updater keeps it current.
How It Works
From probe signal collection to multi-session aggregation, smart filtering and takeover alerts
Multi-Probe Signal Collection
Six probes collect AI activity signals in parallel: file-change frequency, process presence, Shell Hook command wrapping, Claude jsonl appends, Codex rollout lifecycle events, and VS Code companion socket deep reporting. Each probe declares its signal authority; strong signals suppress weak-signal false positives.
Source-Grouped Aggregation
The aggregation engine groups state machines by monitor source, tracking multiple sessions in parallel without interference. A sliding window counts file changes (default 3s / 3 changes) to detect working, and silence timeout (default 8s) marks done. A minimum work-duration threshold (default 30s) filters short tasks to avoid noisy alerts.
Smart Filtering & Tiering
Before dispatch, notifications pass through multi-layer filtering: Do Not Disturb (manual / scheduled quiet hours / notify-only-waiting), desktop alerts only when out of focus, and per-target independent toggles. The waiting state bypasses the minimum-duration threshold — when the AI is blocked, sooner is better.
Multi-Channel Notify & Takeover
Alert through four channels: sound (different tones for done vs waiting), desktop system notifications, tray icon status, and remote channels (Webhook / ntfy.sh). Notification bodies include duration and changed-file count; clicking auto-focuses the corresponding app. Activity history is persisted and the stats dashboard is always available for review.
Why AI Watchdog
Stop switching back to check if the AI is done, and never miss a moment when it waits for input
| AI Watchdog | Manual Check | Generic Notify Plugin | |
|---|---|---|---|
| Cross-product monitoring (6 probes for VS Code / Cursor / Claude / ChatGPT / Terminal) | ✓ | ✗ | ✗ |
| Multi-session parallel tracking (multiple AI tasks without interference) | ✓ | ✗ | ✗ |
| Auto-detect AI working / done / waiting states | ✓ | ✗ | ✗ |
| Proactive notification on completion (with duration & changed-file count) | ✓ | ✗ | ✗ |
| Desktop notification (fires when app is in background) | ✓ | ✗ | ✗ |
| Sound alert (different tones for done / waiting) | ✓ | ✗ | ✓ |
| Do Not Disturb (manual toggle / scheduled quiet hours / notify-only-waiting) | ✓ | ✗ | ✗ |
| Remote notifications (Webhook / ntfy.sh, alerts away from your desk) | ✓ | ✗ | ✗ |
| One-click focus to the corresponding app | ✓ | ✗ | ✗ |
| Activity history timeline (persistent + source filtering) | ✓ | ✗ | ✗ |
| Stats dashboard (duration trends + tool distribution) | ✓ | ✗ | ✗ |
| Custom watch targets | ✓ | ✗ | ✗ |
| Fully local, no data upload | ✓ | ✓ | ✓ |
| Built-in auto-update | ✓ | ✗ | ✗ |
Install
Download the desktop app; it lives in your system tray and auto-updates
AI Watchdog is a system-tray desktop app that monitors VS Code, Cursor, Claude, ChatGPT and the terminal through six probes. It supports multi-session tracking, Do Not Disturb, remote notifications and a stats dashboard.
- Download the installer for your platform from GitHub Releases (macOS .dmg / Windows .exe)
- Open the app; the AI Watchdog tray icon appears. Built-in electron-updater keeps it current automatically
- Tick the tools you want to watch in Settings (VS Code / Cursor / Claude / ChatGPT / Terminal / Custom), tune sensitivity, and you are set
Frequently Asked Questions
Key questions about probes, sessions, privacy and performance
Which AI coding tools does AI Watchdog monitor?+
Six probes provide coverage: file probe + process probe (generic, covers all AI tools), Shell Hook (zsh/bash/fish for precise terminal monitoring), Claude session jsonl (Claude Desktop), Codex rollout lifecycle (ChatGPT desktop / VS Code extension / CLI), and VS Code companion socket (deep signals). Built-in targets include VS Code, Cursor, Claude, ChatGPT and Terminal; you can also add custom targets.
What is multi-session parallel tracking?+
The aggregation engine groups state machines by monitor source, so Claude and ChatGPT running simultaneously do not interfere — each independently tracks working / done / waiting. The tray menu shows each active session's source, status and elapsed time; when concurrent, the tray title reads "Working (N)".
How does it detect whether the AI is working or done?+
Via a sliding-window mechanism: if file changes reach a threshold (default 3) within a time window (default 3 seconds), the AI is judged "working". When activity stops beyond a silence timeout (default 8 seconds), it is judged "done". A minimum work-duration threshold (default 30s) ensures tasks shorter than the threshold only change state without firing a notification, avoiding noise. The Codex probe uses explicit lifecycle events (task_started / task_complete), which is more precise than silence timeout.
What notification channels are available?+
Four channels: sound alert (different system tones for done vs waiting, adjustable volume), desktop system notification (fires only when the app is out of focus), tray icon status, and remote notifications (Webhook / ntfy.sh — alerts even away from your desk, compatible with Feishu/DingTalk/WeCom custom bots). Each watch target can toggle notifications independently.
How does Do Not Disturb work?+
Three DND modes: manual toggle (one-click from the tray menu), scheduled quiet hours (e.g. 22:00–08:00 auto-silence), and tiered silence ("notify only waiting" — completion notifications are silenced, but you are still alerted when the AI waits for input and may be blocked). In DND, state still transitions normally; only notifications are suppressed.
How do I configure remote notifications?+
In Settings, configure a Webhook URL (POSTs JSON on done / waiting, compatible with Feishu/DingTalk/WeCom custom bots) or an ntfy.sh topic (install the ntfy app on your phone to receive pushes). Both channels can be toggled independently. All data remains processed locally; only notification events are sent to your configured address.
What is "one-click takeover"?+
When you receive a notification, clicking it auto-focuses the corresponding AI tool window (VS Code / Claude / ChatGPT / Terminal), bringing you back to your work context instantly. The notification body also shows task duration and changed-file count, so you know what the AI did before switching back.
What are activity history and the stats dashboard for?+
Activity history persists the last 200 entries (timestamp, state, signal source, duration) with source-based filtering, so you can always retrace what the AI did. The stats dashboard, built on history data, shows today/this-week/all-time duration and task counts, a 7-day daily trend, and usage distribution by tool — helping you quantify your AI usage habits.
Does it collect or upload my data?+
No. AI Watchdog runs entirely locally. All file-change monitoring, state detection, notifications and history happen on your machine; nothing is collected or uploaded. Remote notifications only send notification events to your own configured Webhook / ntfy address. The code is open-source and auditable.
Does it support auto-update?+
Yes. Built-in electron-updater checks GitHub Releases on launch and downloads updates in the background, applying them on next restart. Settings lets you view the current version, manually check for updates, and see the changelog.
Will it impact system performance?+
No. AI Watchdog uses lightweight filesystem watchers (chokidar) and sliding-window counting with minimal memory and CPU usage. ignorePatterns excludes node_modules, dist, .git and similar directories by default to avoid unnecessary overhead. The process probe only polls ps / tasklist when needed.
How do I install it?+
Download the macOS installer (.dmg) or Windows installer (.exe) from GitHub Releases, open it, and the AI Watchdog tray icon appears. On macOS, if the first launch says "damaged" or "developer cannot be verified", run the xattr command in Terminal to lift the Gatekeeper restriction (the install page has a one-click copy command). Then tick the tools you want to watch in Settings.
Take AI coding out of the blind spot
Free, open-source, fully local: no data ever leaves your machine. Built-in auto-update keeps it evolving.