One command to stand up a local Supabase stack on macOS. It installs the
prerequisites (Colima, Docker CLI, Supabase CLI), runs supabase init, disables the
one container Colima can't run, and drops in a make up/make down kit plus
snapshot/restore and schema-promotion scripts.
cd ~/projects/my-new-sandbox
curl -fsSL https://raw.githubusercontent.com/jakeat11labs/supabase-local/main/setup.sh | bash
make upPrefer to read it before running (recommended)?
curl -fsSL https://raw.githubusercontent.com/jakeat11labs/supabase-local/main/setup.sh -o setup.sh
bash setup.sh- Checks macOS + Homebrew. (Colima provides the Docker daemon; brew installs it.)
- Installs any missing prerequisites via Homebrew —
colima,docker, andsupabase— after asking. (--no-installto only check;--yesto skip prompts.) - Runs
supabase initin the current directory (skipped ifsupabase/config.tomlalready exists). - Disables analytics in
config.toml— that container and itsvectorsidecar need the Docker socket handed in, which Colima's virtiofs can't do. - Writes the kit into the current directory:
up.sh/down.sh/Makefile—make upboots Colima thensupabase start;make downstops both.snapshot.sh/restore.sh— checkpoint & roll back the localpublicschema (auth/logins are never touched).promote-schema.sh— ship a schema migration up to a remote/cloud Supabase (schema only, never data; backs prod up first, applies in one transaction).README.md(orSUPABASE-LOCAL.mdif one exists) and a merged.gitignore.
Re-running is safe: it skips supabase init if the project already exists, leaves
config.toml alone if analytics is already off, and won't duplicate .gitignore lines.
| Flag / env | Effect |
|---|---|
-y, --yes (or SUPABASE_LOCAL_YES=1) |
Don't prompt; accept prerequisite installs and file writes. |
--no-install |
Check prerequisites only; never run brew (fails if any are missing). |
-h, --help |
Show help. |
- macOS (uses Colima). On Linux, install Docker Engine natively and run
supabase startdirectly. - Homebrew — not auto-installed (its installer is interactive); the script prints the install command if it's missing.
- Single self-contained script — no dependencies, nothing fetched at runtime, no install hooks. Work happens only when you run it.
- Prompts read from
/dev/tty, so it stays interactive even undercurl | bash(where stdin is the script itself). - It never bundles real credentials.
promote-schema.shreads the cloud connection from$PROD_DATABASE_URLor a gitignored env file you provide. curl | bashruns remote code directly — if that makes you uneasy, use the download-then-run form above and readsetup.shfirst.
MIT