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 11d ago· v1.0.0

Run this workflow

CI-verified, 4/4 fixtures passing.

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 11d ago
  • 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.

Liked this workflow?

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