Find and fix drift between Supabase environments: schema, RLS, roles, auth, storage and more.
Runs on your machine from its package; the steps are below.
At most: moves money, runs code or commands, deletes data, or sends messages for you.
Odel charges nothing per call. The publisher may charge for its own service.
Runs locally over stdio
This server isn't hosted — your MCP client launches it from a package registry. Use one of the commands below, or drop the config into your client (e.g. Claude Desktop).
Run
npx -y @akal/supaforge
MCP client config
{
"mcpServers": {
"supaforge": {
"command": "npx",
"args": [
"-y",
"@akal/supaforge"
]
}
}
}Diff and sync your Supabase environments.
Supabase projects running as dev, staging and production drift apart, and nothing in Supabase tells you. A policy added in staging never reaches production; a bucket goes public in one place only; a cron job, webhook or grant exists on one side and not the other.
SupaForge finds every one of those differences across the whole project, not just the schema. It then makes the target match the source safely, and can prove the result before it touches anything.
CVE-2025-48757 found 170+ apps with exposed databases because RLS policies never reached production. SupaForge catches that on the first scan.
Built by Akal.
--allow-destructive.--prove rehearses the migration on a throwaway
copy of the target and applies nothing unless the result matches the
source.--ci gives GitHub annotations and
meaningful exit codes, --json output is machine-readable throughout, and a
built-in MCP server lets AI agents scan and fix safely.npm install -g @akal/supaforge
supaforge init # create supaforge.config.json
supaforge diff # what has drifted?
supaforge diff --detail # with the SQL
supaforge diff --apply # fix the target
Only one project?
supaforge snapshot --env=prod --apply # record it
supaforge restore --env=local --from-snapshot=latest --apply
supaforge clone --env=prod --apply # local copy, data included
Everything that writes previews first. Add --apply to make it happen.
Also on Homebrew (brew install akalsoftware/tap/supaforge), as a
GitHub Action, and as an
MCP server for Cursor, VS Code and Claude, with one-click installs — see
Install.
Full documentation →: the checks, commands, safety model, snapshots and restore, migrations, configuration, self-hosted Supabase, CI and MCP.
The schema and data checks are powered by
DBDiff, installed automatically as a
native binary with no PHP needed. Every release is tested by migrating a
corpus of PostgreSQL shapes in both directions, and checking each result
against an independent catalog oracle and against --prove.
| Path | What |
|---|---|
packages/cli | The supaforge CLI and library, published as @akal/supaforge |
packages/mcp | A standalone build of the MCP server, not published. Use supaforge mcp |
git clone https://github.com/akalsoftware/supaforge.git
cd supaforge/packages/cli
npm install
npm test && npm run lint
./bin/dev.js diff
The integration, database e2e, scenario and Supabase e2e suites are described in the package README. CI runs all of them on every pull request.
Run the Trigger Release workflow (Actions → Trigger Release) with patch,
minor, major or an exact version. It bumps the version, tags it, and
publishes to npm.
node scripts/release.js patch does the same steps locally, as a dry run
unless given --apply.
See CONTRIBUTING.md.
To report a vulnerability, see SECURITY.md.
MIT. Copyright (c) 2026 Akal Software Ltd