Skip to content

herdr ​

Runs each ticket's agent in a herdr terminal session, in its own Git worktree.

For projects whose conductor should start agents in visible herdr tabs and panes.

Enable it ​

List the package once in addons of the project's .bakers/conductor.config.js. One entry wires both the executor and the workspace; the same with goes to both.

js
addons: [
  '@bakers-build/addon-remote-drupal',
  {
    use: '@bakers-build/addon-herdr',
    with: {
      worktreeDir: '.bakers-worktrees',
      default: { panelLabel: '{title}' },
    },
  },
],

Options ​

OptionTypeDefaultEffect
rootstringfrom Git's common directoryMain clone path.
worktreeDirstring.bakers-worktreesWorktree directory, relative to the root.
baseBranchstringremote-tracking branch of the checked-out branchBase ref for new ticket branches.
openobjectruns bakers ui --ticket {identifier}Layout of a fresh worktree's first tab. {} leaves a bare tab. Keys: command, panes, tabLabel, panelLabel.
defaultobjectbuilt-in layoutPer-run layout: tabLabel, workspaceLabel, panelLabel, panes.
states.<state>objectnonePer-run layout for one state; beats default.
launchWatchobjectstartTimeoutMs: 60000, timeoutMs: 4000How long to wait for the launch to start, then how long an immediate agent exit fails the run.

Label placeholders and pane fields are in herdr options.

Check it works ​

A ticket picked up by this conductor opens a herdr tab named after its identifier, inside the ticket's worktree.

Good to know ​

  • The herdr executor pairs only with the herdr workspace. Do not add Git workspace next to it.
  • The agent command runs through non-interactive /bin/sh, so the harness must resolve through PATH.
  • When a ticket is frozen, its herdr workspace shows a bb_frozen sidebar token; resuming clears it.
  • Setup of herdr itself: Set up herdr.

Source: bakers-cli/addons/herdr