Every database change, reviewed before it ships.

Sieve reviews every migration PR before it merges — not just the schema diff, but how the change behaves against your real data. Blast radius, risk score, rollout plan, posted as a GitHub check. Install in 60 seconds.

sieve · reviews
Sample data — not live22:09:29
time
repo · change
risk
call
22:09:26
acme-co/platform
DROP COLUMN sessions.token
88
block
22:09:19
marlin/dashboard
ADD FOREIGN KEY orders.customer_id
34
review
22:09:12
acme-co/platform
ALTER TYPE user_role ADD VALUE 'editor'
28
review
22:09:05
marlin/dashboard
ALTER COLUMN users.email DROP NOT NULL
42
review
22:08:58
acme-co/platform
RENAME organizations → workspaces
71
review
22:08:51
marlin/dashboard
DROP TABLE legacy_logs
92
block
22:08:44
acme-co/platform
CREATE INDEX CONCURRENTLY idx_orders_at
6
ok
22:08:37
marlin/dashboard
CREATE INDEX events_user_idx
12
ok

How it works

Three steps. Under a minute from push to verdict.

  1. 1

    Install on a repo

    Add the GitHub App to any repo that ships database migrations. One click, no CI changes, no YAML.

  2. 2

    Open a schema PR

    Sieve detects any PR that touches your schema or migrations — Prisma, Drizzle, Django, Rails, raw SQL, and more. No manual trigger.

  3. 3

    Get the review on the PR

    Check run + PR comment: verdict, risk score, blast radius, rollout SQL, rollback. Full report linked.

Install guide
Beyond the schema diff

The only honest way to know what a migration does to your data is to check it against data.

Schema-only review tells you a change looks risky. Sieve tells you whether it will actually fail on your data — and proves it. Opt-in, least-privilege, off by default.

Tier 1 · read-only

Reads the data shape, never the data

Sieve checks the change against the planner's own statistics — row counts, null fractions, distinctness, index coverage. It knows a NOT NULL will fail when 12% of the column is already null, and that a blocking lock is brief at 800 rows but minutes at 40M. No row of real data is ever read.

Tier 2 · shadow run

Applies the migration, then rolls it back

On request, Sieve runs the candidate migration against a throwaway copy inside a transaction, measures the real outcome — duration, table rewrites, actual constraint failures — and rolls back. The dangerous migration fails on a disposable branch instead of in production.

See a data-aware review
More than a verdict

A review that does something about it.

Flagging the risk is the floor. Sieve also writes the safe version, remembers what each table has done before, and enforces the rules you set.

Writes the fix, not just the warning

When a change is unsafe, Sieve can open a follow-up PR with the corrected, phased migration — expand, backfill, contract — ready to review.

Remembers each table

Every review feeds a track record. Sieve flags when a table has caused incidents or absorbed risky changes before — context a one-off read can't have.

Enforces your policy

A .sieve.yml sets the risk level that fails Sieve's check. Make it a required check in branch protection and a risky migration can't merge — advisory until you decide otherwise.

Works with how you already ship

One engine across every ORM and database — no rewiring, no new workflow.

PrismaDrizzleTypeORMSequelizeKnexDjangoRailsSQLAlchemyRaw SQLPostgreSQLPrismaDrizzleTypeORMSequelizeKnexDjangoRailsSQLAlchemyRaw SQLPostgreSQL
MySQLMariaDBSQL ServerCockroachDBSQLiteSupabaseNeonPlanetScaleAWS RDSCloud SQLMySQLMariaDBSQL ServerCockroachDBSQLiteSupabaseNeonPlanetScaleAWS RDSCloud SQL

Run it on your next migration PR. Free forever on public repos.

Private repos start at $29/schema PR author/month. Try the playground first, no install required.

Sieve