Early Access

Drift Scanner

Catch PostgreSQL schema drift before it hits production.

Drift Scanner watches your databases and tells you the moment a column type changes, a constraint loosens, or environments fall out of sync. Read-only. Agentless. Wires into the CI you already have.

< 5 min
Setup
99.9%
Uptime SLO
0
Agents required

Drift Scanner is in early access. Founder pricing locked in for the first hundred customers.

How it works

Connection to first alert in under five minutes.

01

Connect

Add a Postgres environment with read-only credentials. Drift Scanner only reads catalog metadata, never your data.

02

Scan

It snapshots tables, columns, types, indexes, constraints, and extensions on the schedule you set.

03

Detect

Each change is classified breaking, risky, or safe — based on the operation and the data shape behind it.

04

Alert

Slack, webhook, or PR comment with the full diff. Wires into the workflow your team already uses.

Architecture

What happens behind the scenes

Read-only access, deterministic catalog queries, structured snapshots, severity-classified alerts.

Step 01

Schema introspection

Drift Scanner queries pg_catalog and information_schema directly with explicit ORDER BY clauses — never pg_dump. pg_dump output is non-deterministic; direct catalog queries produce identical bytes for identical schemas, every time.

Tables, columns, types, nullability, defaults, indexes, and constraints — captured without ever reading application data.

drift_scanner.sql
1700 dark:text-emerald-400 font-semibold">SELECT
2  table_schema,
3  table_name,
4  column_name,
5  data_type,
6  is_nullable,
7  column_default,
8  character_maximum_length
9700 dark:text-emerald-400 font-semibold">FROM information_schema.columns
10700 dark:text-emerald-400 font-semibold">WHERE table_schema 700 dark:text-emerald-400 font-semibold">NOT 700 dark:text-emerald-400 font-semibold">IN (
11  300">'pg_catalog',
12  300">'information_schema'
13)
14700 dark:text-emerald-400 font-semibold">ORDER 700 dark:text-emerald-400 font-semibold">BY
15  table_schema,
16  table_name,
17  ordinal_position;
Step 02

Environment registration

Register an environment with one API call. Drift Scanner takes it from there — first snapshot in under thirty seconds, then automatic snapshots on the cadence you set.

terminal
1$ curl -X POST https:300">"text-slate-400 dark:text-slate-500 italic">//drift.arcnull.com/api/v1/environments \
2  -H 300">"Authorization: Bearer ds_live_sk_..." \
3  -H 300">"Content-Type: application/json" \
4  -d '{
5    300">"name": 300">"production",
6    300">"connection": {
7      300">"host": 300">"db.example.com",
8      300">"port": 5432,
9      300">"database": 300">"myapp",
10      300">"user": 300">"drift_reader"
11    },
12    300">"scan_interval": 300">"6h",
13    300">"labels": [300">"production", 300">"us-east-1"]
14  }'
15
16300">"text-slate-400 dark:text-slate-500 italic"># 201 Created
17{
18  300">"id": 300">"env_01HQXK9...",
19  300">"status": 300">"connected",
20  300">"schemas_detected": 4,
21  300">"tables_detected": 47,
22  300">"first_snapshot_at": 300">"2026-04-12T08:31:00Z"
23}
Step 03

CI integration

Drop the GitHub Action into your workflow. Drift checks run on every PR and on a schedule. Breaking changes block the merge.

.github/workflows/drift-check.yml
1name: Schema Drift Check
2700 dark:text-emerald-400 font-semibold">on:
3  push:
4    branches: [main]
5  pull_request:
6  schedule:
7    - cron: 300">'0 */6 * * *'
8
9jobs:
10  drift-check:
11    runs-700 dark:text-emerald-400 font-semibold">on: ubuntu-latest
12    steps:
13      - uses: arcnull-hq/schema-drift-action@v1
14        with:
15          api-key: ${{ secrets.DRIFT_SCANNER_API_KEY }}
16          base-env: production
17          head-env: staging
18          fail-700 dark:text-emerald-400 font-semibold">on-breaking: 700 dark:text-emerald-400 font-semibold">true
19          notify: slack
Step 04

Structured alerts

When drift is detected, you get a webhook with the full diff, severity, breaking-change count, and a dashboard link. Slack and PR comments are powered by the same payload.

webhook_payload.json
1{
2  300">"event": 300">"drift.detected",
3  300">"severity": 300">"high",
4  300">"breaking_count": 2,
5  300">"timestamp": 300">"2026-04-12T08:30:00Z",
6  300">"environment": {
7    300">"base": 300">"production",
8    300">"head": 300">"staging"
9  },
10  300">"items": [
11    {
12      300">"700 dark:text-emerald-400 font-semibold">table": 300">"users",
13      300">"column": 300">"phone_verified",
14      300">"change": 300">"column_added",
15      300">"type": 300">"boolean",
16      300">"nullable": 700 dark:text-emerald-400 font-semibold">true,
17      300">"default": 300">"700 dark:text-emerald-400 font-semibold">false",
18      300">"breaking": 700 dark:text-emerald-400 font-semibold">false
19    },
20    {
21      300">"700 dark:text-emerald-400 font-semibold">table": 300">"orders",
22      300">"column": 300">"total_amount",
23      300">"change": 300">"type_changed",
24      300">"700 dark:text-emerald-400 font-semibold">from": 300">"numeric(10,2)",
25      300">"to": 300">"integer",
26      300">"breaking": 700 dark:text-emerald-400 font-semibold">true
27    }
28  ],
29  300">"dashboard_url": 300">"https:400 dark:text-slate-500 italic300">">//drift.arcnull.com/api/v1/diffs/rpt_..."
30}
Pricing

Free to start. Move up when you need more.

Free tier covers two databases. Pro is for teams running Postgres in production. Team adds SSO and twelve hours of onboarding.

Free

Two databases. No credit card.

$0/month
  • 2 environments
  • Daily scans
  • 7 days of drift history
  • Email alerts
  • GitHub Action
  • Community support
Sign up free

Pro

For teams shipping Postgres changes weekly.

$49/month
  • 10 environments
  • Hourly scans
  • 90 days of history
  • Slack + webhook alerts
  • PR comments
  • Priority support
  • 14-day free trial

Team

For teams that need SSO and onboarding help.

$149/month
  • Unlimited environments
  • 5-minute scans
  • 1 year of history
  • SSO and audit log
  • Custom integrations
  • 12 hours of onboarding
  • Dedicated support channel
Talk to the founder
FAQ

Questions

Catch the next drift before it ships.

Free tier covers two databases. Setup is under five minutes. No credit card.

Join Early Access →