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

# Pipeline stages

> Build in Development and promote to Production with a separate live copy of each pipeline.

Every pipeline has a **stage**. A stage lets you iterate safely in a **Development** copy and then promote a reviewed graph to a separate **Production** copy that processes real documents. The two copies share a lineage: promoting or demoting copies one stage's saved graph onto its sibling at the other stage.

## Stages

| Stage           | Purpose                                                             |
| --------------- | ------------------------------------------------------------------- |
| **Development** | Where pipelines are built and iterated on. New pipelines start here |
| **Production**  | The live copy that processes real documents                         |

A pipeline in Development and its promoted Production copy are two linked pipelines, each with its own documents, runs, and version history. Editing the Development copy never changes the Production copy until you promote again.

<Note>The stage also sets the default run mode in the editor: a Development pipeline defaults to a [Dry run](/guides/test-mode) and a Production pipeline defaults to a Live run. See [Dry runs](/guides/test-mode) for the per-run picker.</Note>

## Promote and demote

Open the pipeline editor toolbar's **More actions** menu to move a graph between stages:

* **Promote to...** copies the current pipeline's last saved graph up to a higher stage (Development to Production).
* **Demote to...** copies it back down to a lower stage (Production to Development).

Both actions:

1. Copy the **last saved** graph (not your current unsaved draft) onto the sibling pipeline at the target stage, creating that sibling the first time you promote.
2. Write a **new version** on the target pipeline, so the transfer is recorded in its version history and can be restored later.
3. Leave a newly created sibling **paused**, so you review and activate it deliberately before it processes real documents.

<Warning>Promote and demote copy the **last saved version**, not your current draft. If you have unsaved changes, save first so they are included. The transfer replaces the target stage's current graph with a new version.</Warning>

### Stage badge

The editor toolbar shows a stage badge next to the pipeline name: a neutral badge for **Development** and an amber badge for **Production**, so edits to the live copy are visually flagged.

## Connector readiness

A promote or demote is **blocked** when the graph references a [connector](/admin/connectors) that has no **Connected** profile at the target stage. Because each connector holds separate Development and Production credentials, promoting to Production requires the Production profile of every referenced connector to be connected first.

When a transfer is blocked, the dialog stays open and names the connectors that are not ready, with a link to open connector settings. Connect the target-stage profile for each named connector, then promote again. Nothing is created or changed on a blocked transfer.

## Filtering by stage

The **Pipelines** page shows a stage filter (**Development** / **Production**) only after at least one pipeline has been promoted past Development. Until then, every pipeline is in Development and the list looks the same as before. Once the filter appears, it defaults to **Development**.

## Related

<CardGroup cols={2}>
  <Card title="Managing pipelines" icon="browser" href="/pipelines/managing">
    Create, organize, and configure pipelines
  </Card>

  <Card title="Pipeline editor" icon="diagram-project" href="/pipelines/editor">
    Promote and demote from the editor toolbar
  </Card>

  <Card title="Connectors" icon="plug" href="/admin/connectors">
    Configure per-stage Development and Production credentials
  </Card>

  <Card title="Dry runs" icon="flask" href="/guides/test-mode">
    The per-run Dry run and Live run picker
  </Card>
</CardGroup>
