# shdctl global flags and command reference

> Find the global flags and commands you can use to deploy and manage Self-Hosted Deployment releases with shdctl.

## Find a command for a task

shdctl has one required operation: `shdctl release generate`, which renders Helm chart values from your `manifest.yaml` file. Your CI, GitOps controller, or operator workflow can replace every other operation.

| **Task**                                                | **Command**                          |
| ------------------------------------------------------- | ------------------------------------ |
| Render Helm charts from the manifest (required).        | `shdctl release generate`            |
| Check that the cluster meets the prerequisites.         | `shdctl cluster check`               |
| Pull the release archive from the Unity registry.       | `shdctl release pull`                |
| Mirror images and ORAS artifacts to your registry.      | `shdctl artifact sync ...`           |
| Check that your registry holds what the manifest needs. | `shdctl artifact sync verify`        |
| Render Kubernetes Secret manifests.                     | `shdctl secret generate`             |
| Apply secrets to the cluster.                           | `shdctl secret deploy`               |
| Rebuild the secrets import file from a running cluster. | `shdctl secret export`               |
| Deploy charts with Helm or ArgoCD.                      | `shdctl release deploy --format ...` |

For the recommended CI and ArgoCD pipeline, and other ways to combine these operations, refer to [Workflows](../workflows).

## Command summary

| **Command**                          | **Description**                                                                                                                                                                                                           |
| ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `shdctl version`                     | Print the version number.                                                                                                                                                                                                 |
| `shdctl configure`                   | Set registry credentials (interactive).                                                                                                                                                                                   |
| `shdctl configure get`               | View configuration.                                                                                                                                                                                                       |
| `shdctl configure set [registry]`    | Set registry credentials. Prompts on a terminal. For CI, use `--username` with `--password-stdin`, or `SHDCTL_*` environment variables.                                                                                   |
| `shdctl configure delete [registry]` | Delete registry credentials.                                                                                                                                                                                              |
| `shdctl manifest init`               | Initialize a new manifest file interactively.                                                                                                                                                                             |
| `shdctl manifest validate`           | Validate a manifest file against the CUE schema.                                                                                                                                                                          |
| `shdctl manifest schema`             | Display the CUE schema (or export it for standalone validation).                                                                                                                                                          |
| `shdctl cluster check`               | Validate that the cluster meets the deployment prerequisites (read-only; `--probe-storage` adds an opt-in volume probe, `--dry-run` prints the command plan).                                                             |
| `shdctl release pull`                | Pull a release from the registry.                                                                                                                                                                                         |
| `shdctl release generate`            | Generate release configuration (Helm/ArgoCD charts).                                                                                                                                                                      |
| `shdctl release deploy`              | Deploy a release (Helm or ArgoCD).                                                                                                                                                                                        |
| `shdctl release uninstall`           | Uninstall a release.                                                                                                                                                                                                      |
| `shdctl artifact sync preflight`     | Verify registry authentication by syncing one image and one ORAS artifact.                                                                                                                                                |
| `shdctl artifact sync images`        | Sync Docker images from the source registry to the target registry: the images that the manifest's enabled features require, or all images with `--all`.                                                                  |
| `shdctl artifact sync oras`          | Sync ORAS artifacts from the source registry to the target registry.                                                                                                                                                      |
| `shdctl artifact sync verify`        | Report which images that the manifest requires are missing from the target registry, and which images the registry holds that the manifest doesn't require (read-only; exits with a non-zero code if images are missing). |
| `shdctl secret generate`             | Generate Kubernetes secret YAML from schema definitions.                                                                                                                                                                  |
| `shdctl secret deploy`               | Deploy secrets to your Kubernetes cluster.                                                                                                                                                                                |
| `shdctl secret export`               | Reconstruct the secrets import file from the secrets already in a cluster.                                                                                                                                                |
| `shdctl completion <shell>`          | Print a shell completion script (bash, zsh, fish, or PowerShell).                                                                                                                                                         |

## Global flags

You can use these flags with any command:

* `--manifest <path>`: Path to the manifest in YAML format. The default is `auto-discover`.
* `--log-level <level>`: Set the logging level. The options are:
  * `trace`
  * `debug`
  * `info` (default)
  * `warn`
  * `error`
  * `fatal`
  * `panic`
* `--json`: Output logs in JSON format.

Logs go to stderr. A command's own output goes to stdout, so a pipeline can capture one without the other. Command output includes a `--dry-run` command list, the `cluster check` results, a `verify` report, and the commands that a deploy runs.

Example:

```sh
shdctl release pull --version 2.0.0 --log-level debug
```
