# Run your first pipeline
URL: https://lsd.tools/docs/start-first-pipeline
Updated: 2026-07-17

> In the desktop app, add a load node, a shape node, and a deliver node from the palette, wire their ports, edit parameters in the auto-generated forms, and press Run. Outputs are cached — change one parameter and only what depends on it recomputes.

A pipeline is a graph of **nodes**, each doing one step: **load** data, **shape** it, **deliver** a
result. Let's build one on the canvas — no Python required.

## 1. Open a project

Launch the desktop app and create a new project. The canvas is empty; the **add-node palette** (the
`+` on the canvas, or right-click) lists every step from the packages that are active.

## 2. Add a Load node

Open the palette and pick a **load** step — for example a "Load CSV" or "Load file" node. It appears
on the canvas with a **form** on the right (its parameters) and an **output port** on its edge.
Point it at a data file.

## 3. Add a Shape node and wire it

Add a **shape** step (a filter, a sort, a transform). Drag from the load node's **output port** to
the shape node's **input port** — that wire means "feed this table in." Edit the shape node's
parameters in its form.

## 4. Add a Deliver node

Add a **deliver** step (write a CSV, export, render). Wire the shape node's output into it. Deliver
nodes produce a side effect — a file, an export, a view — rather than another table.

## 5. Run

Press **Run**. LSD executes the graph in order (Load → Shape → Deliver) and each node turns green
as it finishes. Every output is **cached** on disk.

## 6. Change a parameter

Edit one parameter and Run again. Only the nodes **downstream of the change** recompute — everything
whose inputs and parameters are unchanged is served from cache. This is what makes big pipelines
fast to iterate.

## What you built

You assembled a real pipeline visually. Behind the canvas is the same engine you can drive from
Python — and the nodes you used are just decorated Python functions. Ready to make your own?

## Related

**Learn** — [Write your first tool](/docs/start-first-tool) · [The Package Manager](/docs/pkg-manager)

**Examples** — [Your first tool](/docs/ex-hello-tool) · [Clean a CSV](/docs/ex-clean-csv)

## FAQ
### Do I need to write Python for this?

No. Every node in this walkthrough comes from the step palette. You only write Python when you want a custom node — see "Write your first tool".

### What does "cached" mean here?

Each node stores its output on disk keyed by its parameters and inputs. Re-running skips a node whose inputs and parameters are unchanged, so big pipelines re-run fast.
