Node palette
September 2, 2026 · View on GitHub
Harnesses are built from 14 core nodes and 13 harness-layer nodes — every node compiles to all four runtimes (LangGraph, CrewAI, Mastra, MS Agent Framework). Hover a node name for its description.
For the full field-level reference (edges, validators, fn_ref rules), see
flowspec.md.
| Core nodes | |||
|---|---|---|---|
⤵ input |
⤴ output |
✨ llm_call |
🔧 tool_invoke |
⎇ condition |
⑂ parallel_fork |
⊖ parallel_join |
⏸ hitl_breakpoint |
📖 memory_read |
🔖 memory_write |
📦 subgraph |
⇌ transform |
🤖 agent_role |
👥 agent_debate |
||
| Harness nodes — implement the 11-layer control architecture | |||
|---|---|---|---|
🧠 world_model |
💡 hypothesis_set |
🗄️ gather_evidence |
⚙️ apply_tool_rel |
🔄 update_wm |
🛡️ control_state |
🕸️ task_graph |
✅ verify_gate |
♻️ recovery |
📋 evidence_store |
📊 exp_store |
👁️ reviewer_pass |
🧭 process_concept |
|||
A deeper pseudo-code / state-model architecture walkthrough is maintained privately and isn't part of this public repo — for the architecture that ships here, see architecture.md.
The canvas sidebar has an Expert / Intent toggle. Expert mode is the full palette above. Intent mode swaps it for a small set of high-level templates (e.g. "Research → verify sources → draft → human approval → publish") that click-to-insert as a connected chain of real nodes — the harness nodes themselves are also grouped by category (Observation · State · Policy · Control Flow · Effect) rather than one flat list.
Keeping the schema in sync
spec/schema.ts is the canonical FlowSpec Zod schema. Four copies must stay in
sync — the canvas app copy (src/spec/schema.ts), the @buildaharness/canvas
package copy, and the @buildaharness/runtime package copy — each dropping the
.refine() calls on discriminated-union members (z.discriminatedUnion()
requires bare ZodObject members). Cross-field validation lives in
src/spec/validation.ts instead. After editing the schema:
- Sync the four copies.
- Regenerate the JSON Schema:
cd spec && npm run gen:json-schema. - Add a
spec/CHANGELOG.mdentry. - Verify:
node scripts/check-schema-sync.mjs.