Skip to main content

Orchestra CLI. Perform operations with Orchestra locally.

Project description

orchestra-cli

Orchestra CLI for working with Orchestra pipelines from your terminal.

Two entrypoints are available: orchestra and orchestra-cli (they are equivalent).

Installation

pip install orchestra-cli

Or with pipx:

pipx install orchestra-cli

Environment variables

  • ORCHESTRA_API_KEY: Required for actions that call the API (import, run).
  • BASE_URL: Optional. Override the default API base (https://app.getorchestra.io/api/engine/public/pipelines/{}) for non‑production/testing.

Commands overview

  • validate: Validate a pipeline YAML locally against the Orchestra API schema.
  • import: Register a pipeline YAML (from a git repo) with Orchestra under an alias.
  • run: Start a pipeline run by alias, optionally pinning branch/commit and waiting for completion.

Use orchestra --help or orchestra <command> --help for built-in help.


validate

Validate a YAML file against the Orchestra API schema.

orchestra validate path/to/pipeline.yaml
# or
orchestra-cli validate path/to/pipeline.yaml

Options

  • file (positional): Path to the YAML file to validate.

Behavior

  • Prints a success message on valid input.
  • On validation errors, prints the failing location(s), readable messages, and a YAML snippet when possible.
  • Exit codes: 0 on success, 1 on invalid file/validation failure/HTTP error.

Example output (failure)

❌ Validation failed with status 422
Error at: pipeline.tasks[0].type
  Invalid task type "foo"

YAML snippet:
pipeline:
  tasks:
    - type: foo

import

Create (import) a pipeline in Orchestra by referencing a YAML file inside a git repository. The command infers your repository host/provider, default branch, and YAML path relative to the repo root.

export ORCHESTRA_API_KEY=...  # required

orchestra import \
  --alias my-pipeline \
  --path ./pipelines/pipeline.yaml
# or
orchestra-cli import -a my-pipeline -p ./pipelines/pipeline.yaml

Options

  • -a, --alias (required): The alias you want to register the pipeline under.
  • -p, --path (required): Path to the YAML file. Must be inside a git repository.

Notes

  • The YAML is validated with the API before import; failures are printed clearly.
  • Git details are detected automatically:
    • Supported providers: GitHub, GitLab, Azure DevOps.
    • The default branch is detected from origin.
    • The YAML path is computed relative to the repository root.
  • On success, the command prints the created pipeline ID (or a success message).
  • Exit codes: 0 on success, 1 on failure.

Common errors

  • Missing ORCHESTRA_API_KEY.
  • Not running inside a git repository, or no origin remote configured.
  • Could not detect storage provider or default branch.

run

Start a pipeline run by alias. Optionally specify a branch and/or commit. By default, the command waits and polls the run status until completion.

export ORCHESTRA_API_KEY=...

# Start and wait for completion
orchestra run --alias my-pipeline

# Start without waiting (prints run id and exits)
orchestra run -a my-pipeline --no-wait

# Start for a specific branch/commit
orchestra run -a my-pipeline -b feature/my-change -c 0123abc

Options

  • -a, --alias (required): Pipeline alias to run.
  • -b, --branch (optional): Git branch name to associate with this run.
  • -c, --commit (optional): Commit SHA to associate with this run.
  • --wait/--no-wait (default: --wait): Poll until the run ends.
  • --force/--no-force (default: --no-force): Skip confirmation if local git warnings are detected.

Behavior

  • Prints the run ID when known and a link to the run lineage page.
  • When waiting, polls status every ~5s until a terminal state:
    • SUCCEEDED (exit 0), WARNING (exit 0), SKIPPED (exit 0)
    • FAILED or CANCELLED (exit 1)
  • When not waiting, exits after start and prints the run ID.

Non-interactive usage

  • If your repo has warnings (e.g., uncommitted changes), the CLI prompts for confirmation unless --force is provided. For CI or scripts, pass --force or ensure a clean repo.

Examples

# Validate a pipeline file
orchestra validate ./examples/etl.yaml

# Import a pipeline and capture the created ID
PIPELINE_ID=$(orchestra import -a finance-etl -p ./pipelines/etl.yaml)

# Start a run and wait for completion
orchestra run -a finance-etl

# Start a run and exit immediately
orchestra run -a finance-etl --no-wait

Development

  • Make sure uv is installed
  • Use uv pip install -e ".[dev]" to install the CLI in editable mode for development
  • For local development, run uv run orchestra to start the CLI
    • you can use uv run --env-file .env ... to run the CLI with env vars
  • For testing, run uv run pytest
  • For linting, run uv run ruff check .
  • For formatting, run uv run black --check .
  • For type checking, run uv run pyright

Building and Releasing

  • Bump the version in pyproject.toml or by running uv version --bump <major/minor/patch>
  • Run uv sync to install the dependencies
  • Run uv build to build the CLI
  • Run uv publish to publish the CLI (you will need to pass the --token flag)

Note: Failure to bump the version will result in a failed release.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

orchestra_cli-0.1.1.tar.gz (13.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

orchestra_cli-0.1.1-py3-none-any.whl (16.3 kB view details)

Uploaded Python 3

File details

Details for the file orchestra_cli-0.1.1.tar.gz.

File metadata

  • Download URL: orchestra_cli-0.1.1.tar.gz
  • Upload date:
  • Size: 13.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.0

File hashes

Hashes for orchestra_cli-0.1.1.tar.gz
Algorithm Hash digest
SHA256 365615b8bdabf5b313ea4be092765f847094319a980383a523cfb247225d1ec4
MD5 1a88ccfde10533889332160e1000983f
BLAKE2b-256 8391427d59d8b39aed2b173024bb8a9ae7cfa43bdf67ba9d63148a493a9844d5

See more details on using hashes here.

File details

Details for the file orchestra_cli-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for orchestra_cli-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 7d0f10a83cdc643c53e71e0badc100ccc11d53daedcf6e57fd057d495424db75
MD5 4b81b4190fd1c83976f28f38800d1bb0
BLAKE2b-256 9c40e1e2022e982bbbb2adaf7040c8c1ac5723c9bcd9bab3b156278c93a1368b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page