Skip to content

feat(mise): add herdr, the agent multiplexer - #27

Merged
natevick merged 1 commit into
mainfrom
norm/mise-herdr
Aug 28, 2026
Merged

feat(mise): add herdr, the agent multiplexer#27
natevick merged 1 commit into
mainfrom
norm/mise-herdr

Conversation

@natevick

Copy link
Copy Markdown
Owner

cmux is macOS-only, so an Omarchy move leaves us without it. herdr is the closest replacement: one Rust binary (no Electron), a background server whose panes survive detach and network loss, per-pane working / blocked / idle state, and a socket API agents can drive. herdr --remote <host> is a thin SSH client, which is already how the agent box gets used.

Pinned to 0.8.2 rather than latest — it's pre-1.0 (220 open issues) and ships about weekly. This would be the runtime agent sessions live in; an unattended bump mid-week isn't worth the convenience. Same reasoning as the zig pin above it.

mise resolves it through the aqua backend to a prebuilt binary, so the npm-backend lifecycle-script problem (aube) doesn't apply.

Verified on the agent box

$ mise use -g herdr@0.8.2
mise herdr@0.8.2 ✓ installed
$ herdr pane list
{"panes":[{"pane_id":"w1:p1","agent_status":"unknown",...}]}
$ herdr pane run w1:p1 bash -lc 'uname -sm'
$ herdr pane read w1:p1
Linux x86_64
$ herdr server stop        # nothing left running

Template renders and parses:

$ chezmoi execute-template < .../cli-tools.toml.tmpl | python3 -c 'tomllib…'
OK — herdr pin: 0.8.2

The parse check was sabotaged (unterminated string) to confirm it can actually fail — TOMLDecodeError, as expected.

Not in this PR

Nothing is switched over. cmux stays as-is; this only makes herdr available so it can be lived in before any decision.

🤖 Generated with Claude Code

https://claude.ai/code/session_015TTYfJBxmRZLfz73ZQyzyZ

cmux is macOS-only, so an Omarchy move needs a replacement for it. herdr is
the closest fit: one Rust binary, a background server whose panes survive
detach and network loss, per-pane working/blocked/idle state, and a socket API
agents can drive. `herdr --remote <host>` is a thin SSH client, which matches
how the agent box is already used.

Pinned rather than "latest" because it is pre-1.0 (v0.8.2, 220 open issues) and
ships roughly weekly. This is the runtime agent sessions would live in; an
unattended bump is not a thing I want happening mid-week. Same reasoning as the
zig pin above it.

mise resolves it via the aqua backend to a prebuilt binary, so the npm-backend
lifecycle-script problem does not apply here.

Verified on the agent box: installed 0.8.2, started the server, drove it over
the socket API (`pane list`, `pane run`, `pane read` round-tripped `uname -sm`),
then stopped it. Template renders and the result parses as TOML; the parse check
was sabotaged to confirm it can fail.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015TTYfJBxmRZLfz73ZQyzyZ
@natevick
natevick merged commit 6afdbe1 into main Aug 28, 2026
3 checks passed
@natevick
natevick deleted the norm/mise-herdr branch August 29, 2026 02:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant