Self-hosted · open-source core, AGPLv3

Governed AI access to the data you already have.

The Data-Bridge is middleware that makes your existing databases queryable over REST, SQL and MCP — without moving them into a cloud warehouse or routing them through someone else's copilot. Every query is audited, and the audit log is yours.

One Docker command. No account, no clone, no build.

bash
# Community edition, free and open source. Put a CSV at ./data/orders.csv
$ export TDB_API_KEYS=$(python3 -c "import secrets; print(secrets.token_hex(32))")

$ docker run -d --rm --name tdb -p 8000:8000 \
    -e TDB_API_KEYS \
    -v "$PWD/data:/data:ro" \
    ghcr.io/tdb-project/tdb-community:latest
$ until curl -sf localhost:8000/health >/dev/null; do sleep 1; done

# Register it once
$ curl -X POST localhost:8000/v1/sources \
    -H "Authorization: Bearer $TDB_API_KEYS" \
    -H "Content-Type: application/json" \
    -d '{"name":"orders","source_type":"csv",
         "connection":{"file_path":"/data/orders.csv"}}'

# Ask it a question — read-only SQL, over HTTP
$ curl -X POST localhost:8000/v1/query \
    -H "Authorization: Bearer $TDB_API_KEYS" \
    -H "Content-Type: application/json" \
    -d '{"source_id":"orders","sql":"SELECT * FROM data LIMIT 5"}'

{"columns": […], "rows": […], "truncated": false}

How it works

One governed surface in front of the databases you already run.

Register a source once. TDB validates every statement as read-only, enforces the row ceiling, writes an audit record, and answers on whichever protocol the caller speaks — with no per-dataset API to build.

Your data

Stays where it is

  • PostgreSQL
  • MySQL
  • SQL Server
  • Snowflake
  • CSV

The Data-Bridge

On your infrastructure

  • read-only validation
  • row ceiling + timeout
  • OAuth 2.1 · RBAC
  • signed audit log

Who asks

No custom integration

  • Claude · Cursor · MCP
  • Metabase · DBeaver · psql
  • REST / OpenAPI
  • your own services

What you get

Built for the part everyone else leaves to you.

Connecting a model to a database is the easy half. The governance around it — who asked, what ran, what came back, and how you prove it later — is the half that keeps the project out of production.

Your data, where it already lives

Connect the databases you already run. No migration, no consolidating everything into one warehouse first, and nothing copied to a vendor you have to trust.

REST, SQL and MCP at once

Point Claude, Cursor or any MCP client straight at it — current with the 2026-07-28 spec, older clients still welcome. In VS Code, the free TDB extension connects it in one command. Call the same source over REST, or connect Metabase, DBeaver and other Postgres clients unchanged. Read-only is enforced before a statement reaches the engine.

An audit log you own

Every query, every result, every AI tool call — recorded on your own infrastructure in a tamper-evident hash chain. Even the free edition writes one.

Inside your perimeter

Runs in one Docker command on infrastructure you control. Your data never leaves it, and OAuth 2.1 with PKCE, RBAC and per-key rate limiting keep access governed.

The audit log

Not a checkbox. The reason this exists.

When an agent can query production data, "what did it actually do?" stops being a curiosity and becomes an audit question. TDB answers it by default, in a format you can hand to a compliance reviewer.

  • Hash-chained records — a removed or edited entry breaks the chain and is detectable.
  • Refusals are logged too, so a blocked write is evidence rather than silence.
  • Every MCP call names the AI client and protocol version that made it.
  • Retention by sealing, never deletion — segments stay independently verifiable.
  • Incremental export to Splunk or S3, so it lands in the SIEM you already run.
tdb_audit.jsonl
{
  "event": "query",
  "source_id": "3f1c…a90b",
  "sql": "SELECT region, SUM(amount) …",
  "rows_returned": 112,
  "key_hint": "tdbk_a…",
  "mcp_client": "analytics-agent/2.1",
  "mcp_protocol": "2026-07-28",
  "seq": 4127,
  "prev_hash": "9c2f…",
  "hash": "e70a…"
}
{
  "event": "denied",
  "action": "mcp_query",
  "reason": "sql_validation_failed",
  "sql": "DELETE FROM orders …",
  "mcp_client": "analytics-agent/2.1",
  "seq": 4128
}

Editions

Evaluate it free. Upgrade when a second source shows up.

The community edition is a complete, honest version of the idea for one CSV source — enough to answer "does this work for us?" without talking to anyone.

Community

Free

AGPLv3 · self-hosted · one Docker command

  • One CSV data source
  • REST + MCP (query_source), MCP spec 2026-07-28
  • Read-only SQL, 1,000-row ceiling
  • Local audit log (NDJSON)
  • Auto schema detection · CLI · OpenAPI
View on GitHub

Try it against your own CSV in a minute.

Nothing to sign up for. If it fits, get in touch about the commercial edition and a 30-day evaluation.