> ## Documentation Index
> Fetch the complete documentation index at: https://docs.orvlin.com/llms.txt
> Use this file to discover all available pages before exploring further.

# CLI

> Validate, deploy, and simulate your pricing manifest, and generate typed SDK code

The `orvlin` command-line tool works with your pricing manifest against your Orvlin workspace. Use it to generate typed SDK code, validate and deploy the catalog, and simulate what a subscription would be billed.

## Install

```bash theme={null}
npm install -g @orvlin/cli
orvlin --help
```

Sign in with your API key by setting `ORVLIN_API_KEY` in the environment. Every command accepts:

| Option | Description |
| - | - |
| `-v, --verbose` | Detailed logs. |
| `--config <path>` | A config file to read settings from. |

## Commands

| Command | What it does |
| - | - |
| `orvlin generate` | Generates typed SDK code from your manifest. |
| `orvlin deploy` | Validates the manifest and deploys it to a workspace environment. |
| `orvlin simulate` | Simulates billing for a subscription or customer over a period. |

### `orvlin generate`

```bash theme={null}
orvlin generate --manifest pricing.yaml --output ./generated-sdk
```

| Option | Default | Description |
| - | - | - |
| `-m, --manifest <path>` | `pricing.yaml` | The pricing manifest. |
| `-o, --output <dir>` | `./generated-sdk` | Output directory. |
| `--package-name <name>` | `@myorg/orvlin-sdk` | The name of the generated package. |
| `--watch` | | Regenerate when the manifest changes. |

### `orvlin deploy`

```bash theme={null}
orvlin deploy --manifest pricing.yaml --environment sandbox --dry-run
```

| Option | Default | Description |
| - | - | - |
| `-m, --manifest <path>` | `pricing.yaml` | The pricing manifest. |
| `-e, --environment <name>` | `development` | The workspace environment to deploy to, such as your sandbox or production workspace. |
| `--dry-run` | | Show what would change without applying it. |
| `--validate-only` | | Check the manifest and stop. |

Deploys are safe to repeat. Resources that haven't changed are left alone. See [Pricing as code](/pricing-manifest).

<Tip>
  Run `--validate-only`, then `--dry-run`, and review the changes before you deploy to a production workspace.
</Tip>

### `orvlin simulate`

```bash theme={null}
orvlin simulate \
  --manifest pricing.yaml \
  --customer cust_acme \
  --period-start 2026-10-01 \
  --period-end 2026-10-31 \
  --output table
```

| Option | Description |
| - | - |
| `-m, --manifest <path>` | The pricing manifest. |
| `--period-start <date>` / `--period-end <date>` | The period to simulate, as `YYYY-MM-DD`. |
| `--subscription <id>` | Simulate an existing subscription. |
| `--customer <id>` | Simulate a customer. |
| `--plan <name>` | Compare against another plan. |
| `--price-override <priceId=key:value,...>` | Try a different price. Repeat the option for more. |
| `--output <format>` | `table` (default) or `json`. |

Use simulation to check a new price against real usage before you publish it.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.