Skip to main content
Edges are the wires between blocks. edges lets you draw and remove wires from the terminal — useful for scripting Flow construction and for cleaning up after bulk changes.

Commands

edges connect

Draws a wire from tr_events (output) to ag_support (input). Default ports: right (source’s right edge) → left (target’s left edge). Override with side flags:
  • --source-side left|right — which side of the source block the wire leaves.
  • --target-side left|right — which side of the target block the wire enters.
Right-to-left is the default because Flows are usually laid out left-to-right. Prints the created edge’s ID.

edges delete

Removes the wire. Both blocks stay; only the connection is severed.

edges list

Prints every wire in the Flow: edge id, source id, target id, sides. Filter to wires involving a specific block:
Add --json for structured output.

Recipes

Wire a full simple Flow from scratch

Reroute a wire — replace one edge with another

There’s no edges update; delete and reconnect:
Cleaner: use flows snapshot → hand-edit JSON → flows apply.

Audit: find blocks with no incoming wires

Prints block IDs that nothing points at — likely unreachable, worth pruning.

Audit: find blocks with no outgoing wires

Blocks that produce output nothing consumes.

Ports and sides

Every block has ports on its left and right edges. The default port on each side is the primary in/out. Blocks with multiple output paths (Router, Agent with parallel branches) expose additional named ports. Right now the CLI uses side-based wiring (left/right) — not named ports. For Flows that need named ports, use the app canvas or flows apply with a hand-crafted JSON.

Cycles and validation

Pre-publish checks include acyclicity — you can create a cycle in Draft, but Publish will reject it. Break the cycle first. The rare exception: bounded loops (Agent → Router → back to Agent for a verify-and-retry pattern). Those pass validation if you set an explicit iteration bound.