Typed pipes
Every port has a type, and the type is the colour of its dot and of the wires it takes: red for event, blue for text, and so on. A wire only lands where the types fit, which catches most wiring mistakes while you drag. The server checks every wire again before a graph turns On.
What fits where
Section titled “What fits where”- The same type fits.
textintotext,eventintoevent. anyfits both ways. A port of typeanytakes every type, and ananyoutput can go into every input. The Template’s tags, Preview, Router and the HTTP Request tags areany.- A subtype fits into its parent, not the other way round. An
intoutput goes into anumberinput, and alistinto ajsoninput, but a plainjsonvalue does not go where alistis expected. The column Also fits into below names each type’s parent.
Some ports change type with the node’s settings. An HTTP Request’s body is text, or an image or audio data: URL, depending on its response knob. The LLM grows an image input when its model reads images. Wireless Out ports take the type of what was wired into the matching Wireless In.
Every type
Section titled “Every type”| Type | Carries | Also fits into | Used by |
|---|---|---|---|
event | a signal to run; its value is whatever the sender attached | Agenda, Append File, Audio Input, Changed, Chat, Chat Input, DB, Delete File and 23 more | |
text | a string | Append File, Chat, Chat Input, Chunk, Delete File, Embed, Foreground Window, Format List and 21 more | |
number | a number | Meter | |
int | a whole number | number | DB, HTTP Request, Integer, Queue, Vectors |
float | a decimal number | number | Float |
bool | true or false | Boolean, KV | |
json | structured data: an object, a list, a number | Agenda, Build JSON, DB, Foreground Window, Format List, Get, KV, List Dir and 5 more | |
list | a list of values | json | Chunk, List, Sentences |
image | an image as a URL or a data: URL | Image, Screen Capture, Window Capture | |
audio | an audio clip as a data: URL | Audio, Audio Input, STT, TTS | |
pcm-audio | raw audio samples | no core node yet | |
embedding | a vector of numbers, or a list of vectors | Embed, Vectors | |
memory-set | search hits: text, score, ref and metadata for each | Rerank, Vectors | |
state | the state of an agent | no core node yet | |
message | one chat message | no core node yet | |
tool | a tool offered to a model | LLM | |
tool-call | a Tool's call: offers the tool and carries the arguments | tool | Tool, Tool Args |
tool-result | what a tool returned | no core node yet | |
mood | a mood name, from Tag Parse | Tag Parse | |
action | an action name, from Tag Parse | Tag Parse | |
lang | a language code such as en or pt-BR | text | Audio Input, STT, TTS |
schedule | a due reminder | no core node yet | |
observation | notes as markdown bullets | no core node yet | |
secret | a masked credential | no core node yet | |
db | a handle to a Database store | Agenda, Database, DB | |
kv | a handle to a KV Store | KV, KV Store | |
vectors | a handle to a Vector Store | db | Vector Store, Vectors |
any | anything: the wildcard | Build JSON, Changed, Compute, DB, For-each, Get, HTTP Request, KV and 10 more |
A node pack can register types of its own. It cannot change the colour or the parent of a type that already exists, so a pack never rewires anyone else’s graph. See Build a node pack.