docs/research/2026-09-30-cmux-herdr.md

cmux and Herdr capability comparison

Checked 2026-09-30 against current first-party documentation and repository documentation. This note describes competitors; the accompanying signaltty audit must establish which capabilities are implemented locally. Documentation establishes advertised behavior, not successful execution in this environment. Repository main can include work newer than a released build.

cmux

  • Actionable Feed. cmux documents permission, exit-plan, and multiple-choice question cards in a sidebar and a keyboard Feed TUI. Decisions return through native agent bridges; activity also has a JSONL audit trail. Integration coverage varies. Ordinary Codex hooks only produce non-blocking telemetry, while cmux codex-teams bridges command and file-change approvals through its private app-server connection. Codex's ordinary plan questions remain in its native UI. A hook waits up to 120 seconds before falling back to the agent's own prompt. These are documented mechanisms, rather than an inference that every agent supports every action. Feed documentation.
  • Built-in browser and automation. Browser surfaces support navigation, DOM snapshots, element interaction, screenshots, JavaScript evaluation, forms, frames, dialogs, downloads, cookies, storage, console inspection, and browser state save/load. This is a substantial product surface beyond opening an external browser. Browser automation.
  • Restore. cmux restores window/workspace/pane layouts, directories, browser URL/history, and best-effort terminal scrollback. Supported agent hooks capture native conversation IDs and enable relaunch through agent resume commands. Custom surface resume commands require a trusted binding for automatic execution. Arbitrary process memory is not checkpointed. Session restore.
  • Sidebar context and settings. The configuration reference documents branch/directory, pull-request metadata and clickable PR links, SSH information, listening ports, progress, log snippets, and custom metadata. Settings include appearance, magnification, hotkeys, terminal behavior, notification policies, and a command palette surface switcher. Configuration.
  • Worktrees. Current documented Worktree Agents setup uses a custom workspace command containing git worktree add; this is shell automation attached to a layout. Do not describe it as the same native lifecycle API Herdr offers. The reviewed CLI contract does not establish cmux worktree create/list/remove as native commands. This is an evidence boundary, not a claim that no other cmux worktree UI exists. Custom commands and layouts, CLI contract.
  • Agent teams. cmux claude-teams translates Claude's tmux operations into native cmux splits, with sidebar metadata and notifications. It forwards Claude options and installs a per-surface tmux shim. Claude Code Teams.
  • Remote workspace workflow. cmux ssh documents remote terminal workspaces, SSH-config support, automatic reconnect, a remote relay, remote-to-local agent notifications, file uploads through scp, and browser traffic routed through the remote network. Native local splits can display teammate agents running remotely. Mosh is an optional terminal transport; SSH remains the management lane. SSH.

Herdr

  • Detection and hooks. Herdr detects known agent processes and classifies the live bottom-buffer screen with declarative manifests. Lifecycle reports take precedence where installed. Manifests have bundled, remote-updated, and local-override variants, plus inspect/reload/explain tools. Visible approval/question rules establish blocked; state detection does not itself approve an action. Current docs explicitly warn that Codex can remain unknown after a response without authoritative evidence of completion. Agents.
  • Completion visibility belongs to the client. Each client independently tracks displayed completions. Viewing one client does not clear another client's Done badge. CLI/API statuses use server seen state and can differ from a GUI client's badge. Concepts.
  • Orchestration. Herdr distinguishes layout operations, raw terminal operations, and recognized-agent lifecycle operations. Scripts or agents can create panes, start named agents, prompt them, wait for states, read results, and send keys. Agent start requires an existing shell pane. The documentation includes guarded alternate-screen transcript reads for idle agents, and output waits for ordinary terminal processes. Agent automation.
  • Native worktree lifecycle. worktree.create/open/remove/list manage checkouts as workspaces with parent/child provenance. Create returns the new workspace/tab/pane; open can reuse an existing workspace; remove invokes Git worktree removal and keeps the branch. Lifecycle events expose worktree creation/open/removal to automation. Closing a parent with open linked workspaces requires explicit group-close intent. Socket API.
  • Git sidebar. Default workspace rows include branch and ahead/behind counts. Custom metadata tokens can extend rows. This source does not establish native PR status or a file-diff review panel. Configuration.
  • Persistence. Detach preserves original processes in the background server. After a server restart, Herdr restores layout and directories; eligible integrated agents resume their native conversation sessions. Original arbitrary processes do not survive. Pane screen-history replay is experimental and off by default. Live server handoff is experimental and opt-in; it attempts to transfer running panes during replacement and may interrupt waits, sockets, and subscriptions. Session backups and periodic layout snapshots provide recovery paths. Session state and restore.
  • Multiple machines. Saved SSH machine profiles bring local and remote workspaces/agents into one client; machines retain independent servers. Background reconnect does not install or replace a server. Connecting machines.
  • Remote CLI. Current CLI docs expose herdr --machine <profile> agent list/prompt, worktree commands, and other API-backed operations. Each request targets one saved enabled machine; interactive attachment, session management, and local installation/configuration commands are excluded. Therefore cross-machine CLI access is already documented, while combined listings or routing through another client's connections are not. CLI reference.

What remains planned or experimental

Herdr's September 7 announcement describes Herdr Cloud as a future connection layer, with a waitlist. Moving agent sessions between machines is an exploration, not a shipped claim. That announcement also said cross-machine agent CLI support was future work; the newer CLI reference already documents selected-machine forwarding, so use current reference docs for that comparison. Herdr live handoff and pane history retain explicit experimental labels. Connecting the machines announcement, Current CLI, Persistence details.

Do not infer Herdr has cmux-style actionable Feed cards or a native DOM browser from its blocked-state detection, terminal notifications, or plugin capabilities. The reviewed primary docs establish agent state and terminal control; they do not establish those additional native interfaces.

signaltty implementation audit

Local baseline: 2255f26, inspected 2026-09-30. This was a code/documentation comparison, not a new live-provider or performance test.

Already implemented: server-owned PTYs, workspaces/tabs/splits, GUI detach survival, structure/history restore and native agent resume, lifecycle and attention, priority sidebar, next-attention navigation, OSC notifications, automatic hooks for four supported providers, CLI/JSON socket API, schema introspection, stable workspace handles, durable event replay, executable plugins, and fan-out/wait/read orchestration. See IPC, agents, persistence, and plugins.

CapabilityLocal evidence and remaining work
Real actionable approvalsDecision model, inline GTK bar and decision.answer exist. Installed reporters only pass --payload-stdin; CLI stores this as payload, while server ingest needs a separate explicit decision. No native approval-to-decision translation was found. Only Codex declares a TypeText answer channel; byte delivery is fixture-tested, live TUI choice confirmation remains follow-up. Other adapters have no answer channel. Always policy persistence is absent. Installer, CLI, router, ADR-0008.
Worktrees and Git contextGit reads root/name/branch/detached/dirty plus worktree-vs-HEAD numstat. No native worktree lifecycle, linked-workspace provenance, PR status, ahead/behind display or listening-port discovery. Sidebar currently displays branch or cwd. Git, sidebar, IPC methods.
Daily GUI controlsWorkspace/tab creation, splits, close, next-attention, sidebar toggle and native tab switching exist. No implemented command palette, terminal search interface, pane zoom, application preferences or notification inbox was found. Workspace rename exists through CLI/API, without a GUI action. Action registry, terminal, app.
Browser automationNo browser pane model, browser renderer or DOM automation methods. Hyperlink support in VTE is not a browser surface. Model, IPC.
Managed remote machinesLocal Unix socket only; no saved SSH profiles, multi-machine client, managed remote relay or browser tunnel. Running ssh as an ordinary terminal command remains possible. IPC, app.
Detection manifestsTOML overlays support existing agent kinds, binary aliases, hook lifecycle overrides, session keys and resume templates. They do not classify terminal screens, hot-reload or provide detection explain tooling. This leaves a narrower fallback for agents without semantic hooks than Herdr's. Manifest implementation, agent strategy.
Independent viewersAttention/read state is global, rather than completion visibility per client. Per-session sockets are also deferred, but named immutable workspace handles already solve addressing on the shared socket. These are recorded choices, not missing basic persistence. ADR-0011, ADR-0010.

The additional gap against signaltty's own t3code visual directive is work rendering: no GUI consumption of workspace.diff, no per-turn baseline/diff, no typed transcript/tool rows or collapse-and-count stream. Working/Worked timing and recent sidebar summaries already exist. The transcript and diff deferrals are explicit in ADR-0011; they should not be misrepresented as proven features of both competitors.

Priority judgment: complete real approvals and live-provider verification, improve daily GUI navigation, then add worktree/Git review workflows. Browser and managed SSH are larger extensions. Separate sockets and per-client completion state are lower priority for single-user local use. This order is a product recommendation based on the project direction, not a source fact.