# Orchestration

Our main orchestration component is the `Pipeline`.

## What is a Pipeline?

A `Pipeline` is an object that runs a sequence of steps in order. Each step is a modular unit of work that reads and updates a shared state.

Under the hood, the `Pipeline` builds a graph (via `LangGraph`) that connects steps from a start node to an end node.

## What you can do with a Pipeline

1. Chain work in order: Build a sequence of steps that pass a shared state from start to finish.
2. Compose naturally: Use our pipe `|` operator to chain steps or pipelines, or use `<<` and `>>` to include another `Pipeline` as a subgraph.
3. Inspect or visualize: Generate a Mermaid diagram using `get_mermaid_diagram()`.
4. Caching: Cache the result of your Pipeline run to speed up the next execution with the sample inputs.
