observability for AI agents

Mission control for every coding agent you run.

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.

5
agents supported
1
Go binary
0
cloud, all local
agent-monitor · :7777 LIVE
the problem

You run five agents. You're staring at one.

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.

01 · BLIND

No single view

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.

02 · BLOCKED

Prompts get missed

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.

03 · TETHERED

Chained to the desk

Walk away and everything halts. There's no way to glance at progress or unblock an agent from your phone.

how it works

One daemon. Three rails of traffic.

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.

RAIL 01 — INGEST

It reads every agent's trail

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.

RAIL 02 — CONTROL

It drives their tmux panes

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.

RAIL 03 — MCP

It speaks the agents' language

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.

Browser & iPhone
dashboard · pane viewer · approvals
agent-monitor · Go · :7777
session store · pane registry · talk store · MCP server
Agent CLIs in tmux
claude · codex · cursor · opencode
what you get

Everything, in one glance.

Built for people who run agents like a swarm — not one at a time.

📊

Deep session trace

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.

tokenstoolserrorssubagentsfiles touched
📱

Approve from your phone

Permission prompts and multiple-choice questions surface on your phone with the live terminal — tap 1/2/3, Yes/No, or type a reply.

🔗

Session chains

Related runs — /clear continuations, shared plans, same pane — link into one chain you can page through or merge into a single giant timeline.

💬

Agents that talk

Claude asks Codex to review a file — routed, logged, approved.

🔔

Distinct-tune alerts

A recognizable chime the moment an agent needs you.

🗄️

Durable history

Sessions snapshot to local SQLite — history survives restarts.

on your phone

Unblock an agent from the couch.

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 →

ApprovalsLive
rohit / api-gateway
Claude is asking permission
Do you want to proceed?1. Yes 2. Yes, and don't ask again 3. No, tell Claude what to do Enter to select · Esc to cancel
1
2
3
4
↵ Yes / Enter
↺ No / Esc
Type a reply…
✓ sent to pane %3
🔔

A tune you'll recognize

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.

👀

See the real prompt

The card streams the agent's actual terminal — the exact question and its numbered options — so you know precisely what you're approving.

⌨️

Answer any way

Tap an option number, hit Yes/No, or type a full reply. It drives the tmux pane exactly like you were sitting there.

🔒

Never leaves your tailnet

The phone talks straight to the daemon over Tailscale. No cloud relay, no account — your agents stay yours.

quick start

Running in under a minute.

One binary. It wires itself into Claude Code and Codex (idempotently, backing up every file it edits), then serves the dashboard.

1

Build it

A single Go binary, no dependencies to chase.

2

Install the hooks

Patches Claude & Codex config so every session is tracked — reversible, with dated backups.

3

Run & open

Launch the daemon and open the dashboard. Bind to a Tailscale IP to reach it from your phone.

copy
# 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