Command line¶
openpipeline [COMMAND] [OPTIONS]
Run openpipeline COMMAND --help for the same information in your terminal.
Every command that reads a project takes an optional PROJECT argument: the
folder that holds dbt_project.yml. It defaults to the current folder, or to
OPENPIPELINE_PROJECT_DIR if that is set.
Exit codes: 0 on success, 1 when a model or column you named does not exist or
a preview fails, and 2 when the project cannot be loaded or an option has a bad
value.
Options for sample rows and the SQL dialect can also be set once in the preview:
section of openpipeline.yml. A flag wins over an
environment variable, and an environment variable wins over the file.
openpipeline demo¶
Try everything with no setup.
openpipeline demo [--dir PATH] [--host HOST] [--port PORT] [--serve | --no-serve]
[--token TEXT] [--read-only]
Copies the bundled jaffle_shop example, files one realistic pending proposal from
an imaginary agent (it adds a revenue_by_month model and touches two business
rules, with a rationale), then starts the server.
| Option | Default | What it does |
|---|---|---|
--dir PATH |
a temporary folder | Copy the example here instead. The folder must be empty or not exist yet. |
--host |
127.0.0.1 |
Address to listen on. Also OPENPIPELINE_HOST. |
--port |
8484 |
Port to listen on. Also OPENPIPELINE_PORT. |
--no-serve |
off | Only prepare the folder and print its path. |
--token, --read-only |
Same as for serve. On the default loopback address the demo is open. |
openpipeline serve¶
Start the web UI and the HTTP API on one port.
openpipeline serve [PROJECT] [--host HOST] [--port PORT] [--reload]
[--sample-data PATH] [--dialect NAME]
[--token TEXT] [--read-only]
Reads are always open. Changes (saving descriptions, accepting proposals, comments, AI calls) depend on the write mode, which is chosen like this:
--read-only: every write is refused with403.--token: writes needAuthorization: Bearer <token>.- No token, and
--hostis127.0.0.1,::1, orlocalhost: writes are open. - No token, and any other
--host: a random token is generated, printed once with a link that opens the UI with it (http://localhost:8484/?token=...), and used.
See Write access and security for the details.
| Option | Default | What it does |
|---|---|---|
--host |
127.0.0.1 |
Address to listen on. Also OPENPIPELINE_HOST. Use 0.0.0.0 in a container; writes then need a token. |
--port |
8484 |
Port to listen on. Also OPENPIPELINE_PORT. |
--reload |
off | Restart on code changes. For developing OpenPipeline itself. |
--sample-data PATH |
sample_data/ |
Folder of sample CSV or Parquet files, or a .duckdb file, for sample rows. Also OPENPIPELINE_SAMPLE_DATA. |
--dialect NAME |
none | SQL dialect of the project, such as snowflake. Also OPENPIPELINE_DIALECT. |
--token TEXT |
none | Require this Bearer token for writes. Also OPENPIPELINE_TOKEN. Never printed. |
--read-only |
off | Refuse every write. Also OPENPIPELINE_READ_ONLY=1. |
openpipeline mcp¶
Run the MCP server for AI agents.
openpipeline mcp [PROJECT] [--transport stdio|streamable-http]
[--host HOST] [--port PORT] [--sample-data PATH] [--dialect NAME]
[--token TEXT]
stdio is a local process started by the agent, with no network port. The HTTP
transport needs a Bearer token unless it listens on a loopback address; with no
--token on another address, one is generated and printed.
| Option | Default | What it does |
|---|---|---|
--transport |
stdio |
stdio for local agents, streamable-http to run as a service. |
--host |
127.0.0.1 |
Address for the HTTP transport. Also OPENPIPELINE_HOST. |
--port |
8485 |
Port for the HTTP transport. Also OPENPIPELINE_MCP_PORT. |
--sample-data, --dialect |
Same as for serve. |
|
--token TEXT |
none | Bearer token for the HTTP transport. Also OPENPIPELINE_TOKEN. |
openpipeline explain¶
Explain one model in plain English.
openpipeline explain MODEL [PROJECT] [--json] [--ai] [--business]
| Option | What it does |
|---|---|
--json |
Print JSON instead of text. |
--business |
Use the glossary's business words instead of model and column names. With --json the technical story is included as technical. |
--ai |
Also ask Claude to explain it. Needs openpipeline[ai] and an API key. See AI explanations. |
openpipeline graph¶
Print the model graph as JSON.
openpipeline graph [PROJECT]
The output has a nodes list and an edges list.
openpipeline lineage¶
Show where a column comes from and where it is used. See Search and column lineage.
openpipeline lineage MODEL COLUMN [PROJECT] [--json]
Prints the columns it comes from and the columns that use it, nearest first. With
--json it prints the same data as the HTTP API. It exits with 1 if the model or
column does not exist.
openpipeline sample¶
Show a few rows of a model, run on local sample data with DuckDB. Needs
openpipeline[preview]. See Sample rows.
openpipeline sample MODEL [PROJECT] [--limit N] [--sample-data PATH] [--dialect NAME]
| Option | Default | What it does |
|---|---|---|
--limit N |
10 |
Rows to show, from 1 to 200. |
--sample-data PATH |
sample_data/ |
Where the sample data is. |
--dialect NAME |
none | SQL dialect of the project. |
openpipeline rules¶
List business rules, grouped by owner.
openpipeline rules [PROJECT] [--json]
Warnings about the rules file, such as a link to a model that does not exist, are printed to standard error.
openpipeline review¶
Summarise what changed between two versions of a project, as Markdown for a pull request comment. See PR summaries.
openpipeline review BASE HEAD [-o FILE] [--ai]
| Option | What it does |
|---|---|
BASE |
The project before the change. |
HEAD |
The project after the change. |
-o, --output FILE |
Write to a file instead of printing. |
--ai |
Add an "In plain words" paragraph written by Claude. |
openpipeline version¶
Print the installed version.