Seahelm 2.0.58 turns parallel coding agents into an interrupt queue
Opening five coding-agent terminals takes seconds. Keeping track of which agent is compiling, waiting for permission, or finished with a decision is the harder part. Seahelm, a small open-source macOS app, is designed around that problem.
The v2.0.58 release, published September 6, adds a Telegram bridge, one command language for desktop, Telegram, and email, plus a /return workflow that ships a worktree before deleting it. Together, those features turn the app into a queue for human attention, not simply another way to arrange terminals.
Parallel agents improve throughput only while requests for approval, clarification, and review stay manageable. A grid shows activity. It cannot decide which interruption deserves a person next.
Process status misses the human decision
Seahelm's feature matrix lists status detection for 12 agents. Claude Code and Codex have native hooks and suggestion cards. OpenCode uses a plugin. Nine other agents depend on screen scanning.
The differences matter. A process can be alive while blocked on permission. It may print a question without emitting a structured event, or stop after completing useful work. Whether a PID exists tells the supervisor very little about what the developer must do.
Seahelm combines hooks with screen parsing and classifies panes as running, waiting, idle, or broken. First Mate separates observation from actions that require approval. Waiting and error transitions can raise notifications; proposed next steps become cards for the operator.
The useful notification is the one that corresponds to a change in the person's job, not every change in terminal output.
Suggestions need a canonical turn ID
The suggestion-flow documentation describes a revealing correlation bug. Seahelm asks an agent to emit possible next steps at the end of a turn. A Stop hook is the fallback when the agent does not send them.
The first implementation keyed "this turn already produced suggestions" by session ID. The agent-side suggestion knew the pane ID, but the native Stop hook carried the agent's session UUID. Those keys never matched. Almost every genuine end of turn fell into the fallback and forced another model round trip.
Seahelm now uses turnKey = paneId ?? sessionId. It drops a suggestion if background work is still active and clears the marker when a new user prompt arrives. That correlation prevents duplicate prompts without suppressing a real new turn.
Any supervisor merging hooks, subprocess events, screen scans, and remote messages needs one durable turn identity. Otherwise, duplicate prompts and stale approvals can look like poor model behavior even though the defect sits in event routing.
Remote commands widen the trust boundary
Version 2.0.58 passes the same commands through the desktop Helm, Telegram, and email. The command-surface matrix says each uses one CommandExecutor, while "current pane" and confirmation behavior remain channel-specific.
A Telegram chat or email thread can bind itself to a pane with /go. /order sends one instruction. /new creates a worktree and assigns an agent. Commands with wider effects demand confirmation. /broadcast reaches every pane; /forget removes a repository from Seahelm and kills its sessions without deleting the repository's files.
The new /return path can commit worktree changes, push them, open a pull request, and delete the worktree. Desktop users get a native confirmation sheet. Telegram expects /yes within 60 seconds. Email accepts /yes or a force suffix because email replies take longer.
That convenient bridge is part of the security model. Treat its bot token or mailbox access like an operations credential. Then test the uncomfortable cases: a stolen chat session, a reply delivered after its confirmation window, a command bound to the wrong pane, and an audit record that cannot explain who approved deletion.
Worktree identity makes alerts actionable
Seahelm follows a pane when its agent changes into a new worktree. Hook payloads carry the working directory; the app applies a same-repository check and a cooldown, preventing a temporary cd during a tool call from bouncing the pane between task cards.
Developers think in tasks and branches, while generic supervisors see processes. "Agent waiting" is weak information when the pane has lost its worktree identity. The operator needs to know which repository, proposed change, and cleanup path belongs to the interruption.
Our earlier analysis of human review and agent reliability reached the same issue from benchmark data: review consumes time inside the system. Seahelm exposes that queue at the workstation.
An operating model worth borrowing
Seahelm requires macOS 14 or newer, and Claude Code and Codex receive its richest integrations. The operating model can still travel:
- Give every run stable task, worktree, pane, and turn identifiers.
- Record "running" and "waiting for a person" as separate events.
- In a replay test, deliver the same Stop event twice and verify that only one approval request appears.
- Match confirmation strength to both the action and the channel that carries it.
- Keep model routing separate from attention routing. api.ish.chat can select model endpoints; a supervisor decides which human interruption comes next.
- Track operator wait time and repeated prompts. Those numbers expose whether parallelism saves time or merely moves congestion to the reviewer.
Seahelm's interesting bet is that parallel coding changes the developer's job. Less time goes into watching commands execute; more goes into resolving exceptions across concurrent tasks. The quality of the system then depends on whether it delivers the right decision, attached to the right worktree, once.



