drt-hub/drt
Reverse ETL for the code-first data stack
Platform-specific configuration:
{
"mcpServers": {
"drt": {
"command": "npx",
"args": [
"-y",
"drt"
]
}
}
}Add the config above to .claude/settings.json under the mcpServers key.
<picture> <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/drt-hub/.github/main/profile/assets/logo-dark.svg"> </picture>
> Reverse ETL for the code-first data stack.
[](https://github.com/drt-hub/drt/actions/workflows/ci.yml) [](https://pypi.org/project/drt-core/) [](LICENSE) [](https://pypi.org/project/drt-core/)
drt syncs data from your data warehouse to external services — declaratively, via YAML and CLI. Think dbt run → drt run. Same developer experience, opposite data direction.
<p align="center"> </p>
pip install drt-core # core (DuckDB included)
drt init && drt run---
| Problem | drt's answer | |---------|-------------| | Census/Hightouch are expensive SaaS | Free, self-hosted OSS | | GUI-first tools don't fit CI/CD | CLI + YAML, Git-native | | dbt/dlt ecosystem has no reverse leg | Same philosophy, same DX | | LLM/MCP era makes GUI SaaS overkill | LLM-native by design |
---
No cloud accounts needed — runs locally with DuckDB in about 5 minutes.
pip install drt-core> For cloud sources: pip install drt-core[bigquery], drt-core[postgres], etc.
mkdir my-drt-project && cd my-drt-project
drt init # select "duckdb" as sourcepython -c "
import duckdb
c = duckdb.connect('warehouse.duckdb')
c.execute('''CREATE TABLE IF NOT EXISTS users AS SELECTLoading reviews...