One tiny Go daemon watches Claude Code, Codex, Cursor & opencode across all your terminals — live. See what each one is doing, answer its prompts from your phone, and let agents talk to each other.
Coding agents work in parallel across tmux panes and windows — then quietly stop and wait for you. Which one needs a yes/no? Which finished? Which one is stuck? You context-switch all day just to find out.
Every agent leaves a different trail — Claude's JSONL, Codex sessions, Cursor's SQLite. There's no one place that shows all of them at once.
An agent asks permission or a yes/no question and just… waits. If you're not looking at that exact pane, it sits idle for minutes.
Walk away and everything halts. There's no way to glance at progress or unblock an agent from your phone.
agent-monitor is a single Go process on :7777. It reads what your agents are doing, drives their terminals, and speaks their coordination protocol — no cloud, nothing to sign up for.
Adapters tail Claude's JSONL, Codex sessions, opencode storage and Cursor's chat DB — then broadcast a unified, live timeline over a WebSocket. Read-only; your agents don't even know it's there.
Each agent runs in a registered tmux pane. The daemon can capture-pane to show you the live screen and send-keys to type, answer prompts, or cancel — from the browser or your phone.
Over MCP (stdio JSON-RPC), agents call the daemon to coordinate — talk_to_agent, read_pane, list_agents — and the daemon routes Claude's permission_prompt back to you.
Built for people who run agents like a swarm — not one at a time.
Every run opens into a full timeline: token & cost KPIs, an activity ribbon, and a tool-call waterfall with nested subagents — prose turns and their tools stitched into one readable stream.
Permission prompts and multiple-choice questions surface on your phone with the live terminal — tap 1/2/3, Yes/No, or type a reply.
Related runs — /clear continuations, shared plans, same pane — link into one chain you can page through or merge into a single giant timeline.
Claude asks Codex to review a file — routed, logged, approved.
A recognizable chime the moment an agent needs you.
Sessions snapshot to local SQLite — history survives restarts.
The native iOS app mirrors the dashboard over your tailnet. When an agent stops to ask something, you get a nudge — and answer without touching the keyboard. Try the demo →
A distinct local notification fires the instant an agent needs a decision — a rising three-note chime that cuts through, so you never miss a blocked run.
The card streams the agent's actual terminal — the exact question and its numbered options — so you know precisely what you're approving.
Tap an option number, hit Yes/No, or type a full reply. It drives the tmux pane exactly like you were sitting there.
The phone talks straight to the daemon over Tailscale. No cloud relay, no account — your agents stay yours.
One binary. It wires itself into Claude Code and Codex (idempotently, backing up every file it edits), then serves the dashboard.
A single Go binary, no dependencies to chase.
Patches Claude & Codex config so every session is tracked — reversible, with dated backups.
Launch the daemon and open the dashboard. Bind to a Tailscale IP to reach it from your phone.
# 1 · build the daemon go build -o agent-monitor . # 2 · wire into Claude Code + Codex ./agent-monitor install # 3 · run it (tailnet-reachable) AGENT_MONITOR_BIND=100.x.y.z ./agent-monitor ➜ listening on http://localhost:7777 ➜ http://100.x.y.z:7777 (Tailscale) # 4 · launch an agent so it's drivable ./agent-monitor run claude