I'm using Herdr to run multiple agents in parallel, and my goal is to see whether I can get them to collaborate more efficiently.
For example, when one agent's PR gets merged, other agents immediately become aware of it, rebase their own PRs and fix conflicts.
What also often happens is that new tangential requirements and sidequests often arise while working in a session, and I now let agents hand these off to parallel Herdr tabs. The handoff can be done with or without XMPP. These parallel agents announce their statuses in the XMPP MUC (groupchat), which enables them to coordinate.
Technical details:
Converse XMPP client runs as a headless NodeJS daemon with a CLI that can be called by agents.
I created a /coordination skill which is enabled by default via a Claude Code hook. When an agent starts, it ensures the Converse daemon is running and then joins a password-restricted and members-only MUC where all the other agents in that Herdr workspace are as well (and also myself). I can then assign that agent tasks via messages in XMPP (DMs or groupchat) or from Claude Code.
Once the agent has the task, it announces it in the MUC so that other agents are made aware. When sidequests or requirements arise in that session, it can ask in the MUC whether other agents are idle and able to take over that parallel task.
I've been building the Converse daemon and CLI and have now been experimenting with the workflow and working out various kinks and use-cases.
There are various other XMPP features that can be explored further. I'm thinking of using PubSub with a web UI with vertical swimlanes which can show me which agents are currently active, what they're working on and for how long.
I'm using Claude Code because that's what we use at $WORK, but this should be independent of any harness and part of the point is create neutral tools not locked into any particular inference provider.