dbm

Git for your database.


Branch before risky migrations. Commit the full database state. Roll back in seconds, not hours. Merge field-level — something git can't do.

dbm connects to your database (read-only), snapshots every table and row, and stores it in a content-addressed object store under .dbm/. Subsequent commits store only the delta — which rows changed and how. Branches are pointers. Branching is O(1).

Install

curl -fsSL https://releases.eldridgemorgan.com/install.sh | sh

27MB. Linux and macOS. No dependencies.

How it works

$ dbm init --db prod --url postgres://localhost/myapp
$ dbm commit -m "friday before deploy"
$ dbm branch scary-migration
$ rails db:migrate
$ dbm commit -m "added subscriptions"
$ dbm diff main..scary-migration
$ dbm merge scary-migration

If something broke:

$ dbm checkout main

Done. Database restored. No pg_dump, no restore scripts, no downtime.

Team sync

$ dbm push
  Pushed: 12 objects (84 KB)

$ dbm pull
  Pulled: 12 objects (84 KB)

Encrypted cloud storage. Per-team namespace. Multiple databases per repo — prod, staging, test — with branches scoped per database.

AI agent safety

Agents get sandboxed branches with scoped permissions, operation budgets, and auto-expiring TTLs. Every operation is logged. Changes only reach production after human review.

Status

Postgres is stable. MySQL is next. 142 tests. Private beta — onboarding a small number of teams.

Request access

Leave your email. I'll send you an invite code.