# Building a Pipeline

## Overview

The Pipeline canvas provides infinite possibilities to use your data. Once you create a new Pipeline, you'll see the canvas where you can add the required **Listeners**, **Actions** and **Data Sinks** and link them as you need.

{% hint style="info" %}
A Pipeline needs one **Listener** and at least one **Data Sink**. You can add as many **Actions** as required to transform your data.
{% endhint %}

<div data-full-width="false"><figure><picture><source srcset="/files/ov4EwylDTmttawNRx8aI" media="(prefers-color-scheme: dark)"><img src="/files/TvRcIeKiQhaCBad1cTXj" alt=""></picture><figcaption></figcaption></figure></div>

## Pipeline publishing & versioning

Before reading about what you can find in the Pipeline canvas and how to build a Pipeline, you may want to learn more about the different statuses your Pipeline can go through and versioning system we use. Go to [Publishing & Versioning](/the-workspace/pipelines/building-a-pipeline/publishing-and-versioning.md) to learn more.

## General settings

The pane at the top area of the canvas shows the general properties of your Pipeline. Click the ellipses next to the Pipeline name to **Duplicate**, **Copy ID** or **Remove** the Pipeline.

Depending on your permissions, you can view or modify the following:

* **Name** -  When you create a Pipeline, the first recommendation is to change the default name. You can modify the name at any time clicking on the pencil icon close to the Pipeline's name.
* **Tags** - Click the tag icon to add or edit the Pipeline tags.
* **Running in menu** - Here you can see how many clusters your Pipeline is running in, as well as update them.
* **Versions menu** - View and run different versions of the Pipeline.
* **Test Pipeline** - Test a Pipeline version before publishing it.
* **Stop/Start Pipeline** - Stop and start the Pipeline in some or all of the clusters it is running in.
* **Publish** - Publish your draft Pipelines. When you modify your Pipeline, you will be creating a new version. When your modifications are complete, you can **Publish** this new version using this button in the top right.

When you modify your Pipeline, you will be creating a new version. When your modifications are complete, you can **Publish** this new version using this button in the top right. Go to [Managing versions](/the-workspace/pipelines/building-a-pipeline/publishing-and-versioning.md) to learn more.

{% hint style="info" %}
You can carry out all these actions in bulk if you wish to modify more than one Pipeline at a time.
{% endhint %}

## The metrics bar

If the Pipeline is running, the **Metrics** bar provides a visual, graphical overview of the data being processed in your Pipeline.

* **Events In** - View the total events in per second for the selected period, compared to the previous range (in %).
* **Bytes In** - The total bytes in per second for the selected time range, compared to the previous (in %).
* **Events Out** - View the total events out per second for the selected period, compared to the previous range (in %).
* **Bytes Out** - The total bytes out per second for the selected time range, compared to the previous (in %).
* **Latency** - The time (in nanoseconds) it takes for data to travel from one point to another, compared to the previous (in %).

### Set a time range

You can set a time range to view the metrics for a specific period of time. This will be used to calculate the percentages, compared to the previous time of the same period selected.

Go to [Selecting a Time Range](/getting-started/understanding-the-essentials/the-time-range-selector.md) to learn more about the specifics of how this works.

## Add to the Pipeline

Simply drag and drop an element from the left-hand side onto the canvas to add it to your Pipeline.

For **Listeners**, you can drag the specific [Label](/the-workspace/listeners/labels.md) down to the required level. Once in the Pipeline, you can see which Listener the label belongs to by hovering over it, or in the Metrics area of the configuration pane.

## Canvas

The canvas is where you will build your Pipeline. Drag and drop an element from the left pane to add it to your Pipeline.

### Pipeline elements

Click an element in the canvas and select **Configuration** to open its [Properties](/the-workspace/pipelines/building-a-pipeline.md). If you have enough permissions to modify this Pipeline, click the node in the canvas and select the **Remove** icon. Create links between your nodes to create a flow of data between them. Learn more about [links](#ports) below.

### Ports

Notice the ports of each element in the canvas. Ports are used as connectors to other nodes of the Pipeline, linking either incoming or outgoing data.

* **Listener** - As a Listener is used to send information on, there are no *in* ports, and usually one *out* port.
* **Action** - Actions generally have one *in* port, injecting it with data. When information is output, it will be sent via the *default* port. If there are problems sending on the data, it will not be lost, but rather output via the *error* port.
* **Data Sink** - A Data Sink is the end stop for our data, so there is only one *in* port that receives your processed data.

### Links

Connect the separate nodes of the canvas to form a Pipeline from start to finish. Simply click the port you wish to link from and drag to the port you wish to link to. When you let go, you will see a link form between the two.

To unlink, click anywhere on the link and select **Unlink** in the menu. You can also click a link and select **Add action** to add any other required element between the items.

## Navigation options

**Zoom in/out**, **Center**, **undo,** and **redo** changes using the buttons on the right. Use the window in the bottom-right to move around the canvas.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.onum.com/the-workspace/pipelines/building-a-pipeline.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
