A dbt utility for managing YAML to make developing with dbt more delightful.
Project description
dbt-osmosis
dbt-osmosis is a Python CLI and package for dbt development workflows.
It centers on four primary surfaces:
- schema YAML management (
yaml organize,yaml document,yaml refactor) - column-level documentation inheritance across dbt lineage
- ad-hoc SQL compile/run helpers
- an optional Streamlit workbench for interactive dbt SQL development
The repository also ships additional command families for generation, natural-language helpers, schema diffing, SQL linting, and test suggestions.
The Docusaurus site is the canonical reference for the current CLI, configuration model, support matrix, and workflow guides:
- Docs site: https://z3z1ma.github.io/dbt-osmosis/
- CLI reference: https://z3z1ma.github.io/dbt-osmosis/docs/reference/cli
- Configuration guide: https://z3z1ma.github.io/dbt-osmosis/docs/tutorial-yaml/configuration
- Migration guide: https://z3z1ma.github.io/dbt-osmosis/docs/migrating
Supported runtime
dbt-osmosis currently targets:
- Python 3.10-3.13
- dbt Core 1.8+ package resolution
- a dbt adapter version compatible with the dbt Core runtime in that environment
Audited blocking support covers dbt Core 1.8.x through 1.11.x in CI. The package metadata intentionally remains dbt-core>=1.8 without an upper bound so installers can resolve newer dbt releases. Future dbt Core minors are canary-only until explicitly audited; scheduled/manual canary CI uses unpinned latest dbt-core and dbt-duckdb to make upstream breakage visible without redefining audited support. Install a dbt adapter version that is compatible with the dbt Core runtime in your environment; adapter compatibility is owned by the adapter and dbt Core pairing, not by dbt-osmosis extras.
Optional extras:
dbt-osmosis[workbench]for the Streamlit workbench and related UI dependenciesdbt-osmosis[duckdb]for the DuckDB adapter used by the demo project and local fixture workflowsdbt-osmosis[openai]for LLM-assisted synthesis and natural-language generation featuresdbt-osmosis[azure]for Azure AD authentication used with Azure OpenAIdbt-osmosis[proxy]only installs dependencies for the experimental opt-in SQL proxy runtime; it does not expand the supported product surface, start a proxy server, configure authentication, TLS, or listen/bind settings, or make comment middleware durable. The proxy module entrypoint is a local-only experiment withmysql-mimicdefaults, not a hardened user-facing server; do not expose it to untrusted networks. The proxy comment middleware is in-memory only, andticket:c10proxy25owns proxy support semantics.
Install
With uv:
uv tool install --with="dbt-<adapter>" dbt-osmosis
With pip:
pip install "dbt-osmosis" "dbt-<adapter>"
Replace <adapter> with your dbt adapter package, for example duckdb, snowflake, bigquery, postgres, or redshift.
Quick start
- Configure YAML routing in
dbt_project.yml:
models:
your_project_name:
+dbt-osmosis: "_{model}.yml"
- Optionally set per-folder behavior with
+dbt-osmosis-optionsand a repo-level YAML formatter indbt-osmosis.yml:
formatter: "prettier --write"
- Preview changes safely:
dbt-osmosis yaml refactor --dry-run --check
- Apply the update once the diff looks right:
dbt-osmosis yaml refactor --auto-apply
CLI surface
Top-level commands currently exposed by dbt-osmosis --help:
yaml— manage schema YAML files and documentation inheritancesql— compile or run ad-hoc SQL in dbt contextworkbench— launch the Streamlit workbenchgenerate— generate sources, staging models, models, and SQLnl— natural-language query/model helperstest— suggest dbt teststest-llm— validate LLM client configurationdiff— report schema drift between YAML and the databaselint— lint SQL strings, models, or a whole project
For command-by-command flags and examples, use the docs-site CLI reference rather than relying on this landing page.
Developer tooling
Local development in this repository is built around uv, task, and Ruff.
Common workflows:
task format
task lint
task test
Notes:
- Ruff is the active formatter, linter, and import sorter.
taskis not just verification; the default task formats, lints, runs tests, and then ensures the dev environment is synced.- Repository test fixtures are DuckDB-only today; contributor examples use
demo_duckdb, and targeted core tests may needuv run dbt parse --project-dir demo_duckdb --profiles-dir demo_duckdb -t testto refreshdemo_duckdb/target/manifest.json. - Docs-site commands use the Node toolchain under
docs/:
npm --prefix docs run start
npm --prefix docs run build
npm --prefix docs run serve
Workbench
The optional workbench is a Streamlit app for interactive dbt SQL development.
Install the extra and launch it with:
pip install "dbt-osmosis[workbench]" "dbt-<adapter>"
dbt-osmosis workbench
The hosted demo is linked from the badge at the top of this README.
Pre-commit hook
You can run dbt-osmosis yaml refactor -C as a pre-commit hook:
repos:
- repo: https://github.com/z3z1ma/dbt-osmosis
rev: v1.3.0
hooks:
- id: dbt-osmosis
files: ^models/
args: [--target=prod]
additional_dependencies: [dbt-<adapter>]
That hook keeps schema YAML changes visible in the commit that introduced them.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dbt_osmosis-1.4.0.tar.gz.
File metadata
- Download URL: dbt_osmosis-1.4.0.tar.gz
- Upload date:
- Size: 16.7 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0feb6500ba6103dfde2ad1f456842cbb06a5294ece11b114e44420e584ee0d7c
|
|
| MD5 |
b163adc07b055f368f6930993b663367
|
|
| BLAKE2b-256 |
8b50d6b5014202be9d23fd56ca7811282bbb33a9b245e6b138a5d8cb00aeba00
|
File details
Details for the file dbt_osmosis-1.4.0-py3-none-any.whl.
File metadata
- Download URL: dbt_osmosis-1.4.0-py3-none-any.whl
- Upload date:
- Size: 194.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ad9b79e0a0ca64baa0e9919aba2d4bbc001dcc86db2bdca9f06abb3a28ee11ec
|
|
| MD5 |
ee6639ea41bbeb4182ba0bbbd2aead63
|
|
| BLAKE2b-256 |
3ddd002499a8bec85036120c3239f0f9a8982ae2d7c8d479a3842367221fd114
|