Frames & sub-workflows
Two nodes on the canvas never execute: the ▦ group frame and the ✎ note. Frames organize a graph; a frame that links to a saved graph also becomes a wiring shortcut.
▦ Group frames
Section titled “▦ Group frames”Select nodes and group them, or drop an empty frame from the palette and drag nodes into it.
| Control | Effect |
|---|---|
| double-click title | rename |
| drag corners | resize (min 180 × 120) |
| ◍ | cycle color — gold · teal · terracotta · blue · gray |
| ⊟ / ⊞ | collapse / expand |
| drag the frame | members travel with it |
Membership is a tag on the member node, not just geometry. Dragging a node so its center lands inside a frame adopts it into the innermost containing frame; dragging it out releases it. Tagged members always move with the frame even if they overhang its bounds. Collapsing hides the members and leaves a compact title bar; the wiring stays intact. Ungrouping dissolves the frame, leaves the members in place, and drops any wires that touched the frame shell.
A plain group frame has no handles — it is purely visual.
Save selection as sub-workflow
Section titled “Save selection as sub-workflow”Right-click a selection of two or more nodes → ⌗ save selection as sub-workflow.
What happens:
- A new graph of kind
subgraphis created, named<graph> · sub. - The selected nodes and the wires between them are copied into it, along with the workflow’s params so
{{param:…}}still resolves. - Back on the parent canvas, the selection is wrapped in a linked frame carrying the new
graphId. - The originals stay put and stay live — they keep running in place, now tagged as members of that frame.
Wires that crossed the selection boundary are not copied; they remain only in the parent graph, and the run log tells you how many.
Linked frames show ⌗ and a sub-workflow tag in their title bar, plus two extra buttons: ⌗ open (or double-click) navigates to the sub-workflow tab, and ↻ re-syncs the frame’s members and internal wires from it. Structure and params follow the source; local layout of surviving members is kept; boundary wires survive as long as their member node still exists.
Subgraphs appear in the palette’s workflows tab — click to open, drag onto a canvas to embed as another linked frame.
Linked frames at run time
Section titled “Linked frames at run time”Unlike plain frames, a linked frame has input and output handles, and wiring to it skips the usual node-pair validation. Edges are resolved onto real members just before the run:
| Edge | Resolves to |
|---|---|
| node → frame | broadcast to every entry member |
| frame → node | fan-in from every exit member |
| frame → frame | zipped by y-order, so N×M never explodes into a cartesian product |
- Entry members are members no other member feeds.
- Exit members are members that feed no other member.
- Both are ordered top-to-bottom, then left-to-right.
- A frame wire with no member on one side is silently dropped.
Boundary problems surface before the run starts, as frame warnings in loose ends:
sub-workflow "Review" has no member nodessub-workflow "Review" has inbound wires but no entry membersub-workflow "Review" has outbound wires but no exit memberMuted and bypassed frames are not checked.
✎ Note
Section titled “✎ Note”A sticky for annotating the canvas. Double-click to edit, ◍ cycles the same five colors, drag the corners to resize (min 140 × 80).
Notes never execute, never wire, and are skipped by the runner entirely. Every bundled example ships with one explaining what it teaches.
Related
Section titled “Related”- Nodes overview
- Graph & wires
- Loose ends — frame boundary warnings
- Run a workflow