Hermes Kanban: The Research-to-Draft Relay
Two researchers work in parallel, then a writer's card unblocks once both finish.
Run this workflow
CI-verified, 3/3 fixtures passing.
Intended Use
Anyone using Hermes Agent's Kanban who wants a fan-out/fan-in relay: parallel research cards whose results gate a downstream writer card via parent links.
Not for
- Single-agent loops (the board is overkill)
- Work that can't be split into parallel tracks
The Stack
Tested Against
hermes@0.15node@20.xSide effects & data flow
- Network
- your LLM provider, only in the non-CI worker step
- Writes
- ~/.hermes/kanban.db (the board)
- Credentials
- LLM provider key (hermes setup), for the worker step only
Data privacy
- your LLM provider, only in the non-CI worker step ← the task text and the workers' results (retention: per that provider's API policy)
Prerequisites
- Hermes Agent (MIT): `curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash`
- `hermes setup` to configure an LLM provider (only needed to actually run the workers)
- `hermes gateway start` so the dispatcher picks up ready tasks (ticks every 60s)
- Node 20+ (used here to read the --json board state)
Steps
- 1
Create the relay and verify the parent links
Init the board, create two research cards and a writer card, and link the writer to both researchers as parents. CI asserts (via `show --json`) that the writer card really carries both parent ids — the gate that makes the relay work.
hermes kanban init >/dev/null mkid() { node -e 'let s="";process.stdin.on("data",d=>s+=d).on("end",()=>process.stdout.write(JSON.parse(s).id))'; } export RA=$(hermes kanban create "Research the funding landscape, NA angle" --assignee researcher-a --json | mkid) export RB=$(hermes kanban create "Research the funding landscape, EU angle" --assignee researcher-b --json | mkid) export W=$(hermes kanban create "Draft the launch post" --assignee writer --parent "$RA" --parent "$RB" --json | mkid) hermes kanban show "$W" --json | node -e 'let s="";process.stdin.on("data",d=>s+=d).on("end",()=>{const o=JSON.parse(s);const p=o.parents||[];if(!p.includes(process.env.RA)||!p.includes(process.env.RB)){console.log("MISSING PARENT");process.exit(1)}console.log("relay OK: writer "+o.id+" linked to "+p.length+" parents")})' - 2
Run the relay (the worker step, not checked by CI)
Start the gateway and the two research cards dispatch immediately and run in parallel; the writer card stays gated until both complete, then wakes with their results on the board. This step runs models, so CI doesn't run it — the badge covers the board + link structure above.
Eval, 3 fixtures
Last passed: verified 11d agorelay-linkedcontainstimeout 60s · max $0Expected:
relay OK: writertwo-parentscontainstimeout 60s · max $0Expected:
linked to 2 parentsclean-exitexit_codetimeout 60s · max $0Expected:
0
Results
From the WebAfterAI guide: 3 multi-agent Kanban workflows on Hermes Agent.
Liked this workflow?
Get new verified workflows in WebAfterAI, three issues a week (Tue, Thu, Sat).