NovalinkIn dev

Documentation

Building workflows on the canvas

Updated September 17, 2026

A workflow is a versioned JSON graph, and the canvas is only its editor. Understanding a few rules about ports and edges explains everything the executor does.

The graph

Every workflow has exactly one trigger, some nodes and the edges between them. Node ids are lowercase slugs such as classify_ticket, and templates use them to read upstream output. Renaming a node id in the editor rewrites every template that references it.

Ports and data edges

Nodes have named input and output ports. Most have one in and one out, but some differ: If fires true or false, Switch fires one port per case plus default, and nodes that can fail may fire error.

The executor follows one rule: an outgoing edge is active only if its source port fired, and dead otherwise. A node whose incoming edges are all dead is skipped, and its own edges die too. Branching, skip cascades and error ports all come from that rule.

Joining branches

When branches meet again, route them into a Merge node. It waits until every incoming edge is settled, then passes on the first value that arrived, a list of all of them, or an object keyed by source node.

Tool edges

A dashed tool edge from an HTTP Request node into an agent's tools port hands the agent a callable tool instead of scheduling the node. The agent decides when to call it, and a failing tool returns an error result the model can recover from rather than failing the run.

Validation

The editor validates as you work: missing required config, references to nodes that are not upstream, cycles, and nodes the trigger cannot reach are flagged on the node before you run.

Testing a single node

After one full run, you can re-run a single node against the previous run's upstream outputs, with unsaved config changes. It is the fastest way to iterate on a prompt.

Build it on the canvas

Create a free account and run your first workflow in the browser, or run Novalink on your own machine.