Reference

Blueprints

Blueprints are the templates OpenDOPS uses to generate projects. Eight ship today across the Databricks and dbt domains, with an extensible model for many more.

A blueprint is a versioned template that OpenDOPS uses to generate a project. Each blueprint declares the files it produces and the conventions it enforces (resources, a runnable resource, and whether it ships a Python package), so OpenDOPS checks and command guidance adapt to its shape. The model is intentionally simple so new blueprints — and eventually new domains — can be added without changing the CLI.

Available blueprints

BlueprintSubsystemGenerates
databricks-python-wheel-jobdbx dabA spark_python_task job
databricks-multi-task-workflowdbx dabA multi-task job (ingest → transform → publish) with failure alerts
databricks-dlt-pipelinedbx dabA serverless Delta Live Tables pipeline
databricks-sql-jobdbx dabA job that runs a .sql file on a SQL warehouse
databricks-unity-catalogdbx dabSchemas, volumes & grants — governance-as-code (no runnable)
databricks-alerting-jobdbx dabA job pre-wired with email/webhook alerts + health rules
databricks-notebook-workspacedbx notebookA non-DAB notebook project deployed via databricks sync
standard-dbt-projectdbtA standardized dbt project (staging/marts, seeds, tests, env targets) run via the dbt CLI

Pick a bundle blueprint with:

dops dbx dab bundle add <name> --blueprint <blueprint>

Want to see exactly what each one generates? Browse the examples/ directory — it holds the real rendered output of every blueprint (a complete bundle/project you can read file-by-file).

databricks-python-wheel-job

The built-in blueprint for the dops dbx dab domain. It generates a Python-first Databricks Asset Bundle that runs a spark_python_task job.

Generates:

  • databricks.yml with stable sandbox, dev, staging, and prod targets
  • a resource_prefix variable for branch-isolated sandbox deployments
  • resources/jobs.yml and resources/variables.yml
  • a src/<package>/ Python package (main, config, readers, writers, transforms/)
  • a tests/ suite for the pure transforms
  • a README.md and .dops/bundles/<name>.yaml metadata
dops dbx dab bundle add customer-events-bronze \
  --blueprint databricks-python-wheel-job \
  --package customer_events_bronze \
  --owner data-platform

Every generated bundle is independently validatable, deployable, runnable, and destroyable using native Databricks CLI commands from inside its own directory.

databricks-notebook-workspace

The built-in blueprint for the dops dbx notebook subsystem — a non-DAB Databricks project. Instead of an Asset Bundle, it generates a notebook/workspace project that you deploy with the native databricks sync command.

Generates:

  • notebooks/ with a Databricks notebook in source format
  • a src/<package>/ Python package of pure, testable transforms (imported by notebooks)
  • conf/ per-environment workspace paths (dev / staging / prod)
  • scripts/dops/sandbox-prefix.sh and .dops/project.yaml metadata
  • .github/workflows/ that call databricks sync directly
dops dbx notebook init analytics-notebooks --owner data-platform
dops dbx notebook commands --target sandbox --branch feature/DOPS-200

Sandbox deployments are branch-isolated by syncing to a /<workspace>/sandbox/DEV_<branch>_<project> folder — the same prefix convention as bundles, applied to the workspace path instead of resource names.

More Databricks bundle blueprints

These add to dops dbx dab bundle add --blueprint …, each generating a different Databricks resource shape (OpenDOPS checks and bundle commands adapt automatically):

  • databricks-dlt-pipeline — a serverless Delta Live Tables pipeline (resources/pipelines.yml) plus a Python package of pure transforms. bundle commands runs the pipeline, not a job.
  • databricks-multi-task-workflow — a job with a dependency chain (ingest → transform → publish) and on-failure email notifications.
  • databricks-sql-job — a job whose task runs a generated .sql file against a SQL warehouse, with a Python package of pure query helpers.
  • databricks-unity-cataloggovernance-as-code: declares schemas, managed volumes, and grants as bundle resources. OpenDOPS writes the declarations; databricks bundle deploy applies them (there’s nothing to bundle run).
  • databricks-alerting-job — a job pre-wired with standardized notifications & alerts: email on start/success/failure, an on-failure webhook (Slack/PagerDuty/…), a run-duration health rule, and a timeout.

standard-dbt-project

The built-in blueprint for the dops dbt domain — a standardized dbt project. OpenDOPS owns the structure; the dbt CLI runs it.

Generates:

  • dbt_project.yml, packages.yml, and a secret-free profiles.yml (connections via env vars)
  • models/staging/ + models/marts/ with sources, a seed, and schema/column tests
  • a generate_schema_name macro so a whole feature branch lands in one flat schema
  • scripts/dops/sandbox-prefix.sh, .dops/project.yaml, and .github/workflows/ (run dbt)
dops dbt init analytics-dbt --adapter dbt-databricks --schema analytics
dops dbt commands --target sandbox --branch feature/DOPS-300

Branch-isolated sandboxes build into a DEV_<branch>_<schema> target schema (supplied at runtime via DBT_SANDBOX_SCHEMA) — the same prefix convention as bundles, applied to the dbt schema. Pick the adapter with --adapter (defaults to dbt-databricks).

On the roadmap

The blueprint model is built to extend. Still planned:

BlueprintPurpose
databricks-notebook-jobNotebook-based jobs (DAB)
dbt-on-databricksdbt running on Databricks

Beyond Databricks, entire domains are planned — each under its own dops namespace (dops dbt, dops airflow, dops snowflake). See the home page for the roadmap.

Request a blueprint

Want a blueprint or domain sooner? Open an issue — the internal blueprint model is designed so additional templates can be added independently.