Would Herdr instead of tmux make sense? #16
Labels
No labels
bug
docs
enhancement
good first issue
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
pedromcaraujo/forge#16
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Looked into this. Correcting the premise first: herdr has no browser UI. It's a
single Rust TUI binary — the author explicitly sells "no Electron, no hosted control
plane". Remote access is SSH, or
herdr --remotestreaming the TUI back to a localterminal client. No nginx, no xterm.js, no PWA, no phone keybar, no upload dropzone.
So it's not a forge replacement. The real question is the one in the title: swap
herdr in for tmux, underneath forge's existing browser layer — ttyd would exec
herdr attach <channel>instead oftmux new-session -A.Pros
herdr integration install claudegivesblocked/working/done/idle over a local socket API. That's exactly what
abc8169(#15) just built by scraping Claude's transcript JSONL — replaced by a supported
contract.
web/tmux_ctl.pyis 289 lines oftmuxsubprocess calls for splits/zoom/kill/lazygit plus transcript parsing.
handoff. Closer to where forge would go if it ever wants N agents per repo.
Cons
modules/shell.nixis 119lines of tmux.conf tuned for exactly that (extended keys, OSC 52, mouse scroll,
Shift+Enter). All of it would need re-solving against herdr's own keybinding/theme
config, with no guarantee its sidebar renders sanely at phone width in an iframe.
We'd run herdr with its sidebar off — throwing away its headline feature and using
it as a state API + multiplexer only.
the most boring dependency in this repo, which is a feature for something driven
from a phone on a train.
tmux_ctl.pyandindex.html— ~86 references across ~900 lines. It's a rewrite of the wholesession layer.
Decision — not now
The one genuine draw is the state API, and we just solved that ourselves in #15, and
it works. Rewriting the session layer to un-solve and re-solve our newest feature,
against a 0.7 dependency, on the layer that is hardest to debug from a phone, is a
bad trade.
There's no partial adoption either: herdr is the multiplexer, so
tmux_ctl.pycan't just read its socket while tmux stays underneath. All-or-nothing.
Revisit when herdr reaches 1.0, or when we actually want multiple agents per
channel — that's the point where its model starts paying for the migration.
Refs: https://herdr.dev/docs/ · https://github.com/ogulcancelik/herdr