Once you get it set up, Emacs is a pretty damn good "agent" multiplexer as well. I use agent-shell with Projectile on Doom Emacs as my main workflow these days, and it works very well even if I have 6 projects open or whatever.
Claude and Codex are also both quite good at working with Emacs as well. Depending on your isolation/sandboxing strategy, they can either run commands against your session via emacsclient (a bit scary) or dump elisp in the REPL for you to evaluate. Both are really efficient in terms of giving you a fast feedback loop.
The utility is not obvious, but I've been using herdr for a few weeks after a friend recommended it, and it's been a great tool.
I had about a dozen different terminal windows, each one with multiple tabs, which was becoming a mess to manage; multiple agents and harnesses running that I could only inspect by remote access/VNC away from home.
With this, I can keep things more organized (project workspaces, tabs), because it's backed by a persistent process, I can ssh into the machine, with tailscale, run herdr and see all active sessions, do some debugging and one-off prompts.
Even better, I can do that from my phone and iPad using Prompt/Termius. It gives me the best part of 'xxclaw' harnesses with none of the complexity.
Will people really need a bunch of different agents?
Even using two codex session for different project make me feel a bit overwhelmed, or may be i just old
Maybe not when answers will be almost instant, but the biggest gap to me now is latency, not capability. Having to wait for 5 minutes and more for an answer, I can switch to another project / feature / etc. and run work streams in parallel.
I found that a good tool helps a lot once I switched to Github Copilot app. It solved the friction and mental tax for me. I easily manage 4 sessions in parallel on same or different projects while 2 was max in the past. The bottleneck now is only in review and decision making.
Same. I haven't been able to see how people let agent loops run without significant steering and produce good quality software. VS Code with one or two integrated terminals running is fine for me. Or a couple of VS Code instances if I'm working one a couple of projects concurrently. The advantage of VS Code is the code / diff visibility if you like to be hands on.
yeah I also don't really see a use case for me, like do ppl really run that many agents in parallel that they cannot comfortably multiplex them using just a terminal emulator
Multiplexing the agents is clearly the first obvious pain point, but the other one I keep encountering after this is visibility: with multiple agents running, it becomes difficult to see what each of them is doing, what program did they call, and where they are getting stuck until they complete or fail.
Is there any information from Herdr about what each agent is up to beyond the output? Or does it just concentrate on orchestration for the time being?
I’ve been using herdr for about a week. There is visibility into which terminals need attention and you can set up workspaces to organize it. I’ve enjoyed it so far though the key bindings are all over the place - likely due to it trying to avoid existing bindings.
I started building my own version of this before I discovered herdr, and while its not quite the same it's improved my development workflow by an order of magnitude. https://jmux.build
has anybody figured out how to get this to open a fixed layout? I'm using tmuxp to do this easily with tmux but would switch to this pretty quickly if it was easy to get my layout over. It's really nice. It's like zellij without the bloat (but with different ai bloat that doesn't seem to drag down performance at all and isn't in your face unless you want it in your face)
I switched from tmux to Zellij a while back, and lately added a stop hook that sends a terminal ping to the correct tab when the agent is done (and I'm not looking at the tab). It has been pretty convenient so far.
Getting a lot of flack in all these comments, I really like this tool. Have been super easy to use and scale to multiple agents. I've had a ton of issues with tmux and copy and paste, this just works. I was using warp terminal, and even working on my own fork of it with it's recent open source status, but this has won me over.
I'd suggest adding a few screenshots on the Github README, otherwise I wouldn't have enough attention to imagine how it looks. I had to go to the website to appreciate your work, otherwise I'm like "what is it?"
How do people use terminal multiplexers together with vim?
Ctrl+B is so hardwired in my fingers for scrolling back one screen that there's no way I'm remapping that one in vim itself. So then you have to remap that in your terminal multiplexer, while at the same time there's a bunch of people saying never change the leader key...
I'm using tmux + zoxide+ https://github.com/joshmedeski/sesh. Then on Ghostty, I have keybinds for my workflow. Cmd+k to open/switch workspace. Each workspace is just a new tmux session.
I use tmux with vim and configure it to use Ctrl-a. Not for vim, but because I started with GNU screen that used this key. For the cases when I need actual Ctrl-a, tmux is configured to send it when I do “Ctrl-a a”.
As a vim user, I just remap C+B to C+A. It's much easier on the fingers too. Issue arises when I ssh somewhere that doesn't have the leader remapped but that's usually pretty rare when I have to vim in a tmux session on a remote host so not really an issue
does it support a setup where each agent can be in a different SSH session? or must they all run in the same place.
it seems to support running a remote herdr over SSH but unclear if it can add remote agents (each agent has its own sandbox where its installed and you first SSH into it and then start the agent there)
I usually have one local clause orchestrating multiple remote Claude in different tmux . And then another orchester and remote vm worker sin tmux for another repo etc...
It gets a bit hard to keep the overview but I don't want to give up my parallelism, your too might help
I was just looking at conductor and was not very jazzed about the fact that it was running the agents directly on the host. Being able to launch from a terminal means this one can (hopefully) run from inside the sandboxing setup I use for coding agents.
It's not so straight-forward. Either you must add hooks the the agent to notify tmux directly or you must use an external tool that polls tmux to determine one of its panes has gone silent and then based on that, send notification to tmux.
The poling requires tmux (not screen nor dtach, as far as I could find). And, silence for N seconds is just that, the poll doesn't know if that really means waiting for input or something else. With agents (like claude) that have a throbber/spinner going while "thinking", silence is a good indicator.
Kitty terminal can be polled for current text and then see if that has changed in N seconds. This would allow not having to depend on tmux which may be preferable to some kitty users. Generally, using tmux always surfaces some annoying problems for me.
Does this mean adding instructions to AGENTS.md saying to end everything with the bell character? Or do harnesses have this in their settings somewhere?
I think generally harnesses have this. In claude code it's `"preferredNotifChannel": "terminal_bell"` in the settings.json, pi and opencode looks like you have to either add a hook yourself somewhere or use an extension.
Depends on the harness I imagine. If there's some sort of "post run" hook I'm sure it can be added there. Or, if the harness is open source, a PR to add it would work too.
Claude and Codex are also both quite good at working with Emacs as well. Depending on your isolation/sandboxing strategy, they can either run commands against your session via emacsclient (a bit scary) or dump elisp in the REPL for you to evaluate. Both are really efficient in terms of giving you a fast feedback loop.
reply