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

  1. Settle โ‰  success โ€” a worker hits idle after 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).
  2. Warm by default โ€” a cold interactive agent opens on a welcome screen and drops its first prompt; conductor_start_worker warms it. --no-warm to skip.
  3. 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.