> ## Documentation Index
> Fetch the complete documentation index at: https://docs.orisu.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Core concepts

> The canvas, nodes, typed ports, edges, runs, and the lifecycle states a node moves through.

Everything in Orisu is built from a few pieces. Once you understand the canvas, nodes, ports, edges, and runs, every feature in the studio follows the same model.

## The canvas

The canvas is the workspace where you build an agent. You add nodes onto it, drag them around, and connect them. The set of nodes and connections on the canvas is your agent's graph: the recipe for what the agent does when you run it.

## Nodes

A node is a single step in the graph. Each node does one job: hold a text prompt, take an uploaded file, generate an image or video, transform text, branch on a condition, or export a result. Node types use clear names like **Generate image**, **Text prompt**, and **Switch**.

You select a node to open its config panel, where you set its options. For generation nodes, that's the model and its settings.

## Ports

Ports are the connection points on a node. Inputs are on the left, outputs are on the right. Every port has a type that describes the kind of data it carries: image, video, text, audio, or file.

Ports being typed is what keeps a graph valid: the canvas only lets you connect an output to an input that accepts the same kind of data. A text output connects to a prompt input that accepts text; an image output connects to an input that accepts an image. Some nodes have ports that take on a type based on what you connect to them.

## Edges

An edge is a connection between two ports: an output on one node wired to an input on another. Edges define data flow: when the agent runs, the output of the source node becomes the input of the target node. Reading the edges left to right tells you the order in which work happens.

## Organizing the canvas with groups

As a workflow grows, groups keep it readable. A group is a labeled frame that wraps a set of nodes into a named stage — like **Inputs**, **Generation**, or **Review** — so the graph reads as a sequence of steps instead of a flat pile of nodes.

To create one, select two or more nodes (drag a box around them, or shift-click), right-click the selection, and choose **Convert to group**. Once it exists you can:

* **Rename it** — click the group's label and type a name. Give every group a real name; don't leave one called "Group".
* **Color it** — right-click the group (or open its **⋯** menu) and pick a preset color. Seven presets (neutral, amber, rose, green, blue, violet, and teal) let you tell stages apart at a glance.
* **Move it** — dragging the group moves all its nodes together.
* **Add or remove nodes** — drag a node into the group's frame and it joins; drag it out and it leaves. The frame adjusts to fit its members.
* **Ungroup or delete it** — from the same menu. Ungroup keeps the nodes; delete removes the group and its nodes.

Groups are purely for organization. They don't run, don't change how data flows, and never affect a node's output. The [copilot](/guides/copilot) can also create and color groups for you when it builds a workflow, and workflows built through the API or MCP can include them too.

## Runs

A run is one execution of the graph. When you trigger a run, Orisu walks the nodes in order, executes each one, and records its output. The results you see on each node (the image, the text, the credits consumed) all belong to a specific run.

Outputs are tied to the run that produced them, so you can re-run an agent, restore an earlier version, and still see the correct results for each.

## Node lifecycle states

As a run progresses, each node moves through visible states so you always know what's happening:

| State          | What it means                                                                                                                         |
| -------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
| **Idle**       | The node has no connections yet. It shows its description and a "Waiting for input" hint.                                             |
| **Generating** | The node is executing. It shows an animation while it works.                                                                          |
| **Completed**  | The node finished. Its output renders on the node: an image, video, text, or audio result.                                            |
| **Error**      | The node failed. It shows a compact message describing what went wrong, with an option to retry.                                      |
| **Skipped**    | The node didn't run, usually because a required input was missing or an upstream branch wasn't taken. It shows a single compact line. |

<Note>
  A skipped node isn't an error. Branching nodes intentionally skip the paths they don't take, and a node skips if an upstream node didn't produce the input it needs.
</Note>
