AgentsOpen SourceFreeActiveMachine-verified· advanced · ~15 min setup

Hermes Kanban: The Swarm

Fan a goal out to N parallel workers, gate a verifier on all of them, then a synthesizer on the verifier.

by Shilpa Mitra· verified today· v1.0.0

Run this workflow

CI-verified, 4/4 fixtures passing.

Build this with your agent

One copy-paste hands Claude Code, Codex, or Cursor the full recipe, steps included, nothing to fetch.

Intended Use

Anyone with a goal that genuinely splits into parallel tracks needing a verification gate: `hermes kanban swarm` builds the whole graph (workers, a verifier that wakes after all of them, a synthesizer that wakes after the verifier) in one command.

Not for

  • Small goals that don't need parallelism or a verification gate
  • Pipelines you'd rather wire by hand

The Stack

Tested Against

hermes@0.15node@20.x

Side effects & data flow

Network
your LLM provider, only in the non-CI worker steps
Writes
~/.hermes/kanban.db (the board)
Credentials
LLM provider key (hermes setup), for the worker/verifier/synthesizer steps only

Data privacy

  • your LLM provider, only in the non-CI worker steps the goal and each worker's findings (retention: per that provider's API policy)

Prerequisites

  • Hermes Agent (MIT): `curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash`
  • Profiles for the worker/verifier/synthesizer roles (dispatch skips unknown assignees)
  • `hermes gateway start` to actually run the swarm
  • Node 20+ (used here to read the --json board state)

Steps

  1. 1

    Build the swarm graph and verify its shape

    One `hermes kanban swarm` command builds the graph. CI asserts (via the command's --json and `list --json`) that it created 3 parallel workers plus a verifier and a synthesizer, with all the named roles present on the board.

    hermes kanban init >/dev/null
    hermes kanban swarm "Design a multi-region failover plan" --worker researcher:Research --worker architect:Architecture --worker sre:Reliability --verifier reviewer --synthesizer writer --json | node -e 'let s="";process.stdin.on("data",d=>s+=d).on("end",()=>{const o=JSON.parse(s);if(!o.worker_ids||o.worker_ids.length!==3||!o.verifier_id||!o.synthesizer_id){console.log("BAD GRAPH");process.exit(1)}console.log("swarm graph: "+o.worker_ids.length+" workers, verifier yes, synthesizer yes")})'
    hermes kanban list --json | node -e 'let s="";process.stdin.on("data",d=>s+=d).on("end",()=>{const o=JSON.parse(s);const t=Array.isArray(o)?o:(o.tasks||o.items||[]);console.log("assignees: "+[...new Set(t.map(x=>x.assignee))].sort().join(","))})'
  2. 2

    Run the swarm (the worker steps, not checked by CI)

    Start the gateway: workers run in parallel and write findings to the blackboard; the verifier wakes only after all workers finish; the synthesizer wakes only after the verifier signs off. All three call models, so CI doesn't run them — the badge covers the graph the command builds.

Eval, 4 fixtures

Last passed: verified today
  • swarm-graphcontainstimeout 60s · max $0

    Expected: swarm graph: 3 workers, verifier yes, synthesizer yes

  • has-reviewercontainstimeout 60s · max $0

    Expected: reviewer

  • has-srecontainstimeout 60s · max $0

    Expected: sre

  • clean-exitexit_codetimeout 60s · max $0

    Expected: 0

Results

The big-problem fan-out from the WebAfterAI guide.

Did this work for you?

Our CI checks the setup runs. You tell us if the whole thing worked. Tell us straight.

Related workflows

Liked this workflow?

Get new verified workflows in WebAfterAI, three issues a week (Tue, Thu, Sat).