Supabase Local Manager

Run and manage many local Supabase stacks from one dashboard, with one stable front door for every project's services. Self-hosted, single process, no cloud account.

Early access. The source code is in early access and currently private. Request access on GitHub to get involved.
Front door:6000
Subdomain proxy:9000
Per project11 ports
LicenceGPL-3.0-or-later

What it is

Supabase gives you Postgres with auth, storage, real-time and generated APIs. Out of the box it is built around one project in one folder, reached through a handful of raw ports. Supabase Local Manager turns that into a control plane: one Node and Express service that provisions and manages many local Supabase stacks at the same time, each on its own reserved block of ports, with a management interface for its database, SQL editor, auth, storage, functions, logs, migrations and API documentation.

Each project remains a normal Supabase project. The manager creates plain Supabase configurations, starts them with the open-source Supabase CLI, and writes the allocated ports into the project's own supabase/config.toml. Nothing about the stack is proprietary, and the project directory continues to work with the CLI on its own.

Why it exists

Running several supabase start stacks means juggling ports and remembering many service URLs. Every restart can reshuffle them. The manager reserves a port block per project, shows project and service health in one dashboard, and routes every project's services through one shared entry point, so an application can use a stable URL instead of a port that changes.

It also puts the everyday administration surfaces in one place: table editing, SQL, row-level security, auth users, storage buckets, edge functions, logs, migrations, backups, advisors and API docs. You do not need a cloud account, an internet connection for the interface, or a hosted Supabase project.

The front door in one picture

Front-door and subdomain routing A client request reaches either the path-routed front door on port 6000 or the host-routed subdomain proxy on port 9000. Both resolve a project and run the same access evaluator before forwarding to Kong or Studio for that project. Two entry points, one access policy Clientsupabase-js, curl,Studio, browser app Front door:6000/<database-link>/…resolveByPath Subdomain proxy:9000 · slug.base-domainresolve by Host header evaluateFrontDoorAccess manager session + ownership or project anon / service key unknown link → 404 non-owner → same 404 Kong gatewayREST · Auth · StorageRealtime · Functions Studioproject SPA routesnever opened by an API key legend entry point shared policy policy check

Diagram: a client request reaches the front door on port 6000, the first path segment resolves to a project's database link, the access evaluator checks the manager session or the project API key, and the request is forwarded to that project's Kong gateway or Studio.

Entry pointsAccess checkDenied path

How the pieces fit

The manager process serves the React dashboard and the management API. It owns a small SQLite database of projects, users, settings and port allocations, loaded in memory with sql.js. For project operations it shells out to the Supabase CLI; it does not use a Docker API client. Each project's Postgres data stays in that project's own Docker volumes.

Two entry points make every project reachable. The path-routed front door listens on port 6000 and uses the first URL segment as the project's database link. The subdomain proxy listens on port 9000 and resolves the project from the Host header. Both call the same access evaluator, so the routing model cannot change the policy. An unknown link returns a plain 404 before credentials are considered; a known link without credentials returns 401; a manager session reaches only projects it owns or administers.

Everything the manager covers

Dashboard

Project counts, service health, activity and quick actions in one control room.

Dashboard

Open dashboard

Projects

Register, discover, import, start, stop, tag and open local Supabase stacks.

Projects

Open projects

Database

Browse schemas, inspect structure, edit rows and visualise relationships.

Database

Open database

SQL workbench

Role-aware queries, snippets, history, exports, explain plans and an assistant.

SQL editor

Open sql workbench

Auth and RLS

Users, sessions, providers, templates, policies and a policy test sandbox.

Auth

Open auth and rls

Storage

Buckets, uploads with progress, previews, signed URLs and policy tests.

Storage

Open storage

Migrations

Create, diff, apply and inspect migration history per project.

Database · Migrations

Open migrations

Backups

Create named database backups, list restore points and restore one.

Database · Backups

Open backups

Advisors

Security and performance findings with severity, guidance and dismissal.

Advisors

Open advisors

API docs

OpenAPI generated from the live schema, Swagger UI and client snippets.

API docs

Open api docs

Logs and observability

Tail service logs, query six log sources and chart API and service traffic.

Logs · Observability

Open logs and observability

Real-time

Open a realtime channel, join topics, inspect frames and send test inserts.

Real-time

Open real-time

Templates

Save a project as a template and create a matching project from it.

Templates

Open templates

Admin and settings

Manager accounts, system settings, proxy controls, profile and project settings.

Admin · Settings

Open admin and settings

A project at a glance

Project overview showing service health for Postgres, Kong, Studio, Auth, Storage and Realtime, masked API keys, quickstart snippets, and an advisor findings summary.
project-overview
A single project overview: service health, masked keys, client snippets and advisor results.

The control room

Manager dashboard in dark theme showing project totals, system health cards for Docker, disk space and memory, quick actions, and a recent activity feed.
dashboard
The control room: project counts, system health, quick actions and recent activity.

A look around

Fourteen screens from the product itself, one or two per area. The full set is on the gallery page.

Manager dashboard in dark theme with project cards and quick actions.
dashboard
A compact view of every project and the most recent manager activity.
Projects table in dark theme with a project row, its status, creation date and the start, edit and delete actions; the stored path column is redacted.
projects
Project rows with status, path and the actions available in each state. Paths are redacted.
Database tab listing the project's schemas with table counts, including public, auth, storage, realtime and supabase_functions.
database
The database explorer groups tables by schema and shows their table counts.
SQL editor with a role selector, snippet tree, query editor, read-only toggle, Run Query, Explain Plan and AI Assistant controls.
sql
The SQL workbench combines snippets, role-aware execution, explain plans and an AI assistant.
Row-level security test panel with a role selector, a query box and a test action, beside the table list it applies to.
auth
A row-level security test: choose a role, run a probe query and read the result.
Storage dialog listing a public bucket with its size and object count, and an empty object area.
storage
A storage bucket with its visibility and size; the object list is empty.
Migrations dialog listing migration files with applied and pending badges and a count of each.
migrations
Migration files and their applied or pending state, per project.
Database dialog on the Backups tab with the Create Backup button and an empty-state message saying no backups exist yet.
backups
The Backups tab with no restore points yet and a Create Backup action.
Advisors screen showing security finding totals by severity, with finding cards for row-level security and extensions in public schemas.
advisors
Advisors summarise security findings by severity and explain each one.
API reference screen with a language picker, OpenAPI download, endpoint sections and an embedded Swagger UI generated from the database schema.
api-docs
API documentation is generated from the project's live schema.
Observability view for API traffic with a 24-hour range selector, request, latency, error, CPU and RAM counters, and request and latency charts.
observability
Observability collects API request, latency, error, CPU and memory metrics.
WebSocket test panel showing a connected state and the measured latency.
project-services
The WebSocket tester reports whether the real-time channel is live.
Template details dialog showing a template name, description, tags and a Create Project action.
templates
Template details with the action to create a project from the template.
User Management page listing manager accounts with role, status, last-login and created columns, plus actions to deactivate, edit or delete a user.
admin
Manager accounts are managed from the admin area.

Architecture, in depth

The manager is not a black box. The site documents each subsystem from the code: how one entry port routes to the right stack, how port bands are allocated, what the stack lifecycle does, how the wrapper package is organised, how the web app is structured, what a request traverses, where state lives, and which principles the security model follows.

Verified quick facts

The manager needs Node.js 18 or later, npm, a running Docker daemon for managed projects, and the Supabase CLI through npx. The manager interface starts without Docker; starting a project does not. The default entry ports are 6000 for the path-routed front door, 9000 for the subdomain proxy and 6432 for the shared PgBouncer pooler. Each project owns 11 ports from the 60000 band. The manager API listens on PORT; the example environment file uses 24084 and the code fallback is 24085.

Common questions

Short answers are on the FAQ page: Docker and CLI requirements, how many projects you can run, the front door, port bands, data locations, secret protection, imports and licensing. If something will not start, the troubleshooting guide lists the verified symptoms, causes and fixes.