Configuration¶
OpenPipeline has very little to configure. Everything has a sensible default, and your dbt project stays the source of truth.
Environment variables¶
| Variable | Default | What it does |
|---|---|---|
OPENPIPELINE_PROJECT_DIR |
the current folder | Which dbt project to open when you do not pass a path. The Docker image sets it to /project. |
OPENPIPELINE_HOST |
127.0.0.1 |
Address the web UI and the MCP HTTP transport listen on. The Docker image sets 0.0.0.0. |
OPENPIPELINE_PORT |
8484 |
Port of the web UI and API. |
OPENPIPELINE_MCP_PORT |
8485 |
Port of the MCP server with --transport streamable-http. |
OPENPIPELINE_SAMPLE_DATA |
sample_data/ in the project |
Folder of sample files, or a .duckdb file, for sample rows. |
OPENPIPELINE_DIALECT |
none | SQL dialect of the project, for sample rows. For example snowflake. |
OPENPIPELINE_AI |
on, if a key is present | Set to off, 0, or false to switch AI explanations off completely. |
OPENPIPELINE_AI_MODEL |
claude-opus-5-5 |
Which Anthropic model to use for AI explanations. |
ANTHROPIC_API_KEY |
none | Your Anthropic key. ANTHROPIC_AUTH_TOKEN and ANTHROPIC_PROFILE also work, and so does a profile in ~/.config/anthropic made with ant auth login. |
Command line options win over environment variables, and environment variables
win over openpipeline.yml.
openpipeline.yml¶
The openpipeline.yml file sits next to dbt_project.yml. It has three optional
sections: rules: for your business rules,
glossary: for your business words, and
preview: for sample rows.
preview:
sample_data: sample_data # a folder or a .duckdb file, relative to the project
dialect: snowflake
rules:
- id: shipped-revenue
name: Revenue counts once an order is shipped
description: >
An order only counts as revenue after it has shipped.
owner: finance-team
tags: [finance, orders]
applies_to:
- model: orders
- model: daily_revenue
columns: [revenue]
| Key | What it does |
|---|---|
rules |
A list of business rules. The fields are explained on the rules file format page. |
glossary |
A list of terms: name, label, and optionally definition and aliases. See business words. |
preview.sample_data |
Where sample data lives, relative to the project folder. Same as --sample-data, but set once for everyone. |
preview.dialect |
SQL dialect of the project. Same as --dialect. |
Other keys in preview: are ignored, and so is a preview: section that is not a
mapping. The file is optional.
Files OpenPipeline reads and writes¶
| Path | Read | Written |
|---|---|---|
dbt_project.yml, models/**, seeds/** |
yes | only YAML description edits you save, or proposals you accept |
target/manifest.json |
yes, when it exists | never |
openpipeline.yml |
yes | only when you accept a proposal that changes it |
sample_data/ |
yes | never |
.openpipeline/proposals/ |
yes | when an agent files a proposal, or you comment, accept, or reject |
.openpipeline/cache/ai/ |
yes | when you ask for an AI explanation |
Add .openpipeline/ to your .gitignore, unless you want to commit proposals.
OpenPipeline never connects to your warehouse and never runs dbt.