# The Flow canvas

> Flow canvas: the toolbar, panels, menus, and debug controls that every tool shares, and what differs between Studio Web, VS Code, and Studio Desktop.

The Flow canvas is the visual workspace where you build workflows, in every environment: VS Code, Studio Web, and Studio Desktop. Each step of a workflow is a node, and the lines between nodes set the order in which steps run. The canvas opens when you create or open a `.flow` file.

The canvas works the same way in all three tools. The sections below describe what they share, and [What differs between tools](#what-differs-between-tools) covers the rest.

## Parts of the canvas

![Studio Web with a new flow open on the canvas: the Explorer on the left, the Scheduled trigger, HTTP Request, Script, and End nodes in the center, and the bottom toolbar with the Build as menu set to Maestro Automate.](https://dev-assets.cms.uipath.com/assets/images/maestro-automate/1-canvas-overview-0d165b0f.webp)

| Area | Location | What it's for |
|---|---|---|
| **Canvas** | Center | Place, connect, and arrange nodes. |
| **Bottom toolbar** | Bottom center | Choose the product the workflow is built for, start a debug run or an evaluation, add a node, and add a note. |
| **Properties panel** | Right | Configure the selected node. |
| **Panel below the canvas** | Bottom | Review debug runs, the execution trace, and the details of each node, and work with evaluations. |

A strip of icons at the right edge opens the **Properties** panel, the logs, and the watches panel.

## The bottom toolbar

The bottom toolbar has these controls, from left to right:

- **Build as** menu: shows and sets the product that the project is built for.
- **Run Debug** (▶): starts a debug run.
- **Run evaluation** (flask icon): opens the **Configure evaluation run** panel, which scores a dataset. The arrow next to the icon opens a menu with **Run evaluation**, which selects a dataset and starts a run, and **Add data point**, which captures inputs and expected output in a guided wizard. [Evaluations](evaluations.md) describes them.
- **Add node** (**+**): opens the **Add node** panel.
- **Add note** (page icon): adds a note to the canvas.

## Adding nodes

The **+** button in the bottom toolbar opens the **Add node** panel, which has a search box and groups of nodes by purpose.

In order, the categories are **Agent**, **Connector**, **Data**, **Document**, **Human**, **Control**, **Tool**, and **Wait for event**, followed by the categories that call existing work. Scroll the panel to see the rest. A **Trigger** category appears when you add a node from the bottom toolbar. [Node reference](node-reference.md) lists every node by category.

![The Add node panel with the search box and the categories Agent, Connector, Data, Document, Human, Control, Tool, Trigger, and Wait for event.](https://dev-assets.cms.uipath.com/assets/images/maestro-automate/3-add-node-panel-automate-deaf226a.webp)

For example, the **Tool** category holds **Script**, **Conversational tools**, **Queue tools**, and **Voice tools**. [Tool](tool-nodes.md) describes them.

The **+** on a node's outgoing handle adds a new node and connects it in one step.

:::note
Triggers can only be added from the bottom toolbar, not from node handles.
:::

## Connecting nodes

Nodes connect through handles, the small dots on the edges of a node. An output handle on the right side of a node connects to an input handle on the left side of the next node. The canvas validates connections in real time: green indicates a valid connection, and red indicates an invalid one. Connections respect node constraints, for example a trigger cannot connect to another trigger.

Edge segments can be dragged to reposition them. The adjusted path is kept for the session but does not affect the saved document or the undo history.

## The properties panel

The properties panel opens on the right when a node is selected, showing that node's configuration. Tabs vary by node type, for example a Script node shows **Parameters**, **Error handling**, and **Advanced**.

Variables that belong to the whole workflow are not managed in the properties panel. They live in the separate **Variables** panel, which [Variables and data flow](variables-and-data-flow.md) describes.

A node's full-screen expanded view is available from its hover toolbar. The expanded view has three columns: **Input**, which shows the data the node can read in a **Schema** or **JSON** view, **Properties**, which holds the node's configuration, and **Output**, which shows the data the node produced. The **Output** column has a mode menu with **Live**, **Static mock**, and **Generated**, which [Output mocking](output-mocking.md) describes.

![The properties panel of an HTTP Request node, with the Parameters, Branching, and Error handling tabs and the Import or export menu, Authentication, Method, and URL fields.](https://dev-assets.cms.uipath.com/assets/images/maestro-automate/4-canvas-properties-automate-fcfae0b0.webp)

## Debugging

**Run Debug** (▶) in the bottom toolbar runs the workflow on the canvas. If the trigger has inputs, a dialog asks for their values first. As the run progresses, each node shows its status, and the panel below the canvas shows the run and its execution trace.

During a run, the bottom toolbar shows the run controls: a red **Stop debug** button, **Continue**, and **Next step**. The debug session also ends when you change the workflow.

![Studio Web after a debug run: all nodes show green success indicators, and the Executions panel at the bottom lists the debug runs, the execution trace, and the Variables, Incidents, and Metadata tabs of the run.](https://dev-assets.cms.uipath.com/assets/images/maestro-automate/2-debug-run-automate-2a87a14a.webp)

### Breakpoints

Breakpoints are markers on nodes. To set one, hover over the node, then select **⋮** (More options) > **Add breakpoint** in its toolbar. The run pauses when it reaches a breakpoint. A breakpoint appears as a red dot on the node, and a run that pauses there shows a pause icon on it. **Continue** and **Next step** control how the run continues. Breakpoints can be set before a run and during a run.

## The panel below the canvas

After a debug run, a panel appears below the canvas.

| Tab | What it shows |
|---|---|
| **Executions** | The debug runs, the execution trace of the selected run, and the details of the selected item. For a run, the details have the **Variables**, **Incidents**, and **Metadata** tabs. For a node, they show its inputs and outputs. |
| **Datasets**, **Evaluators**, **Eval runs** | The evaluation tabs. [Evaluations](evaluations.md) describes them. |

Selecting a node in the execution trace highlights the corresponding node on the canvas.

## Node and canvas menus

The menu of a node opens from **⋮** (More options) in its hover toolbar, or when you right-click the node. It has **Add breakpoint**, **Add probe**, **Copy**, **Cut**, **Paste**, and **Delete**. On a trigger, it also has **Debug** and **Set as default entry point**.

**Set as default entry point** sets the selected trigger as the default entry point of the workflow. **Add probe** attaches a **Probe** panel to the node. The panel shows the value of an expression, starting with `$self.output`, which is the node's own output, and the **+** in the panel adds another expression.

Right-clicking the canvas background shows layout options:

- **Tidy up nodes**: auto-arranges all nodes
- **Tidy selected**: auto-arranges the selected nodes (2 or more)
- **Align**: left, center, right, top, middle, bottom (2+ selected)
- **Distribute**: horizontal, vertical (3+ selected)
- **Copy / Paste / Delete**

After **Tidy up nodes** or **Tidy selected**, edges route around nodes instead of passing through them, keeping the diagram readable when nodes are repositioned. Loop edges (self-connections and loop-back handles) keep their existing handle-based routing.

## Keyboard shortcuts

Key canvas shortcuts:

- `Cmd+Z` / `Ctrl+Z`: undo
- `Cmd+Shift+Z` / `Ctrl+Shift+Z`: redo
- `Cmd+Shift+L` / `Ctrl+Shift+L`: auto-layout all nodes
- `Delete` / `Backspace`: delete the selected nodes

[Keyboard shortcuts](keyboard-shortcuts.md) lists every shortcut of the canvas.

## What differs between tools

Each tool adds its own explorer and toolbar around the canvas.

| | Studio Web | VS Code | Studio Desktop |
|---|---|---|---|
| **Explorer** | The **Explorer** on the left lists the solution, its projects, and the resources a workflow can use. | The **UiPath Maestro** view, from the **UiPath** icon in the Activity Bar. | The Studio Desktop **Explorer**, with the solution and its projects. |
| **Top toolbar** | A **Build \| Manage** switch, where **Manage** shows the deployments, and a **Debug** menu at the top left. | The **UiPath** commands in the Command Palette, which [VS Code extension](vs-code-extension.md) lists. | **Design** and **Debug** tabs, and a **Debug** menu with **Debug File**, **Run File**, **Debug**, and **Run**. |
| **Debug step-by-step** | In the **Debug** menu (`Shift+F5`). | Not available. | Not available. |
| **Autopilot (Preview)** | The **Autopilot** panel. | The separate **UiPath Autopilot** extension. | The **Autopilot** panel on the right. |

### Studio Web debug menu

The **Debug** menu at the top left of the Studio Web toolbar has these options:

- **Debug** (`F5`): runs the workflow, like **Run Debug** in the bottom toolbar.
- **Debug step-by-step** (`Shift+F5`): runs the workflow one node at a time.
- **Debug configuration**: opens the **Debug configuration** dialog. Its **Entrypoint arguments** tab sets the trigger's input values for debug runs, and its **Solution resources** tab chooses which connection each resource uses, under **Debug using**. While **Show before debugging** is on, the dialog also opens each time you start a debug run.
- **Deploy solution for debugging**

During a debug run, the **Logs** panel on the right shows the preparation steps of the run.

### Properties panel options in VS Code and Studio Desktop

In VS Code and Studio Desktop, the sliders icon next to **Properties**, above the canvas, opens a menu that changes how the properties panel looks:

- **Sections**: show or hide **Parameters**, **Variables**, **Input**, and **Output**.
- **Panel behavior**: **Auto hide** or **Always persist**.
- **Default layouts**: **Default — Right**, **Default — Bottom**, or **Default — Split**.
- **Saved presets**: **Save as preset** saves the current layout as a preset.

You can also drag the **Parameters** and **Variables** tabs by their grip to rearrange them.

## Next steps

- [Keyboard shortcuts](keyboard-shortcuts.md): move around the canvas and work with nodes faster.
- [Your first workflow](your-first-workflow.md): the order intake workflow, built step by step in about 15 minutes.
- [Debugging basics](debugging-basics.md): tips for debugging a workflow.
- [Community](community.md): ask questions and share workflows with other builders on the UiPath Forum.
