supabase/cli

Supabase CLI. Manage postgres migrations, run Supabase locally, deploy edge functions. Postgres backups. Generating types from your database schema.

2,411

stars

5,036

commits

TypeScript

primary language

Sep 11, 2026

updated

supabase.com/docs/reference/cli/about
cli
database
database-management
dbms
environment
local
postgres
postgresql
supabase
Browse cluster: PostgreSQL and Supabase tooling

README

Supabase CLI

Develop locally and deploy to the Supabase Platform from your terminal.

npm Build License Discord


Supabase CLI brings the Supabase Platform to your terminal. Run the full local stack, manage database migrations, deploy Edge Functions, generate types, and automate project workflows.

Installation

# YOLO
curl -fsSL https://raw.githubusercontent.com/supabase/cli/main/install | bash

# npm
npm install -D supabase                   # or bun/pnpm/yarn add -D supabase
npm install -D supabase@beta              # beta channel

# macOS and Linux
brew install supabase/tap/supabase        # always up to date
brew install supabase                     # official formula, may be delayed
brew install supabase/tap/supabase-beta   # beta channel

# Windows
scoop bucket add supabase https://github.com/supabase/scoop-bucket.git
scoop install supabase
scoop install supabase-beta               # beta channel

# Linux packages
# Download .apk, .deb, .rpm, or .pkg.tar.zst from GitHub Releases.

Linux packages are available from Releases. Community-maintained packages are also available through pkgx and Nixpkgs.

Start Local Development

Create a Supabase workspace and start the local stack:

supabase init
supabase start
supabase status

The local stack includes Postgres, Auth, Realtime, Storage, Edge Functions, and the Supabase APIs.

Start from a template:

supabase bootstrap

Connect your local workspace to a hosted Supabase project:

supabase login
supabase link

Manage Your Database

Create migrations, compare schemas, and apply changes locally or to your linked project:

supabase migration new create_profiles
supabase db diff
supabase db push
supabase db reset

Deploy Edge Functions

Build, serve, and deploy functions from the same project workspace:

supabase functions new hello-world
supabase functions serve
supabase functions deploy hello-world

Generate Types

Generate TypeScript types from your local database or linked project:

supabase gen types --local
supabase gen types --linked

Reference

Use --help on any command to explore flags and examples:

supabase db --help
supabase functions deploy --help

Developing

This repository is a pnpm monorepo. The published package lives in apps/cli.

pnpm install
pnpm check:all

cd apps/cli

pnpm types:check
pnpm dev:next -- --help
pnpm run test:unit && pnpm run test:integration

Useful source entry points:

PathPurpose
apps/cliTypeScript/Bun CLI package
apps/cli-goGo CLI source used by the legacy shell
packages/stackLocal Supabase stack runtime
packages/configConfig schema and generated types
packages/apiTyped Supabase Management API client

After a fresh clone, install the reference repositories used for agent and developer inspection:

pnpm repos:install

Contributing

We love focused pull requests with a clear problem, a small surface area, and tests that match the user-facing behavior.

Open an issue first and wait for a maintainer to add the open-for-contribution label before starting work — external pull requests that don't link a labeled, open issue are closed automatically. See CONTRIBUTING.md for the full workflow.

Before opening a PR, run repo-wide quality checks from the repository root, then run the relevant package tests from each workspace you touched. For each touched TypeScript workspace (or any workspace that declares it), also run its pnpm types:check script. For example:

# From the repository root:
pnpm check:all

# From apps/cli (a touched TypeScript workspace):
cd apps/cli
pnpm types:check
pnpm run test:unit && pnpm run test:integration

# Repeat the relevant package tests for every touched workspace; run
# pnpm types:check there too when that workspace declares the script.

PR titles must use conventional commits, for example:

fix(cli): handle linked projects without cached service versions

License

Supabase CLI packages are released under the MIT license.

Contributors

(top 30 of 172)

sweatybridge

1,810 commits

dependabot[bot]

1,240 commits

soedirgo

369 commits

avallete

205 commits

supabase/cli

Supabase CLI. Manage postgres migrations, run Supabase locally, deploy edge functions. Postgres backups. Generating types from your database schema.

2,411

stars

5,036

commits

TypeScript

primary language

Sep 11, 2026

updated

supabase.com/docs/reference/cli/about
cli
database
database-management
dbms
environment
local
postgres
postgresql
supabase
Browse cluster: PostgreSQL and Supabase tooling

README

Supabase CLI

Develop locally and deploy to the Supabase Platform from your terminal.

npm Build License Discord


Supabase CLI brings the Supabase Platform to your terminal. Run the full local stack, manage database migrations, deploy Edge Functions, generate types, and automate project workflows.

Installation

# YOLO
curl -fsSL https://raw.githubusercontent.com/supabase/cli/main/install | bash

# npm
npm install -D supabase                   # or bun/pnpm/yarn add -D supabase
npm install -D supabase@beta              # beta channel

# macOS and Linux
brew install supabase/tap/supabase        # always up to date
brew install supabase                     # official formula, may be delayed
brew install supabase/tap/supabase-beta   # beta channel

# Windows
scoop bucket add supabase https://github.com/supabase/scoop-bucket.git
scoop install supabase
scoop install supabase-beta               # beta channel

# Linux packages
# Download .apk, .deb, .rpm, or .pkg.tar.zst from GitHub Releases.

Linux packages are available from Releases. Community-maintained packages are also available through pkgx and Nixpkgs.

Start Local Development

Create a Supabase workspace and start the local stack:

supabase init
supabase start
supabase status

The local stack includes Postgres, Auth, Realtime, Storage, Edge Functions, and the Supabase APIs.

Start from a template:

supabase bootstrap

Connect your local workspace to a hosted Supabase project:

supabase login
supabase link

Manage Your Database

Create migrations, compare schemas, and apply changes locally or to your linked project:

supabase migration new create_profiles
supabase db diff
supabase db push
supabase db reset

Deploy Edge Functions

Build, serve, and deploy functions from the same project workspace:

supabase functions new hello-world
supabase functions serve
supabase functions deploy hello-world

Generate Types

Generate TypeScript types from your local database or linked project:

supabase gen types --local
supabase gen types --linked

Reference

Use --help on any command to explore flags and examples:

supabase db --help
supabase functions deploy --help

Developing

This repository is a pnpm monorepo. The published package lives in apps/cli.

pnpm install
pnpm check:all

cd apps/cli

pnpm types:check
pnpm dev:next -- --help
pnpm run test:unit && pnpm run test:integration

Useful source entry points:

PathPurpose
apps/cliTypeScript/Bun CLI package
apps/cli-goGo CLI source used by the legacy shell
packages/stackLocal Supabase stack runtime
packages/configConfig schema and generated types
packages/apiTyped Supabase Management API client

After a fresh clone, install the reference repositories used for agent and developer inspection:

pnpm repos:install

Contributing

We love focused pull requests with a clear problem, a small surface area, and tests that match the user-facing behavior.

Open an issue first and wait for a maintainer to add the open-for-contribution label before starting work — external pull requests that don't link a labeled, open issue are closed automatically. See CONTRIBUTING.md for the full workflow.

Before opening a PR, run repo-wide quality checks from the repository root, then run the relevant package tests from each workspace you touched. For each touched TypeScript workspace (or any workspace that declares it), also run its pnpm types:check script. For example:

# From the repository root:
pnpm check:all

# From apps/cli (a touched TypeScript workspace):
cd apps/cli
pnpm types:check
pnpm run test:unit && pnpm run test:integration

# Repeat the relevant package tests for every touched workspace; run
# pnpm types:check there too when that workspace declares the script.

PR titles must use conventional commits, for example:

fix(cli): handle linked projects without cached service versions

License

Supabase CLI packages are released under the MIT license.

Contributors

(top 30 of 172)

sweatybridge

1,810 commits

dependabot[bot]

1,240 commits

soedirgo

369 commits

avallete

205 commits

Languages

TypeScript

91.1%

Go

7.1%

PLpgSQL

1.2%