You’re offline. The guide still works; license checks will resume when you reconnect.
Local-only migration inventory · v0.1
Know what has to move before you move it.
Scan a Supabase project in seconds. Get the managed dependencies, portable SQL checks, replacement routes, and honest effort flags you need for one planning session.
One managed block becomes a route you can inspect, sequence, and own.
01 / Survey
A map, not a migration button.
The CLI reads only local files: config, migrations, seed SQL, and Edge Function source. It never asks for a project token and never touches production data.
Each finding says what open-source code can move and which backups, scaling, delivery, or operational guarantees cannot.
Sequence the exit
Replacement choices, effort, file-and-line evidence, and a restore/cutover checklist become a Markdown, JSON, or terminal report.
02 / Run locally
Ten minutes to a useful inventory.
Build the single Rust binary from source today. Release archives follow the same no-telemetry, no-network scanner. Works from a project root or its supabase/ directory.
Install from source
Requires Rust 1.78 or newer. The package is MIT licensed.
This representative map comes from a project with social login, object uploads, database policies, realtime notes, and one mail function. Filter it like you would read a real report.
Route: self-host GoTrue, Keycloak, or application auth
Rehearse supported user and session transfer
02
Object storage
High effort · replace
Evidencefiles.sql:4 creates bucket; three policies use storage.objects.
Count and hash objects with read-only access
Route: S3, R2, or MinIO plus policy adapter
Test signed URLs, cache, transforms, and restore
03
Realtime
Medium effort · replace
Evidencenotes.sql:39 adds a publication; client subscribes to update events.
Measure fan-out, connection count, presence, and broadcast
Route: Supabase Realtime or an application websocket
Monitor slots and replication lag
04
Edge Function
Medium effort · adapt
Evidencesend-mail/index.ts:1 uses a Supabase client, Deno secret, and outbound fetch.
Record secret names only; rotate values at cutover
Route: Deno, Hono/Node, or a small container
Add runtime, retry, timeout, and observability tests
05
Row-level security
Medium effort · adapt
Evidence Four policies call auth.uid() and expect authenticated.
Native Postgres RLS is portable SQL
Replace Supabase claim shape and roles
Run allow-and-deny regression cases
06
Functions & triggers
Low effort · portable
Evidence Two PL/pgSQL functions and one trigger; one is SECURITY DEFINER.
Restore native Postgres SQL in dependency order
Audit owners and fixed search paths
Run behavior tests under target roles
Optional / One time
Turn the map into a cutover room.
$19 one-time
The open-source CLI and every export stay free. Planning Room adds a private browser workspace for assigning owners, choosing replacement routes, tracking decisions, and printing a cutover sheet.
Import any Exit Map JSON report
Choose a replacement, owner, and status per finding
Save locally on this device and print a clean plan
Sociobot/Dodo is the merchant of record. Refunds are handled there and revoke the license automatically. Read our privacy notice and terms.
Unlocked
Your local planning room.
Nothing in this workspace is uploaded. Import a CLI JSON report, make the plan, then print or save it in your usual project system.
Paste a report or load the example to begin.
Dependency
Replacement
Owner
Status
04 / Boundaries
Before you point it at a repo.
Exit Map is deliberately narrow: decision support before a migration, not a tool that quietly moves production data.
Does it connect to Supabase?
No. The scanner has no network code and accepts no credentials. It only reads files beneath the path you give it.
Can it promise a complete inventory?
It inventories what is represented locally and flags missing config, SQL, and functions. Dashboard-only settings, live data volume, sessions, and dynamic SQL still need the manual read-only checks included in every report.
Does it perform the migration?
No. Automatic live migration, hosting, and auth-data extraction are explicit non-goals. The output helps you estimate, choose replacements, and rehearse a controlled move.
Is it affiliated with Supabase?
No. Supabase is a trademark of Supabase, Inc. This independent project is not endorsed by or affiliated with Supabase.