intermux
What it does: Persistent Go MCP server (mark3labs/mcp-go) giving cross-agent observability over tmux. Exposes exactly 7 read-only tools (list_agents, peek_agent, activity_feed, search_output, agent_health, who_is_editing, session_info). Background goroutines: tmux watcher (10s scan, backs off to 5min when idle), health monitor (30s, classifies active/idle/stuck/crashed), metadata pusher to intermute (PATCH /api/agents/{id}/metadata every 30s), plus a parent watchdog that reaps the process when its parent dies (getppid==1). In-memory ring buffer of 200 events, no SQLite/persistence. Status/event detection is heuristic regex/substring parsing of captured pane text (spinner words like Thinking/Reading, prompt patterns, error patterns, bead-ID and file-edit regexes). Session-name parsing of {terminal}-{project}-{agent}-{N}, optionally extended from a fleet-registry.yaml. Agent correlation via /tmp/intermux-mapping-<session_id>.json written by a SessionStart hook.</purpose_confirmed>
Rationale: This is a mature, tightly-scoped, well-engineered plugin that does exactly what it claims, and it sits in the one capability area the SOTA findings repeatedly single out as ahead of the field: observability for parallel multi-agent work. The 2026 consensus (“explicit state + replay + observability beats clever conversation”; “context-window isolation makes parallel agents work, but the hard problems are now coordination/visibility”) directly endorses continued investment here, and async-cloud-agent + worktree-per-session patterns make who-is-doing-what visibility table-stakes. The engineering is honest and battle-tested for real pain: the idle tracker and parent watchdog are concrete responses to documented operational issues (tmux-continuum CPU churn, Claude Code subprocess/zombie explosion in MEMORY). The only material weakness is a Linux-only assumption: hard /proc/
Redundancy: Complementary, not duplicative. Shares the intermute backend with interlock (interlock = active coordination/file-reservations; intermux = passive live-context enrichment of the same agent records). Partial overlap with interhelm (agent-as-operator runtime diagnostics) but interhelm is operator/self-diagnostic mode while intermux is third-party cross-agent visibility. Session-name parsing ({terminal}-{project}-{agent}-{N}) overlaps conceptually with intername’s identity layer — a candidate for a shared parser library but not a merge driver.
Actions:
- Fix the macOS portability gap: replace the raw /proc/
calls in internal/tmux/watcher.go (processAlive, getCWD) with a build-tagged abstraction — use syscall.Kill(pid,0) or gopsutil for liveness and lsof/proc_pidinfo (or ps)/gopsutil for CWD on darwin — so crashed-detection and CWD/git-branch work on Clavain, not just Linux servers. - Enrich health beyond regex: fold structured signals the ecosystem already emits (beads active state, interlock reservations from the shared intermute backend, hook-emitted events) into agent_health/list_agents so ‘stuck’ is corroborated by evidence rather than inferred solely from terminal text.
- Add reliability-flavored fields to agent_health (e.g. activity variance / time-since-last-meaningful-event distribution, flap count between active<->idle) to align with the Beyond-pass@1 reliability-science framing instead of a single binary status.
- Extract the {terminal}-{project}-{agent}-{N} session-name parser into a small shared lib (or consume intername’s) to remove drift between intermux and intername; low effort, prevents future divergence.