# Deploy a catalog

Source: https://docs.orbytelabs.com/cli/deploy

Preview and apply the credits, features, and plans in your config.

From the directory containing `orbyte.config.ts`, preview the changes and then apply them:

```sh
pnpm exec orbyte deploy --dry-run
pnpm exec orbyte deploy
```

The CLI prints the organization and application it will change. Deployment updates declared entries and leaves other entries in the application alone. Removing a feature from the config does not delete it. Changes apply one at a time. If deployment fails partway through, correct the error and rerun it.

After deployment, the CLI writes [generated types](/cli/generated-types) for your catalog. A dry run does not apply changes or generate types.

## Choose a config [#choose-a-config]

```sh
pnpm exec orbyte deploy --config config/orbyte.config.ts
```

The CLI loads `.env.local` beside the selected config. Explicit environment variables take precedence.

## Deploy to Production [#deploy-to-production]

Use a Production application's key:

```sh
pnpm exec orbyte deploy
```

See [environments](/environments) for separate Development and Production catalogs.

## Deploy plans [#deploy-plans]

Declare plans in the optional `plans` map alongside `features` in `Orbit({ features, plans })`. Each allowance and price multiplier must reference a feature declared in the same config. Credit grants must reference a credit in the config.

Deployment requires `plans:read` and, when a plan changes, `plans:write`. The API queues Stripe synchronization, so a successful catalog deployment does not mean the plan is already synchronized. Read its `syncStatus` with `getPlan`. See [subscriptions and payments](/subscriptions) for plan configuration and Stripe setup.