Productivity, warehous cost and QoL improvements for your dbt development
Project description
| | | | | |
_` | _ \ _| ____| _| _ \ _ \ | _ \ _ \ \ \ /
\__,_| _.__/ \__| \__| \___/ \___/ _| _.__/ \___/ _\_\
A powerful CLI toolkit to supercharge your dbt development workflow
Built with the tools and technologies:
dbt-toolbox
A powerful CLI toolkit that supercharges your dbt development workflow with intelligent caching, dependency analysis, and enhanced documentation generation.
🚀 What Makes dbt-toolbox Amazing
Smart Caching & Performance
- Lightning-fast model parsing with intelligent cache invalidation
- Persistent Jinja environment caching for instant macro resolution
- Dependency graph caching for rapid upstream/downstream analysis
Enhanced dbt Commands
dt build- Drop-in replacement fordbt buildwith enhanced output and performancedt run- Drop-in replacement fordbt runwith smart execution and caching- Target-specific options for environment control
- Intelligent pre/post processing hooks
LLM Ready via MCP server
- Contains mcp server to make your LLM powered
dbtdevelopment even better. - Tools support the most common
dbt-toolboxfeatuers.
Intelligent Documentation
dt docs- YAML documentation generator with smart column inheritance- Automatically inherits descriptions from upstream models and macros
- Tracks column changes (additions, removals, reordering) between runs
- One-click clipboard integration
Dependency Intelligence
- Lightweight DAG implementation for model and macro relationships
- Efficient upstream/downstream traversal
- Node type tracking and statistics
- Perfect for impact analysis and refactoring
Configuration
- Multi-source settings hierarchy (env vars > TOML > dbt profiles > defaults)
- Dynamic dbt profile and target integration
- Source tracking for all configuration values
🛠️ Installation
# Using uv
uv add dbt-toolbox
# Or install with pip
pip install dbt-toolbox
# Install with MCP server support
uv add "dbt-toolbox[mcp]"
⚡ Quick Start
# Initialize and explore your project
dt settings # View all configuration
# Enhanced dbt commands with caching
dt build # Build with intelligent caching
dt run --model +my_model+ # Support for most dbt selection syntax
dt build --target prod # Build against production target
# Analyze cache and dependencies
dt analyze # Analyze all models
dt analyze --model customers+ # Analyze specific model selection
# Generate documentation YAML
dt docs --model customers # Generate docs for specific model
dt docs -m orders --clipboard # Copy to clipboard
📋 Core Commands
| Command | Description |
|---|---|
dt build |
Enhanced dbt build with caching and better output |
dt run |
Enhanced dbt run with intelligent execution and caching |
dt docs |
Generate YAML documentation with smart inheritance |
dt analyze |
Analyze cache state and model dependencies without execution |
dt clean |
Clear all cached data with detailed reporting |
dt settings |
Inspect configuration from all sources |
MCP Server Integration
dbt-toolbox can also run as an MCP (Model Context Protocol) server, enabling integration with external tools and AI assistants like Claude Code.
Key Features:
- Expose dbt-toolbox functionality through standardized MCP protocol
- Same intelligent caching and validation as CLI commands
- Perfect for AI-assisted dbt development workflows
Quick Setup:
# Install with MCP support
uv add "dbt-toolbox[mcp]"
# Available MCP tools:
# - analyze_models: Validate model references and column lineage
# - build_models: Build models with intelligent execution
For detailed MCP server setup and usage, see MCP.md.
🏗️ Key Features
Intelligent Caching System
dbt-toolbox caches parsed models, macros, and Jinja environments in .dbt_toolbox/ directory with smart invalidation based on file changes and project configuration.
Smart Execution & Lineage Validation
- Only executes models that actually need rebuilding based on dependency analysis
- Optional lineage validation to catch broken references before execution
- Configurable model validation ignore lists for legacy models
- Cache validity controls for optimal performance
Dependency Graph Analysis
Lightweight DAG implementation provides efficient model relationship tracking:
- Upstream/downstream dependency resolution
- Node type classification (models, macros, sources)
- Impact analysis for refactoring
Enhanced CLI Experience
- Colored output with progress indicators
- Target-specific execution (
--targetoption) - Command shadowing for seamless dbt integration
- Comprehensive error handling and reporting
Smart Documentation Generation
The dt docs command intelligently inherits column descriptions from:
- Upstream model columns with matching names
- Macro parameters that reference the columns
- Existing schema.yml documentation
⚙️ Configuration
dbt-toolbox supports configuration through multiple sources with the following precedence:
- Environment Variables (highest priority)
- TOML Configuration (
pyproject.toml) - dbt Profiles (for SQL dialect)
- Auto-detection (for project paths)
- Defaults (lowest priority)
Key Configuration Options
For an exhaustive list see CLI.md
| Setting | Description | Default |
|---|---|---|
dbt_project_dir |
Path to dbt project | Auto-detected |
cache_path |
Cache directory location | .dbt_toolbox |
cache_validity_minutes |
Cache validity duration | 1440 (24 hours) |
enforce_lineage_validation |
Enable lineage validation | true |
models_ignore_validation |
Models to skip validation | [] |
debug |
Enable debug logging | false |
skip_placeholder |
Skip placeholder descriptions | false |
placeholder_description |
Custom placeholder text | "TODO: PLACEHOLDER" |
Configuration Examples
Environment Variables:
export DBT_TOOLBOX_ENFORCE_LINEAGE_VALIDATION=false
export DBT_TOOLBOX_MODELS_IGNORE_VALIDATION="legacy_model,staging_temp"
export DBT_TOOLBOX_CACHE_VALIDITY_MINUTES=720 # Default=1440
TOML Configuration:
[tool.dbt_toolbox]
enforce_lineage_validation = false
models_ignore_validation = ["legacy_model", "staging_temp"]
cache_validity_minutes = 720 # Default=1440
📚 Documentation
- CLI Reference - Detailed command documentation and examples
- MCP Server Guide - MCP server setup and integration
- Contributing Guide - Development setup and guidelines
🧪 Testing Integration
dbt-toolbox includes a testing module for your dbt projects:
from dbt_toolbox.testing import check_column_documentation
def test_model_documentation():
"""Ensure all model columns are documented."""
result = check_column_documentation()
if result:
pytest.fail(result)
⭐ Roadmap
-
dt docs: Automatic yaml docs generation. -
Smart model selection: Smart caching and model selection for optimized executions. -
MCP Server: Publish commands via MCP server. -
Expand testing stack: Build out thedbt_toolbox.testingstack. -
dt testCommand, with test parsing and caching.
🤝 Contributing
We welcome contributions! Please see our Contributing Guide for development setup, coding standards, and contribution guidelines.
📄 License
MIT License - Feel free to use this project in your own work.
🙏 Acknowledgments
Built with modern Python tooling:
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_toolbox-0.6.2.tar.gz.
File metadata
- Download URL: dbt_toolbox-0.6.2.tar.gz
- Upload date:
- Size: 291.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4fe1b9fb01c73a80b36d20af6eec4f89f8cda76a51bafa3e73b780b76cb9850b
|
|
| MD5 |
b11784d6ad00ae7b7af358b88cbf8f4b
|
|
| BLAKE2b-256 |
eaff75e6e9f17e71fd71e35f945b9fd4359169bc8a75deffdb8ca96ef7103b63
|
Provenance
The following attestation bundles were made for dbt_toolbox-0.6.2.tar.gz:
Publisher:
release_publish.yml on erikmunkby/dbt-toolbox
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dbt_toolbox-0.6.2.tar.gz -
Subject digest:
4fe1b9fb01c73a80b36d20af6eec4f89f8cda76a51bafa3e73b780b76cb9850b - Sigstore transparency entry: 437945256
- Sigstore integration time:
-
Permalink:
erikmunkby/dbt-toolbox@303ef46f451b18808a34bf4f9e859d19b673e932 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/erikmunkby
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release_publish.yml@303ef46f451b18808a34bf4f9e859d19b673e932 -
Trigger Event:
push
-
Statement type:
File details
Details for the file dbt_toolbox-0.6.2-py3-none-any.whl.
File metadata
- Download URL: dbt_toolbox-0.6.2-py3-none-any.whl
- Upload date:
- Size: 62.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
730db99b09376b3f6ccaa2adefb6ae0b6df768fb935447762159e64515542191
|
|
| MD5 |
e5a8b36b4bdd373ae4ce91a0d81e60ae
|
|
| BLAKE2b-256 |
4b8f5d6481f1738efd482c5c4b99d944c5c280d323cbb027e756d0fad50b00a4
|
Provenance
The following attestation bundles were made for dbt_toolbox-0.6.2-py3-none-any.whl:
Publisher:
release_publish.yml on erikmunkby/dbt-toolbox
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dbt_toolbox-0.6.2-py3-none-any.whl -
Subject digest:
730db99b09376b3f6ccaa2adefb6ae0b6df768fb935447762159e64515542191 - Sigstore transparency entry: 437945269
- Sigstore integration time:
-
Permalink:
erikmunkby/dbt-toolbox@303ef46f451b18808a34bf4f9e859d19b673e932 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/erikmunkby
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release_publish.yml@303ef46f451b18808a34bf4f9e859d19b673e932 -
Trigger Event:
push
-
Statement type: