How it works

The same workflow, every domain

One standardized workflow — scaffold or adopt, check, deploy, upgrade — whether you're in Databricks bundles, notebooks, or dbt. Plus two ways to deploy: locally with the native CLI, or through generated CI/CD.

  1. 01

    Scaffold — or adopt

    Generate a standardized project in one command, or adopt an existing dbt / Databricks one. Either way it lands in the same .dops registry.

    $ dops dbt init analytics · dops adopt ./existing-repo
  2. 02

    Check conventions

    Validate structure and metadata across every project in the repo — before you ever touch a live system.

    $ dops check --all
  3. 03

    Print native deploy commands

    Get the exact native commands — databricks bundle, databricks sync, or dbt — with a branch-derived sandbox.

    $ dops commands --target sandbox --branch feature/DOPS-123
  4. 04

    Upgrade safely

    Pull blueprint improvements into existing projects later, without clobbering your local edits.

    $ dops upgrade
Already building?

Skip the scaffolding. Adopt an existing dbt or Databricks project — OpenDOPS infers the metadata and leaves every one of your files untouched.

$ dops adopt --owner data-platform

See it run

dops — your data stack
$ dops dbt init analytics
 Initialized dbt project analytics

$ dops adopt ./legacy-platform
 Adopted monorepo legacy-platform + 3 bundles

$ dops list
  bundle   customer-events-bronze  dbx dab
  notebook analytics-notebooks     dbx notebook
  dbt      analytics               dbt

$ dops check --all
 All 3 projects passed

Two ways to deploy

Local or CI/CD — your call

Local deployment

Print the native commands for whatever project you're in — Databricks bundle / sync or dbt — and run them yourself. OpenDOPS never deploys for you.

$ dops commands -t dev

# then run the native command it prints
$ databricks bundle deploy -t dev

CI/CD deployment

Generated GitHub Actions wire the whole flow:

  1. 01PR opens → detect changed bundles
  2. 02Run OpenDOPS checks + Python tests
  3. 03databricks bundle validate against sandbox
  4. 04Optional sandbox deploy with DEV_<branch>_ prefix
  5. 05PR closes → cleanup sandbox resources
  6. 06Merge to main → deploy to dev with canonical names

Ship standardized data engineering projects.

Install the dops CLI and scaffold your first standardized project in under a minute.

$ pip install opendops
Read the docs