team broker

Runs the one process that holds the tracker credential and answers team next over a local socket. The owner starts it, in a terminal outside herdr, one per clone. Ctrl-C stops it. Nothing starts it for you, and nothing restarts it.

Synopsis

team broker

Flags

FlagValueEffect
--help, -h—the usage, and exit 0

An unknown argument is refused with the usage and exit 2; --json is one of them, because no --json runs on the daemon loop. Ctrl-C, or SIGTERM, ends the serve loop, removes the socket file, and exits 0.

Who may run it

CallerMay
the owner, in a foreground terminal outside herdr, one per clonerun it
a run with no terminalnothing: team broker: only the owner runs this, from a terminal outside herdr
a seat, a pane, or any call under herdr at allnothing: team broker: only the owner runs broker, from a terminal outside herdr; this call is <caller>

Output and exit codes

OutcomeWhat is printedExit
it served until it was stoppedteam broker: answering on .agents/broker.sock once the socket is bound and serving; team broker: stopped when the loop ended and the socket file was removed — every line to stderr, nothing on stdout0
it refused to start, or the team file's policy is refusedteam broker: <reason> — the caller is not the owner, no task source, a source the broker does not serve, the Keychain credential was refused, a broker is already answering, or the socket could not be bound1
the invocation can't be read, or this folder is not a git checkoutteam broker: <problem>, with the usage2

Example

This page's fixture team is the file-sourced one the other pages use, so the run below is the refusal a file source earns: the broker serves a tracker source, and a file source's records are already in the checkout. A broker source writes .agents/team.yaml with the tracker in place of the path:

.agents/team.yaml
format: 1
project: beacon
coordinator: claude-keeper
operator: claude-keeper

trust:
  - ~/.config/team/lobby
  - ~/Code/beacon

workspace:
  mode: shared

tasks:
  source: file
  path: .agents/tasks.yaml

seats:
  - role: coordinator
    name: claude-keeper
    label: coordinator
    cli: claude-code
    vendor: anthropic
    model: Claude Opus
    version: "5.5"
    launch: claude --model claude-opus-5-5
text
tasks:
  source: linear
  linear:
    project: 01234567-89ab-cdef-0123-456789abcdef
    keychainService: team.linear.acme
  policy:
    omit: [description]
    transform:
      id: bare
Terminal
 team broker ; echo "exit $?"
team broker: tasks.source must be linear; the broker serves a tracker source
exit 1