Docs / Plugins
๐ฉ Conductor (structupath.conductor)
Mental model: "Run a team โ a builder, a validator, a reviewer โ each as a real, visible, attachable agent pane, with one orchestrator driving them." Unlike Swarm's N-identical fan-out, Conductor's workers are role-differentiated and mixed-vendor (claude/codex/pi side by side), and they survive the orchestrator โ a crashed driver doesn't kill the team.
Repo: StructuPath/herdr-conductor ยท Full reference: the repo README
The split that makes it work
| Half | Where | Who drives it |
|---|---|---|
| Transport (the loop) | scripts/conductor-lib.sh |
An orchestrating agent sources it and runs the loop |
| Operational surface | the board + stand-down actions |
You / the TUI menu |
Dispatch is agent-driven, not an action โ herdr plugin actions get no argv/TTY, so the intelligence that decomposes a feature and assigns roles is the agent's job, not a shell script's.
The 2 actions
| Action | What |
|---|---|
board |
Live pane: one row per worker โ role, kind, pane, status (from herdr agent list, not screen-scraping), cwd. Refreshes every 2s; q quits. |
stand-down |
Closes only conductor-owned worker panes for the active run (ownership-verified); git branches + worktrees kept. |
herdr plugin action invoke board --plugin structupath.conductor
herdr plugin action invoke stand-down --plugin structupath.conductor
The agent-driven loop (what the orchestrator does)
. scripts/conductor-lib.sh
conductor_start_worker builder claude "$engine_wt" # warms by default
conductor_start_worker reviewer codex "$repo" -- --sandbox read-only
conductor_dispatch builder "$builder_prompt"
conductor_await builder && conductor_collect builder # settles on the report SENTINEL
conductor_teardown
Three things to remember
- Settle โ success โ a worker hits
idleafter any turn (even a clarifying question). Completion is a<!-- REPORT-COMPLETE -->sentinel in.conductor/report.md, never agent state. The lib enforces this (freshness-checked). - Warm by default โ a cold interactive agent opens on a welcome screen and drops its first prompt;
conductor_start_workerwarms it.--no-warmto skip. - Files both directions โ mission in via
.conductor/task.md, result out via.conductor/report.md(auto-gitignored). Panes are for humans to watch and attach to.
The composition
CONDUCTOR decides โ SWARM isolates โ GUARD enforces
(this plugin) (worktree per writer) (read-only audit for review roles)
Requirements
herdr โฅ 0.7.5, Node โฅ 20, Python 3, Bash 3.2+. macOS / Linux.