# Nodes and connections

> Learn what a node is, which kinds of inputs and outputs it has, how connections carry results between nodes, and how connection modes pass one result or a list.

Source: https://nodaro.ai/docs/concepts/nodes-and-connections

A **node** is one step of a workflow: it does one job, such as writing a script, generating an image or merging a video with its audio. A **connection** is the line that carries the result of one node into an input of another node. Every workflow in Nodaro is built from these two parts, and the kinds of inputs and outputs decide which nodes can connect.

## How a node works

A node receives data through its **inputs** on the left edge, does its job, and passes its **result** through its **outputs** on the right edge. Each input has a name, a colour and an icon.

- **The header** shows the node's label. On Nodaro Cloud it also shows the node's price in credits, and badges such as `x5` when a list makes the node run five times.
- **The body** shows the node's main content: a prompt, a picker's choice, or the latest result.
- **The strip under the node** appears when you point at the node or select it. It holds the main settings, such as the model, and the **Run** button.

Workflow: Three kinds of data enter Generate Image through three inputs: text, picker wording and a character. The image output feeds the start frame of a video.

- Text → Generate Image (prompt)
- Lighting → Generate Image (look)
- Character Asset → Generate Image (assets)
- Generate Image → Generate Video (start frame)

A node that makes something new, such as [Generate Image](https://nodaro.ai/docs/nodes/image/generate-image), runs a model and costs credits. Other nodes only hold or reshape data, such as [Text](https://nodaro.ai/docs/nodes/automate/text), [List](https://nodaro.ai/docs/nodes/automate/list) or the [pickers](https://nodaro.ai/docs/nodes/creative-controls), and are free. The [node reference](https://nodaro.ai/docs/nodes) documents every node.

## Kinds of inputs and outputs

The colour and the icon of an input or an output show the kind of data it carries. A connection is allowed only between an output and an input of a matching kind.

| Kind | Colour | What it carries |
| --- | --- | --- |
| Text | Blue | Prompts, scripts, captions and any other text. |
| Image | Pink | Pictures: uploads, generated images, start frames and references. |
| Video | Violet | Video clips. |
| Audio | Amber | Speech, music and sound effects. |
| Look | Indigo | The wording of a [picker](https://nodaro.ai/docs/nodes/creative-controls), such as a lighting or camera choice. |
| Asset | Light pink | A character, location, object, creature, face or voice that stays the same in every generation. See [Assets and media](https://nodaro.ai/docs/concepts/assets-and-media). |
| Negative | Red | What a model should avoid. |
| Face | Orange | A face, for face and lip-sync nodes. |
| Mask | Purple | A black-and-white mask that marks the area to change. |
| List | Teal | A list or a table of items. See [Lists and batching](https://nodaro.ai/docs/concepts/lists-and-batching). |
| Any | Grey | More than one kind of data, on general-purpose nodes. |

Related kinds share a colour family, and some inputs have their own shade so that you can tell them apart on one node. For example, [Generate Video](https://nodaro.ai/docs/nodes/video/generate-video) has a pink **Start Frame**, a teal **End Frame** and violet **Image Refs**. When in doubt, read the name of the input.

- **An output can feed any number of inputs.** One [Text](https://nodaro.ai/docs/nodes/automate/text) node can give the same prompt to ten image nodes.
- **Some inputs take several connections.** **References** on Generate Image takes several images. On these inputs the order matters: most models treat the first reference as the most important.
- **Some inputs are optional.** A node runs with only the inputs it needs, for example Generate Video without an end frame.

## Connect two nodes

- **Drag from an output to an input.** While you drag, the inputs that accept the connection light up.
- **Drop the connection on empty canvas.** The node picker opens with only the nodes that can connect there. The node you choose is connected for you.
- **Add a node from a selected node.** Select a node and press Tab. With **Auto Connect** on in the node picker, a small dialog lets you name the new node and choose how it connects, or choose **Don't connect (just add)**.
- **Move a connection.** Drag the end of a connection to another input.
- **Delete a connection.** Click it and press Delete, or click the **Delete connection** button that appears on it.

## Which connections are allowed

- **The kinds must match.** The editor refuses a connection that does not fit, for example a [Character Asset](https://nodaro.ai/docs/nodes/assets/character) node into a **Prompt** input. The line flashes and no connection is made.
- **No loops.** A connection can never lead back to a node that comes before it. The editor refuses a connection that would close a loop, including a connection from a node to itself.
- **The model decides some inputs.** When the model you chose does not use an input, the input is dimmed and reads "not used by current model". Anything connected to it is ignored at run time.
- **Some inputs have a maximum.** When an input has more connections than the model accepts, the extra ones are marked "Past model's max — won't be used by the current model". Reorder them, or choose another model.
- **Media inputs need real media.** When a node receives something that is not a file of the right kind, for example text in a video input, the run is refused before any credits are spent. The message names the node and the value it received.

## Manage the connections of an input

Click an input to open its connection menu. The menu shows **Nothing connected**, the number of connections, or the number out of the model's maximum.

- **Focus** centers the canvas on a connected node, and **Disconnect** removes that one connection.
- On inputs where the order matters, drag the rows to change the order. The first row is the main input.
- **Optional** lists the nodes on the canvas that could connect here. Click **Connect** to connect one.
- **Add** opens the node picker with only the nodes that fit, and **Disconnect all** removes every connection.

Outputs have the same menu: click an output to see which nodes use it, and to connect it to more nodes.

## Connection modes

Most outputs carry one result. Some carry several: a [List](https://nodaro.ai/docs/nodes/automate/list), a [Split Text](https://nodaro.ai/docs/nodes/automate/split-text), or a node you ran several times. The **connection mode** decides what passes through the connection.

| Mode | What passes | Use it when |
| --- | --- | --- |
| **Selected** | The result selected on the node: normally the newest one | Almost always. This is the default. |
| **Item** | One item, chosen by its position, such as `1`, `3` or `last` | You always want the same item from a list or from a batch of results. |
| **Each** | Every item, one by one: the next node runs once per item | You want one result for every item. The default for connections from List and Split Text. |
| **Bundle** | Every item at once, in a single run | The next node combines items, such as [Combine Videos](https://nodaro.ai/docs/nodes/video/combine-videos) or [Mix Audio](https://nodaro.ai/docs/nodes/audio/mix-audio). The default for connections into a List. |

**Change the mode.** Click a connection to select it, then click the small arrow button on it. The **Output** menu lists the four modes. For **Item**, type the position in the box beside it.

**Choose which items pass.** With **Each** or **Bundle**, the menu adds two tabs:

- **Range** has three fields, **From**, **To** and **Step**. For example, **From** `2` and **To** `last` skip the first item, and **Step** `2` passes every other item.
- **List** takes a short expression:

| You type | Items that pass |
| --- | --- |
| `1` | Item 1 |
| `1, 2, last` | Items 1 and 2, and the last item |
| `1..5` | Items 1 to 5 |
| `1..last` | Every item |
| `1..last-1` | Every item except the last one |
| `1..10:2` | Items 1, 3, 5, 7 and 9 |
| `last..1:-1` | Every item, in reverse order |
| `1, 3..5, last` | Item 1, items 3 to 5, and the last item |

An expression that the editor cannot read turns red. The connection then passes every item, so a typing mistake never stops the workflow.

**Read the label.** A connection in **Selected** mode usually has no label. In another mode, a label on the connection names the mode, such as `each` or `bundle`, and a second label shows the range, such as `2..last`.

**Watch the credits.** **Each** multiplies the cost of the next node by the number of items. When five items reach a node that costs 4 credits, that node costs 20 credits for the run. The **Run** button of the node shows the total before you run it.

## Tips

- **Start simple.** Keep every connection in **Selected** mode until you really have a list to process.
- **Change one thing at a time.** When a connection does not behave as you expect, change one setting, run the node, and look at the result.
- **Match the mode to the next node.** A node that transforms one thing wants **Each**. A node that combines many things wants **Bundle**. A single choice wants **Item**.
- **Use Item for repeatable picks.** `1` or `last` keeps working when a new run changes how many results there are.
- **Share one selection.** When several nodes need the same subset of a list, use a [Selector](https://nodaro.ai/docs/nodes/automate/selector) node instead of setting the same range on every connection.

## Frequently asked questions

### What is a node in Nodaro?

A node is one step of a workflow that does one job, such as generating an image or merging a video with its audio. It receives data through the inputs on its left edge and passes its result through the outputs on its right edge.

### Why does the editor refuse my connection?

Each input accepts only some kinds of data, so a video cannot go into a prompt input, for example. The editor also refuses a connection that would make a loop. Drop the connection on empty canvas to see the nodes that fit.

### What do the colours of inputs and outputs mean?

The colour and the icon show the kind of data. Text is blue, images are pink, video is violet, audio is amber and picker wording is indigo. Read the name of the input too, because related kinds share a colour family.

### What is the difference between the Each and Bundle connection modes?

Each runs the next node once for every item of a list, so five items give five results. Bundle hands the whole list to the next node in one run, which suits nodes that combine items, such as Combine Videos.

### Why is one of the inputs of my node dimmed?

The model you chose does not use that input. Anything connected to it is ignored when the node runs. Choose a model that supports the input, or remove the connection.
