Herdr 0.8.2 is an open-source terminal multiplexer built around coding agents. It owns real PTYs, keeps sessions alive, tracks agent state, and lets people and agents act on the same server-owned panes through client and automation protocols. That shared session is enough to call Herdr an early agent runtime. Its current limit is also in that path: much of the lifecycle still comes from interpreting a terminal screen, and its waits track state rather than one turn.
Mitchell Hashimoto announced Superlogical
on July 29. The company will start with a terminal multiplexer, then make its parts composable and safe for
production. Herdr already ships a narrower version of that bet. Herdr uses libghostty; Superlogical
says it will build on the same public components. Superlogical is a rival theory, not yet a code-level competitor.
The pane became an addressable agent
Mature multiplexers already keep sessions alive and expose automation surfaces. Herdr packages a more specific
contract: every agent gets a stable name, state, terminal identity, and command surface. A person can watch the
TUI while another agent runs herdr agent prompt reviewer "Check the diff" --wait. Both use the same
server-owned session.
The server protocol is not a thin wrapper over keystrokes. Protocol version 20 frames requests over local sockets, caps normal payloads at 2 MB, and negotiates either semantic frames or terminal ANSI for rendering. The server owns the workspaces, tabs, panes, and PTYs. Clients come and go.
An agent multiplexer becomes a runtime when control and lifecycle share the same durable session.
That claim can be proven wrong. If state is too weak for automation, or recovery restores a layout without restoring the work, Herdr remains a good multiplexer with agent labels.
A prompt is one server operation
-
Resolve Agent targetPin pane and terminal identityvalidate
-
Submit PTY inputWrite text, then encoded Enterobserve
-
Track Lifecycle eventGate activity from a non-working startsettle
-
Return Agent stateIdle, done, or blocked
The request handler first rejects an empty prompt. It resolves the named agent to a pane and checks that the
pane still contains the expected foreground process. If the agent is already blocked, Herdr returns
agent_blocked before it writes anything. Otherwise it encodes the prompt for the pane's live
terminal mode, sends the text, waits 300 milliseconds, then sends Enter.
The wait path records the event sequence and terminal identity before submission, so a replacement process cannot
satisfy the old wait. From a non-working start, Herdr caps its activity gate at five seconds or the caller's
shorter timeout. Only a longer caller timeout can produce agent_prompt_stalled. It then waits for
idle, done, or blocked by default.
The wait code tracks the pane occupant and state sequence, not a unique prompt or agent turn. If the agent is already working, completion of that earlier turn may satisfy the new wait. Callers still need output checks or an agent-native result ID when the distinction matters.
State has two authorities
Herdr can learn agent state from a native integration or from the terminal itself. Integrations call
pane.report_agent
with a source, sequence, state, and optional native session reference. Session-only integrations report an ID
without changing waits or status. When no hook owns the state, Herdr inspects the foreground process and visible
terminal shape.
| Authority | What Herdr gets | Limit |
|---|---|---|
| Native report | Semantic state and optional session identity | Every agent exposes a different lifecycle |
| Screen detection | Broad support from process and terminal output | Prompts, titles, and spinners change |
Version 0.8.2 shows the cost. Its fixes teach Qwen Code's localized confirmation states and strip new Claude Code title-spinner frames. Herdr can support a terminal agent without owning its API, but it must follow that agent's UI changes.
The detector damps that noise. A transition from working to plain idle waits for repeated confirmation, and stable blocked signals refresh on a timer. The project docs still say an unfamiliar prompt can appear idle instead of blocked until Herdr learns its screen shape. That mistake changes the sidebar and waits. It does not make Herdr answer the prompt by itself.
Persistence has four meanings
“The session survives” is too vague for an agent runtime. A client can detach while the server and PTY keep running. A restarted server can restore workspace and pane state. Supported integrations can resume native agent conversations from stored IDs. Experimental handoff tries to transfer live panes to a new server during an update. Those are separate guarantees.
Herdr keeps the separation in code.
persist.rs
stores session state, optional screen history, and plugins in different files. The native-resume layer accepts
session references only from recognized Herdr integration sources, limits their size, and builds an agent-specific
resume command. A saved screen and a resumed Codex conversation are not the same artifact.
| Recovery path | What can survive | What still needs proof |
|---|---|---|
| Detach / reattach | Live server, PTY, process, terminal state | Multi-client behavior under long output |
| Server restart | Layout, optional history, supported agent session ID | Conversation and child-process outcome |
| Experimental handoff | Live pane process on supported Unix paths | Failure rollback and cross-platform behavior |
I inspected these paths but did not run the recovery test for this issue. The adoption verdict stays inside that evidence boundary: detach is a core product path, while restart and handoff need a controlled trial before any of them carry unattended work that matters.
Superlogical is the rival theory
Superlogical calls the missing layer a durable session around the work itself. Its three-step plan starts with a terminal multiplexer, makes its parts composable, then makes the system safe for production. The first product promises web, macOS, and iOS clients, live sharing, and native scrollback and selection.
As of August 20, no public Superlogical multiplexer repository or beta was linked from its announcement or site. Its architecture is
not available for a code comparison. The public claim I can test is narrower: it will use the same MIT-licensed
libghostty components that
Herdr already vendors.
libghostty-vt's public terminal API
accepts terminal output, maintains screen state, and exposes it to an embedder. It does not create or manage the
PTY. The public C API is also marked incomplete and subject to breaking changes, which explains why Herdr pins a
source commit. Superlogical must still build process supervision, durable sessions, transport, auth, sharing,
storage, and client policy.
libghostty lowers the cost of terminal correctness. It does not ship the multiplexer.
Herdr and Superlogical may fit together. Herdr is opinionated about coding agents and works inside an existing terminal over SSH. Superlogical says agents are one kind of work inside a wider session, with native and web clients from the start. They still compete for the durable terminal session. Partnership remains a theory until either project publishes an integration.
Use the narrowest owner that solves the job
Start two overlapping turns in one agent pane. Submit the second through agent prompt --wait while
the first is working. The wait passes only if the caller can bind the returned state and output to the second
request. Herdr does not provide that turn identity today; an agent-native receipt or output assertion must close it.
Run the same Codex and Claude tasks through detach, server restart, and experimental handoff. Record the child process, terminal screen, native conversation, and accepted task result separately. A green layout alone does not pass.
Try Herdr now when several CLI agents run on a local or remote machine and both a person and another agent need to inspect them. Keep the multiplexer you already trust when general terminal persistence matters more than native agent state. Watch Superlogical when live sharing, native clients, or production policy is the job, but wait for a beta before treating it as an alternative. Herdr has crossed the line from multiplexer to early runtime, but reliable turn identity and recovery will decide whether it stays there.