# Stripe Projects CLI Use the terminal to provision third-party services, manage credentials, and handle billing. For more details, see the [Stripe CLI reference](https://docs.stripe.com/cli.md). Stripe Projects is a CLI tool that provisions third-party services, manages credentials, and handles billing for service upgrades from the terminal. Resources remain in your own provider accounts. A project is a lightweight manifest along with a Stripe-backed record of the services you’ve attached, the provider accounts you own, and the credentials those services require. You can replicate projects across machines and teammates. ## Before you begin - A Stripe account - The [Stripe CLI](https://docs.stripe.com/stripe-cli/install.md) installed and up to date - The Projects plugin installed: ```bash stripe plugin install projects ``` ## Quickstart This example attaches hosting, a database, authentication, and analytics to a project, then syncs credentials into your local environment. ```bash # Create a project stripe projects init my-app # Browse available providers stripe projects catalog # Add services stripe projects add vercel/project stripe projects add supabase/supabase:free stripe projects add clerk/auth stripe projects add posthog/analytics # Sync credentials to your local environment stripe projects env --sync ``` After syncing automatically, your local `.env` file contains the credentials each service requires: ```bash VERCEL_PROJECT_ID=... SUPABASE_DATABASE_URL=... CLERK_SECRET_KEY=... POSTHOG_PROJECT_API_KEY=... ``` When your app outgrows a free tier, upgrade without rebuilding your stack: ```bash stripe projects upgrade supabase/supabase:free ``` ## Create a project Run `init` in the directory you want to use for your project: ```bash stripe projects init [name] ``` Projects anchor to your current local directory. If you omit the name, Projects uses the current folder name. This creates the project state under `.projects/`. Check in `.projects/state.json` to capture which tools your project uses. Also check `.projects/state.local.json` in to your private repo, because it contains the resource IDs your team needs to share the same project state. `init` also writes skills that help your coding agent to use Stripe Projects. ## Check project status After you’ve added services or connected providers, run `status` to review your project: ```bash stripe projects status ``` This displays your project’s name, account used, linked providers, provisioned services, current tiers, and health status. ## Browse the service catalog Use `catalog` to list all available providers, their service categories, plan tiers, add-ons, and pricing: ```bash stripe projects catalog stripe projects catalog ``` ### Available providers These providers co-designed the integration protocol with Stripe. The protocol standardizes provisioning, plan selection, upgrades, and credential handoff. | Provider | Primary categories | | ----------- | --------------------------------- | | Vercel | Hosting | | Railway | Hosting, database, storage | | Supabase | Database, authentication, storage | | Neon | Database, authentication | | PlanetScale | Database | | Turso | Database | | Chroma | Vector database | | Clerk | Authentication | | PostHog | Analytics, feature flags | | Runloop | Sandboxes, hosting | Run `stripe projects catalog` at any time to view the most current list of providers and available service tiers. > #### Request a provider > > Contact [provider-request@stripe.com](mailto:provider-request@stripe.com) if you’re interested in becoming a provider on the Stripe Projects network or want to request a specific provider. ## Manage a service ### Add a service Add a provider’s service to your project: ```bash stripe projects add / ``` You can sign in to an existing account, or Stripe can create a provider account for you. Resources are provisioned in the provider account with normal access and dashboards. Credentials are returned in a format that both humans and agents can understand. ### Link a provider Connect an existing provider account to your project or create a new one, but without provisioning a new resource: ```bash stripe projects link ``` ### Remove a service Remove a service from your provider account and local project: ```bash stripe projects remove / | ``` ### Rotate a credential Rotate credentials for a specific service: ```bash stripe projects rotate / | ``` ### Upgrade a service tier Change the tier of one or more services (for paid tiers): ```bash stripe projects upgrade | / | ``` You only need to add your payment method to Stripe once. When you select a paid plan in the CLI, Stripe tokenizes your payment credentials into a [Shared Payment Token](https://docs.stripe.com/agentic-commerce/concepts/shared-payment-tokens.md) and grants the provider a payment credential for that upgrade. The provider charges using that token. Your underlying payment credentials aren’t shared. > In the developer preview, this payment handoff is only available in the US, EU, UK, and Canada. ### Open a provider dashboard Open a provider’s dashboard in your default browser: ```bash stripe projects open ``` ## Manage environment variables Projects stores credentials centrally and syncs them to your local environment, CI, or a team secret manager. When a teammate joins the project or switches machines, they can re-sync the correct credentials with the same flow. ### List variables Display all project environment variables. Values aren’t revealed in the output: ```bash stripe projects env list ``` ### Sync variables Update your local `.env` files and replenish your credentials vault. It also updates automatically after resource provisioning. ```bash stripe projects env --sync ``` ## Manage billing ### View the payment method Display the current payment method on file: ```bash stripe projects billing method ``` ### Update a payment method Add a payment method, which replaces an existing one and reshares it with providers: ```bash stripe projects billing update ``` ## Generate LLM context Display and write a local file that combines your project context with all provider-supplied LLM context files: ```bash stripe projects llm-context ``` ## Use non-interactive environments Every command supports flags for non-interactive environments such as CI/CD pipelines, scripts, and agents. ### Global flags | Flag | Description | | ------------------ | --------------------------------------------------------------------------------------------------- | | `--json` | Return output as structured JSON instead of formatted text. | | `--no-interactive` | Disable interactive prompts and confirmation dialogs. Commands fail when required input is missing. | | `--auto-confirm` | Accept confirmation prompts automatically, for example when you remove a service. | | `--quiet` | Suppress non-essential output and only return final results or errors. | ### Examples Add a service with a specific tier, no prompts, and JSON output: ```bash stripe projects add supabase/database \ --tier free \ --no-interactive \ --json ``` Rotate credentials in a CI pipeline: ```bash stripe projects rotate supabase/database \ --auto-confirm \ --quiet ``` Combine `--json` with `--no-interactive` for predictable, parseable output. Use `--tier` to skip the tier selection prompt when you add services. ## Command reference | Command | Description | | -------------------------------- | --------------------------------------------------- | | `init ` | Create a project and sign in or register. | | `status` | View project name, services, tiers, and health. | | `catalog` | List available providers, categories, and services. | | `add /` | Add a service to your project. | | `link ` | Connect a provider to your project. | | `remove /` | Remove a service from your project. | | `rotate /` | Rotate credentials for a service. | | `upgrade /` | Change the tier of a service. | | `open ` | Open a provider’s dashboard in the browser. | | `env [--sync]` | List or sync project environment variables. | | `billing method` | View the current payment method. | | `billing update` | Add or replace a payment method. | | `llm-context` | Generate a combined LLM context file. | | `shell <...args>` | Run a provider CLI with project credentials. |