Datahub is the pull request for the data your agents change.

Get early access →See how it works
Pull request #142 · app · mainDatahub
#142Normalize customer phone numbers to E.164agent/claude-code → main
ConversationSchemaDataChecks
@@ table customers @@
- phone          text
+ phone          text CHECK (phone ~ '^\+[1-9]\d{6,14}$')
+ phone_country  char(2)
@@ rows customers · 41,207 changed · 0 deleted · sample @@
- id=8813  phone="(415) 555-0142"   phone_country=NULL
+ id=8813  phone="+14155550142"     phone_country="US"
- id=8814  phone="030 12345678"     phone_country=NULL
+ id=8814  phone="+493012345678"    phone_country="DE"
  … 41,205 more
✓ Policy check passed · PII masked in branch · 2 rows flagged for reviewMerge to main

Every agent gets its own copy of production.

Branches are copy-on-write and ready in seconds, on the Postgres you already run. Sensitive columns are masked on the way in, so agents never see the real values.See what comes back →

Terminal · datahubDatahub
$ npx datahub connect postgres://prod.internal/app ✓ connected · 41 tables · 2.3 GB · PII columns masked (4) $ npx datahub mcp install --agent claude-code ✓ Claude Code will branch before every task claude-code datahub.branch("normalize-phones") ✓ branch ready in 1.8 s · copy-on-write · 41,207 rows visible, 4 columns masked

What comes back is a diff, not a connection string.

Schema and data in one review. Approve it yourself, or let a policy do it. On approve, Datahub merges the change into production: batched, audited, reversible in one click.See what it runs on →

Merge #142 → mainDatahub
Review approved · merging to productionpreflight
Schema migration phone CHECK constraint · phone_country addedReversible
41,207 row updates customersBatched · 500 per statement
Rebased on production0 conflicts
RollbackOne click
Approved by illja · policy: row-limit 100kMerge now

Built for the stack you already have.

Any Postgres

Supabase and Neon first, on top of their branch APIs. Then RDS, Cloud SQL and self-hosted, with a clone engine inside your own account. Data never leaves your VPC.

Tell us which Postgres you run →
SupabaseConnected
NeonConnected
Postgres on RDSNext
Cloud SQLNext

Any agent

MCP-native. Claude Code, Cursor, Codex, Gemini CLI, or your own framework: one config line, and the agent branches before every task and opens a pull request when it is done.

Get early access →
Claude CodeConnected
CursorConnected
CodexConnected
Gemini CLIConnected

Production-grade guardrails

PII masking by policy, approvals by policy, and an audit trail for every merge. The guardrails live in the workflow, not in a prompt.

Talk to us about security →
PII columns masked4 of 4
Policy approvalsOn
Audit logEvery merge
RollbackOne click

Put a pull request between your agents and production.

We are onboarding a small number of teams on Supabase and Neon whose agents already touch production data. Leave your work email and we will set you up.

We reply personally, usually the same day.