The seven types
Each port declares a type, drawn as its colour: what the node says it produces (an outlet) or expects (an inlet). The type gates which wires you can draw; it never changes what flows through. Most ports are any, so most wires just connect.
| Type | Colour | Declares |
|---|---|---|
string | Green | Text |
number | Blue | Integers and decimals |
boolean | Red | True or false |
json | Yellow | Objects and arrays |
any | Gray | Anything, in both directions |
file | Purple | A path on disk |
image | Orange | An image |

What connects
A wire runs outlet to inlet between two different nodes, and must not close a loop. Matching types connect, any connects to everything, and five mismatches are allowed: string to json, and json, number, boolean or file to string. Anything else snaps back.
Types gate the wire, not the run. Nothing converts a value on the way through — number to string means the wire is legal, not that the number is rewritten.
Emitters wire to a short list. An emitter connects only to Log, Log to File, JSON Viewer, File Log, Time Series and Condition. Put a Condition after it and the rest of the flow opens up again.