Local-first AI investigation CLI for OpenMetadata data pipelines.
Project description
OpenBlame
_ _
| | | |
___ _ __ ___ _ __ | |__ | | __ _ _ __ ___ ___
/ _ \| '_ \ / _ \ '_ \| '_ \| |/ _` | '_ ` _ \ / _ \
| (_) | |_) | __/ | | | |_) | | (_| | | | | | | __/
\___/| .__/ \___|_| |_|_.__/|_|\__,_|_| |_| |_|\___|
| |
|_|
OpenBlame is a local-first AI investigation CLI for data pipelines running on OpenMetadata. Point it to a table, and it will trace lineage, inspect recent quality failures, parse schema-changes, surface governance gaps, and draft a root-cause narrative.
The reasoning layer runs entirely on your local Ollama models, ensuring your metadata stays inside your environment.
✨ Features
- 🕵️ Autonomous Investigation: ReAct-style agent loop that plans and executes metadata research.
- 🌳 Lineage & Blast Radius: Automatic upstream/downstream analysis to find affected entities.
- 📉 Schema Drift: Instant diffing of column changes, type updates, and renames.
- 🛡️ Governance Aware: Surfaces missing owners, tiers, and domain gaps as operational risks.
- 🦙 Local-First AI: Powered by Ollama (qwen2.5, llama3, etc.). No external API keys needed for reasoning.
- 🔌 MCP Ready: Built-in Model Context Protocol server to integrate with AI IDEs like Cursor and Claude Desktop.
🚀 Quick Start
1. Install
pip install openblame
2. Configure (CLI-only)
No need to manually edit files. Just run the interactive setup:
openblame configure
It will help you set your OpenMetadata Host, Token, and even auto-detect your installed Ollama models.
3. Investigate
openblame investigate "ecommerce.analytics.customer_churn"
🛠 CLI Commands
investigate
The core command. Runs the full AI reasoning loop.
openblame investigate <table_fqn> [OPTIONS]
Options:
--depth INTEGER Lineage depth (default: 3)
--days INTEGER Lookback days for changes (default: 7)
--output PATH Save report to markdown file
--model TEXT Override default Ollama model
--host TEXT Override OpenMetadata host
--token TEXT Override OpenMetadata JWT token
configure
Interactive setup for your environment. Sets up .env for you.
openblame configure
list-models
Show all models available in your local Ollama instance and see which one is active.
openblame list-models
diff
Check for schema changes in a table without running the full agent.
openblame diff <table_fqn> --days 7
lineage
Visualize upstream and downstream lineage as a tree.
openblame lineage <table_fqn> --depth 3
mcp-server
Start the MCP server for integration with Claude/Cursor.
openblame mcp-server
🔌 MCP Integration (Cursor / Claude)
Add OpenBlame to your claude_desktop_config.json:
{
"mcpServers": {
"openblame": {
"command": "openblame",
"args": ["mcp-server"]
}
}
}
🏗 Development
# Clone and install
git clone https://github.com/manasdutta04/openblame
cd openblame
pip install -e ".[dev]"
# Run Tests (Windows)
.\test.ps1
# Run Tests (Linux/Mac)
make test
📄 License
OpenBlame is released under the MIT License. See LICENSE for details.
🤝 Contributing
We welcome contributions! See CONTRIBUTING.md for guidelines. Check out our Code of Conduct and Security Policy.
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 openblame-0.1.5.tar.gz.
File metadata
- Download URL: openblame-0.1.5.tar.gz
- Upload date:
- Size: 24.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e12c332da5f559ad910811dc6aa5a7f087b2eab500647ba14e533a8ff4ee7f1c
|
|
| MD5 |
72d70f5ed897cacc0ea2fe02b80357d5
|
|
| BLAKE2b-256 |
db350530d7716b4a857d2e61aad28432da320188dc348a2443209c2096c20ef7
|
Provenance
The following attestation bundles were made for openblame-0.1.5.tar.gz:
Publisher:
publish.yml on manasdutta04/openblame
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
openblame-0.1.5.tar.gz -
Subject digest:
e12c332da5f559ad910811dc6aa5a7f087b2eab500647ba14e533a8ff4ee7f1c - Sigstore transparency entry: 1390352774
- Sigstore integration time:
-
Permalink:
manasdutta04/openblame@a89361558a3572a22b3a915d32fedb306735a609 -
Branch / Tag:
refs/tags/v0.1.5 - Owner: https://github.com/manasdutta04
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@a89361558a3572a22b3a915d32fedb306735a609 -
Trigger Event:
push
-
Statement type:
File details
Details for the file openblame-0.1.5-py3-none-any.whl.
File metadata
- Download URL: openblame-0.1.5-py3-none-any.whl
- Upload date:
- Size: 22.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2a073a87cc1bbfe5f515e3264d187e65ac7209ebf11e2eb814e413de18d2707a
|
|
| MD5 |
5d9923c327762d241228492ddcee11f0
|
|
| BLAKE2b-256 |
a056d7a304d7a6f44123ef3f83eafbbf30686593d849f6b6052b5d579c5b4aee
|
Provenance
The following attestation bundles were made for openblame-0.1.5-py3-none-any.whl:
Publisher:
publish.yml on manasdutta04/openblame
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
openblame-0.1.5-py3-none-any.whl -
Subject digest:
2a073a87cc1bbfe5f515e3264d187e65ac7209ebf11e2eb814e413de18d2707a - Sigstore transparency entry: 1390352902
- Sigstore integration time:
-
Permalink:
manasdutta04/openblame@a89361558a3572a22b3a915d32fedb306735a609 -
Branch / Tag:
refs/tags/v0.1.5 - Owner: https://github.com/manasdutta04
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@a89361558a3572a22b3a915d32fedb306735a609 -
Trigger Event:
push
-
Statement type: