SwarmWatch is an activity monitor and control plane for AI coding swarms. It shows exactly what your agents are doing in real time, giving you an always-on desktop overlay to watch, approve, and direct their work.
🎬 Demo
Watch the demo on YouTube:
https://www.youtube.com/watch?v=BTbIjOn0AyI
Works with: Cursor • Claude • Cline • GitHub Copilot • VS Code plugins | Platforms: macOS • Windows • Linux
🚀 Installation (2 Steps)
- Direct install via shell
macOS and Linux:
curl -fsSL https://github.com/SwarmPack/SwarmWatch/releases/latest/download/install.sh | bashWindows (PowerShell):
iwr -useb https://github.com/SwarmPack/SwarmWatch/releases/latest/download/install.ps1 | iex
- Enable Agents(UI)
Open the SwarmWatch desktop app → Settings → toggle the agents/IDEs you want. Hooks are written for you—no manual edits.
For local build and alternative methods, see docs/local-installation.md.
✨ Features
- Real‑time view of multiple coding agents and instances.
- Bidirectional Approve/Decline from the overlay itself
- Execution logs for observability of autonomous agents.
- Tamagotchi‑style dog reacting to actions.
- Fully local: communicates only on localhost
- Zero‑friction enablement: UI buttons apply hooks automatically
🏗️ How It Works (Architecture)
SwarmWatch basically works on a hook system: IDEs/agents invoke tiny per‑agent shims that call a local runner, which reports events and receives approval decisions over a localhost control plane.
Three pieces:
- Runner (sidecar): native binary that reports events and receives approvals over a local WebSocket.
- Shims (identity launchers):
cursor-hook,vscode-hook,claude-hook,cline-hookthat exec the runner with agent identity. - Desktop app (Tauri v2): the always‑on‑top overlay that shows states, avatars, and approval prompts.
Refer to docs/ARCHITECTURE.md for full diagrams and flows. For local installation methods, see docs/local-installation.md (we prefer the UI toggles as the first‑run path).
What Gets Modified (Impacted Files)
- VS Code (per‑project): .github/hooks/*
- Cline (per‑project): .clinerules/hooks/*
- Claude Desktop (per-user): ~/.claude settings.json
- Cursor (per-user): ~/.cursor/hooks.json
Tip: add generated hook files and project settings to your .gitignore (e.g., .vscode/settings.json, .clinerules/hooks/*) to avoid noisy diffs.
⚠️ Gotchas
- When overlay is not running: runners make a quick /health probe and fail‑open (no blocking) if the UI is down (~150ms timeout).
- Approval waiting time: 60 seconds per guarded action before adapters fall back to the IDE’s native prompt where applicable.
- Inactivity: if no hook events arrive for 3 minutes, the agent becomes
inactive. - Git ignore: consider ignoring
.github/hooks/*and.clinerules/hooks/*when SwarmWatch manages them.
Hook storage matrix (fill specifics as you validate in your envs):
| Agent / Platform | macOS | Windows | Linux |
|---|---|---|---|
| VS Code | .github/hooks/* | .github/hooks/* | .github/hooks/* |
| Claude Desktop | ~/.claude/settings.json | %APPDATA%/Claude/settings.json | ~/.config/claude/settings.json |
| Cline | .clinerules/hooks/* | .clinerules/hooks/* | .clinerules/hooks/* |
| Cursor | ~/.cursor/hooks.json | ~/.cursor/hooks.json | ~/.cursor/hooks.json |
🧭 State Model
States: Idle, Thinking, Reading, Editing, Awaiting, Running, Error, Done, Inactive.
Rules:
- Guarded actions enter
awaiting(overlay shows Approve/Decline). Wait cap: 60s. - Health/fail‑open: quick probe (~150ms) skips awaiting if the UI is unreachable.
- Inactivity: no events for 180s →
inactive.
🔒 Security & Privacy
- All hooks run locally; inter‑process communication is over a local WebSocket/HTTP on 127.0.0.1:4100.
- SwarmWatch may send minimal, anonymous telemetry (daily unique avatar sessions + clicks on Recap/Approvals/Activity/Settings) to improve the product — no prompts, code, or file paths are sent. Telemetry is queued locally (best-effort) and sent asynchronously.
- Note: the local port 4100 endpoint is unauthenticated today; we plan to add authentication/authorization.
🔭 Future Work
- Support more agents/IDEs (e.g., Anti‑Gravity Windsurf, broader Cursor/Cloud coverage)
- More diverse avatars and reactions
- Authenticate local control plane on port 4100
- UI enhancements and bug fixes
- Performance optimizations across UI and runner
- Support light-weight database.
Contributions welcome! Open an issue or PR for ideas, fixes, or features. Or we can discuss in Discord.
📄 License
This project is open source under MIT. See LICENSE.