SupaForge
COMPARISON

SupaForge vs. Supabase CLI db diff

SupaForge covers RLS, auth, storage, cron, Edge Functions — not just schema.

Note: The SupaForge CLI is currently being prepared for public release. to be notified when it's available.

What Supabase CLI db diff Does

The built-in supabase db diff command is a solid tool for detecting Postgres schema changes between your local development database and a remote Supabase project. It generates DDL statements for tables, columns, indexes, constraints, views, and functions.

For teams that work exclusively through local development and migrations, this is a natural fit. But in practice, many Supabase teams also use the dashboard to tweak settings — and that's where db diff stops.

What SupaForge Adds

SupaForge is purpose-built for comparing two live Supabase environments — staging vs. production, or any pair of projects. It runs every check, not just schema:

  • Postgres schema & data — powered by DBDiff under the hood
  • RLS policies — detects missing, changed, or extra policies
  • Auth settings — OAuth providers, MFA, JWT config, CAPTCHA, 20+ settings
  • Storage buckets — bucket metadata, policies, CORS
  • Cron jobs — pg_cron schedule differences
  • Reference data — seed tables, lookup data, feature flags
  • Database webhooks — pg_net and supabase_functions.hooks
  • Edge Functions — version mismatches across environments
  • Realtime publications — Postgres publication config drift
  • Vault secrets — missing or mismatched vault entries
  • Extensions — Postgres extensions enabled in one env but not the other
Featuresupabase db diffSupaForge
Schema diffing✅ DDL output✅ Full DDL via DBDiff engine
RLS policies✅ Dedicated check
Auth settings✅ 20+ settings compared
Storage buckets✅ Metadata + policies
Cron jobs✅ pg_cron comparison
Reference data✅ Row-level data diff
Webhooks✅ pg_net hook diff
Edge Functions✅ Version detection
Comparison modeLocal ↔ remoteRemote ↔ remote (any 2 envs)
Promote / applyManual migration applyOne-command promote with dry-run
Score / summaryNoDrift score 0–100 + severity breakdown

Example: Scanning Beyond Schema

Install
npm i -g @akalforge/supaforge
supaforge.config.json
{
  "environments": {
    "staging": {
      "dbUrl": "postgresql://user:pass@db.STAGING_REF.supabase.co:5432/postgres",
      "projectRef": "STAGING_REF",
      "apiKey": "your-staging-service-role-key"
    },
    "production": {
      "dbUrl": "postgresql://user:pass@db.PROD_REF.supabase.co:5432/postgres",
      "projectRef": "PROD_REF",
      "apiKey": "your-production-service-role-key"
    }
  },
  "source": "staging",
  "target": "production"
}
Scan all checks
supaforge scan
Scan only RLS policies
supaforge scan --check rls
Scan auth settings
supaforge scan --check auth
Scan storage buckets
supaforge scan --check storage

When to Use supabase db diff

If your workflow is entirely local-first — you never touch the dashboard, and all changes go through migration files — then supabase db diff remains an excellent choice for schema work. SupaForge complements it by catching everything else.

Summary

supabase db diff covers Postgres schema between local and remote. SupaForge covers every check between any two live environments — making it the more comprehensive option for teams that use the Supabase dashboard alongside code.

Ready to try SupaForge?

Detect drift across all your Supabase environments in seconds.

View on GitHub