TL-M0-16 · Supabase CLI and an empty local project
Why: The Supabase CLI owns the schema (D4) and runs the local stack. This step only proves the stack starts on this Mac; the Backend Engineer configures it and writes schema V13 next (BE packs A to E).
ID TL-M0-16 · Level L0 · Run order row 16
supabase/ exists with config.toml on Postgres 17, and the local stack starts and stops.
Before
Section titled “Before”TL-M0-15 is Done. Docker Desktop is running.
1 · A branch, then the CLI as a pinned dev dependency. --allow-build=supabase lets its install script set up the CLI binary
Section titled “1 · A branch, then the CLI as a pinned dev dependency. --allow-build=supabase lets its install script set up the CLI binary”git switch -c supabase/initpnpm add -Dw -E supabase@2.119.0 --allow-build=supabasepnpm supabase --version2 · Create supabase/ with config.toml
Section titled “2 · Create supabase/ with config.toml”pnpm supabase init3 · Start the stack without the services M0 doesn't use, look at it, and stop it. Open http://127.0.0.1:54323 (Supabase Studio) before stopping
Section titled “3 · Start the stack without the services M0 doesn't use, look at it, and stop it. Open http://127.0.0.1:54323 (Supabase Studio) before stopping”pnpm supabase start -x logflare,vector,imgproxy,edge-runtimepnpm supabase statuspnpm supabase stop4 · Commit, open the pull request, merge
Section titled “4 · Commit, open the pull request, merge”git add -Agit commit -m "build(supabase): add the Supabase CLI and an empty project"git push -u origin supabase/initgh pr create --fillgh pr checks --watchgh pr merge --squash --delete-branchgit pullExpect
Section titled “Expect”- Block 1: 2.119.0. Block 2: “Finished supabase init.”
- Block 3: the first start downloads Docker images for several minutes, then “Started supabase local development setup.” with the local URLs (the API on port 54321, the database on 54322, Studio on 54323) and two keys. They should be a publishable key (sb_publishable_…) and a secret key (sb_secret_…); if they are called anon key and service_role key, write that in Runs, because it matters for D13. These local keys are the same on every machine and aren't secrets. Studio shows an empty public schema. Then “Stopped supabase local development setup.”
- Block 4: checks pass and the pull request merges.
grep major_version supabase/config.tomlcat pnpm-workspace.yamlmajor_version = 17. allowBuilds lists supabase: true.
If it fails
Section titled “If it fails”- A port is already in use: run pnpm supabase stop --all, then the start again.
- The start times out or a container keeps restarting: paste the output and the output of docker stats --no-stream.
pnpm supabase stop --no-backupgit switch maingit branch -D supabase/initDone 2026-10-06 (zuki)