# Manage Destinations using Rudder CLI


> Define and manage destinations as YAML configurations using the Rudder CLI tool.



Rudder CLI lets you manage [destinations](https://www.rudderstack.com/docs/destinations/overview/) as code. You define each destination in YAML, validate the spec locally, and apply it to your workspace with the same Git-based workflow you use for sources and other CLI resources.

A destination spec is the endpoint a [connection](https://www.rudderstack.com/docs/rudder-cli/connections/) points at. You declare the destination in the same project as the source, then declare the connection that links them.

**Announcement**

**Destination support requires Rudder CLI v0.25.0 or later**.

Upgrade if you are using an earlier version.

## Key features

### Declarative YAML configuration

- Define destinations in YAML with a type, definition version, and per-type `config` block. See the [Destination YAML Reference](https://www.rudderstack.com/docs/rudder-cli/yaml-destinations/).
- Keep credentials out of Git by referencing secrets as `{{ .VAR }}` and supplying them at apply time with `--var-file`. See [How to Use Variable Substitution in Rudder CLI](https://www.rudderstack.com/docs/rudder-cli/variable-substitution/).
- Optionally link a [transformation](https://www.rudderstack.com/docs/rudder-cli/manage-transformations/) with a `#transformation:` reference. Connection mode per source type stays in the destination `config` block — not on the connection spec.

### Git integration and CI/CD support

- Import destinations that already exist in your workspace, then manage them through Git.
- Validate and apply destination specs with the same `rudder-cli validate` and `rudder-cli apply` commands you use for other resources.
- Use [GitHub Actions](https://www.rudderstack.com/docs/rudder-cli/github-actions/) to run those commands in CI.

## Who can use this feature?

CLI-based destination management is useful when you need to:

- Version destination configuration next to the sources and connections that use it.
- Review destination changes in pull requests before they reach a workspace.
- Reproduce the same destination setup across development and production workspaces.

## Supported destinations

Rudder CLI supports 46 destination types, spanning warehouses, object storage, and streaming destinations. The dashboard catalog is larger than what you can define in CLI YAML.

See [Destination Type Reference for Rudder CLI](https://www.rudderstack.com/docs/rudder-cli/destination-types/) for the `type` value you use in YAML and the `config` keys each type accepts.

**Info**

**Important considerations**

- Rudder CLI rejects any `type` outside this [table](https://www.rudderstack.com/docs/rudder-cli/destination-types/#supported-destination-types). You can define more destinations in the RudderStack dashboard than what you can define in Rudder CLI.
- To start from a destination you already configured in the dashboard, run `rudder-cli import workspace` — the imported YAML uses the same keys these pages document. See [How to Import Workspace Resources](https://www.rudderstack.com/docs/rudder-cli/import-resources/) for more information.

## Get started

- Follow the [End-to-End Walkthrough: Destinations with Rudder CLI](https://www.rudderstack.com/docs/rudder-cli/destinations-walkthrough/) to define, validate, and apply a destination
- See the [Destination YAML Reference](https://www.rudderstack.com/docs/rudder-cli/yaml-destinations/) for field definitions, examples, and secrets
- See the [Destination Type Reference for Rudder CLI](https://www.rudderstack.com/docs/rudder-cli/destination-types/) for the `config` keys of each destination type
- See [How to Use Variable Substitution in Rudder CLI](https://www.rudderstack.com/docs/rudder-cli/variable-substitution/) to keep destination credentials out of Git
- Connect the destination to a source with [Manage Connections using Rudder CLI](https://www.rudderstack.com/docs/rudder-cli/connections/), or to a SQL model with [Manage Reverse ETL Connections using Rudder CLI](https://www.rudderstack.com/docs/rudder-cli/retl-connections/)
- Automate with [GitHub Actions for Rudder CLI](https://www.rudderstack.com/docs/rudder-cli/github-actions/)

