AgentsOpen SourceFreeActiveMachine-verified· intermediate · ~15 min setup

Hermes Kanban: The Research-to-Draft Relay

Two researchers work in parallel, then a writer's card unblocks once both finish.

by Shilpa Mitra· verified today· v1.0.0

Run this workflow

CI-verified, 3/3 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 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.x

Side 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. 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. 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 today
  • relay-linkedcontainstimeout 60s · max $0

    Expected: relay OK: writer

  • two-parentscontainstimeout 60s · max $0

    Expected: linked to 2 parents

  • clean-exitexit_codetimeout 60s · max $0

    Expected: 0

Results

From the WebAfterAI guide: 3 multi-agent Kanban workflows on Hermes Agent.

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).