The canvas toolbar
The strip across the top of an open flow carries the controls you reach for while arranging it, plus the switch that arms it.

Keyboard and gestures
With nodes selected on the canvas:
| Key | Action |
|---|---|
D | Disable or enable the selection. Any node still on, all go off; all off, all come on. |
⌘D | Duplicate, offset 40 points, named "… Copy". |
⌘C / ⌘V | Copy and paste. Paste lands at the centre of the view and offsets each repeat. |
⌘A | Select every node and every wire. |
Delete | Delete the selected nodes and wires. |
Arrows | Nudge 1 point. Hold ⌘ for 20. |
F | Zoom to fit. |
1 | Reset zoom. |
⌘G | Wrap the selection in a Section. Also on the Edit menu and the canvas right-click menu. |
⌘Z / ⇧⌘Z | Undo and redo. |
Esc | Put the Section tool away. |
Drag a wired node far enough and the wire tensions — tauter and hotter under your cursor — then snaps, as an ordinary undo step. Only wires with one end in the selection strain; drag toward a neighbour and that wire goes slack instead.
Wires never break mid-run. While the flow is running a dragged wire draws fully taut and holds, so a tidy-up can't hand a downstream node an empty input.
Undo and redo
Every structural gesture is one step: deleting (however many nodes and wires — one ⌘Z brings them all back, settings and connections intact), adding, wiring, dragging, nudging, resizing, paste, duplicate, disabling, note colours. Discrete inspector changes are steps too, and the Edit menu names each one, so you know what Undo will take back. A whole Flow Builder turn is one step: Undo AI Build.
Typing is different on purpose: inside a text field ⌘Z undoes your typing the way it does anywhere on the Mac.
Undo history is per open canvas. It holds 100 steps and clears when you leave the flow or quit. Deleting a node keeps its Explain chats recoverable until you leave.
Disabling a node
A disabled node performs no work and passes its input through unchanged. No script runs, no file moves, no LLM is called — and the run never fails because a node is off. Disable from D, the right-click menu, or the Enabled checkbox in the inspector.
| Node | Disabled behaviour |
|---|---|
| Actions, transformers, AI, utilities | Input passes through on the normal outlet. Zero side effects, zero tokens. |
| Condition | Continues out Yes only; the No branch is skipped. |
| For Each, While | Zero iterations; input continues out Done. |
| Triggers and emitters | Never armed, never fire. |
It dims and shows a gray slash; its ports stay connectable and wires through it still carry the payload. In the timeline it shows a Disabled status with its output equal to its input — unlike a skipped node, which sat on an untaken branch and received nothing.
Testing AI for free. Disable an AI node and the rest of the flow still exercises end to end at no inference cost.
A flow with every trigger disabled cannot arm. Disabling takes effect immediately, even while armed, but only prevents new fires — a run already underway finishes.
Canvas background
Each flow can be painted behind the grid and the nodes. Choose Default, Color, Gradient (thirteen bundled washes) or Image in the inspector, with a fit of Cover, Fit, Stretch, Actual Size or Tile. Show grid is a separate switch beside them. Default follows Settings ▸ Themes, which keeps one for Light and one for Dark; a flow's own choice always wins.
Uploads are copied in, and travel. Your pictures live in one library shared by every flow, are copied rather than linked, and ride inside an exported .watchflow. Community Flows submissions leave them out.