surface

Nodes.

A node is one unit of work with typed pins, its own parameters, its own preview and its own state. Learning to read one is most of learning to read a Kaitoi graph.

Written for
Anyone reading or building a graph in Kaitoi Studio.
You need
Every plan to use and view nodes; Studio or Enterprise to clone or edit node code

A node is one operation in a graph: it can transform media, call a model or service, run Python, manage data, or provide a plugin to another operation. Its declared interface tells you what it accepts and returns. Its current state tells you whether the displayed result still matches the inputs.

Read a typical processing node

The title identifies the operation; an instance can have its own label. A preview shows a supported output. Input pins, usually on the left, accept typed values; output pins provide results to downstream nodes. An unconnected input can show a parameter widget. A wire supplies its value instead.

Header controls and the footer depend on the kind of node. A normal processing node may offer an Auto evaluate switch and Evaluate node button (R); plugin, session, or locked nodes can differ. Footer indicators can describe provider use, local execution, community prices, elapsed time, and the last reported cost. One indicator does not describe the whole bill or prove every charge has settled.

Read the seven parts of a typical processing node.

The title bar identifies the operation or this instance's label. Run controls choose automatic evaluation or an explicit run. Input pins accept typed values; an unconnected input can show a parameter widget. The preview displays a supported output, and output pins pass values downstream. The status strip can show execution location, elapsed time, and the last reported cost. This example represents a typical processing node; plugin, session, and locked nodes can have different controls.

Use the node toolbar

Hover or select a node to expose its toolbar. Open preview (Space) opens supported results; Node evaluation history (/) shows earlier results. Lock node freezes the node on its saved output; Unlock node lets it execute again. Duplicate node (⌘D), Delete node, and Toggle node pins (M) operate on the selected work.

Edit script opens a user node's source, read-only below Studio. Writing code by hand and Clone and edit script require Studio or Enterprise. Built-in nodes offer that clone action with script/package choices, so you can work on a user copy. Cloning source and duplicating a graph instance are different actions. See Creating custom nodes with Penny.

Create subgraph folds a selection into a component; Explode Subgraph unpacks one. Review exposed sockets and any unsupported crossing connections before depending on the folded interface.

Connect the intended values

Direct Graph wire dragging requires matching declared pin types. An image output can feed an image input; an incompatible pin rejects the drop. Use an appropriate conversion step when the operation needs a different type. Blocks can normalize supported aliases during automatic connection, so its convenience wiring is not a universal promise about raw Graph pin names.

An output can feed several destinations. An ordinary input takes one source; another connection replaces that source. Array inputs can accumulate sources up to the declared limit. A node cannot wire to itself. Inspect the actual input, output, and wire when a connection behaves unexpectedly.

When a wire is removed, the input can show its manual widget again. Changing that manual value while the input remains connected does not override its source. For a precise change, ask Penny to distinguish value edits from disconnecting and reconnecting wires.

Try compatible and incompatible declared pin types in Graph.

An image output connects to an image input, including a reference or mask input declared with that type. It cannot connect directly to a string, int, or video input. Choose a source type and a destination to see whether the wire can land. This illustrates direct Graph wiring; Blocks' automatic alias normalization is a separate convenience.

Collapse a node without removing its work

Toggle node pins reduces visual detail while preserving the node and its connections. Connected pins remain accessible at the border. Exposed pins and controls configured to stay visible can remain shown. Hover-header behavior also depends on canvas settings. A collapsed node is still the same operation, not a flattened media file.

Hide ordinary pins while keeping an exposed control visible.

With pins shown, an example Upscale node displays its connected image input, unconnected strength and seed widgets, title bar, and status strip. With pins hidden at rest, the image input moves to the border and ordinary labels and widgets disappear. The exposed strength control keeps its label, widget, and ring. The title and status strip can reappear under the applicable canvas and execution conditions.

Expose a pin for a reusable interface

Click a pin's label to toggle its exposed state; its ring indicates exposure. Exposed pins can remain visible when other pin detail is hidden and help define reusable subgraph, Station, or endpoint interfaces. Review the actual resulting interface: supported connections crossing a subgraph boundary can also become sockets automatically. Exposure identifies an interface; it does not run the node, publish a Station, or create an API endpoint by itself.

Decide what should run

Select the intended targets before Run Graph, or use a node's run button to target that node. Required upstream dependencies are included. No selection is not a request to run the whole Studio graph.

An explicit unlocked target runs again even if its inputs are unchanged. Clean upstream dependencies can reuse available cached output. A locked node reuses its saved output even when targeted; without that output it fails. Auto evaluate can schedule unlocked nodes after changes. Turn it off when you want to choose test timing. See Runs.

Follow the dependency order

Follow the dependencies of a selected Save target, one layer at a time.

Select Save as the unlocked target in this example. Its upstream Load Image and Prompt are ready first. Load Image is a clean dependency with available cached output, so its result is reused. Prompt runs, then Describe, then Generate when its inputs are ready, then Save. Nodes in the same ready layer can be evaluated together. This illustrates dependency ordering; it does not submit a run. Explicit unlocked targets run again even when unchanged, while a locked node requires saved output.

Read state and cost carefully

Dirty or queued/evaluating indicators help identify pending work. A preview can still show an older output while current inputs are dirty or a run failed. Open the relevant result and read the execution state before sending it to another view.

The last-run cost is historical information. A local-runtime indicator means work uses a configured local service; it is not a zero-credit guarantee. Provider calls, community prices, configured platform fees, hardware and rental costs are separate. Check Credits and costs and the actual project spend rather than inferring the total from an icon.

Last reviewed against Kaitoi on 26 October 2026. View this page as Markdown

Type at least two characters.