# Helm Components

Define Helm releases in stack manifests when you want Atmos to deploy charts —
local, remote-repository, or OCI — alongside Terraform, Kubernetes, Helmfile,
Packer, and Ansible components. A Helm component describes which chart and
version to use, which values to apply, and how the result should be deployed
for each stack.

## Available Configuration Sections

Helm components use the same stack sections as other Atmos components, so the
release can inherit values, run hooks, use Auth, declare dependencies, and be
included in affected runs.

- **[`metadata`](/stacks/components/component-metadata)**
  Component behavior, inheritance, and base component selection.
- **[`vars`](/stacks/vars)**
  Variables available to stack template rendering.
- **[`env`](/stacks/env)**
  Environment variables applied before Helm runs, such as 
  KUBECONFIG
  .
- **[`settings`](/stacks/settings)**
  Integration metadata and legacy dependency settings.
- **[`dependencies`](/stacks/dependencies/components)**
  Cross-component ordering for 
  \--all
   and 
  \--affected
   runs.

## Helm-Specific Sections

- **`chart` (required)**
  The chart reference: a local path (
  .
   or 
  ./charts/app
  ), a 
  repo/name
   reference, a bare name used with 
  repository
  , or an 
  oci://
   reference.
- **`version`**
  The chart version constraint (for repository and OCI charts).
- **`repository`**
  An explicit HTTP chart repository URL used with a bare 
  chart
   name.
- **`repositories`**
  A list of chart repositories used to resolve 
  repo/name
   chart references. Entries support 
  name
  , 
  url
  , optional basic auth, TLS files, 
  pass_credentials_all
  , and 
  insecure_skip_tls_verify
  . Atmos adds/updates these repositories in Helm's local repository config before rendering or deploying.
- **`namespace`**
  The target Kubernetes namespace. Defaults to 
  default
  .
- **`name`**
  The Helm release name. Defaults to the component's last path segment.
- **`values`**
  The Helm chart values, merged through Atmos inheritance. This map 
  is
   the values passed to the chart.
- **`values_files`**
  A list of value files layered 
  underneath
   the inline 
  values
   (templated, in listed order).
- **`render`**
  Default output for 
  atmos helm template
   (
  output.path
   and 
  output.split
  ).
- **`provision`**
  Delivery targets for 
  apply
  /
  deploy
   — the cluster (default) or an external target such as a Git deployment repository.

Reusable repository defaults can also be configured under
`components.helm.repositories` in `atmos.yaml`. Component-level repositories
override global entries with the same `name`.

:::note Diffs
[`atmos helm diff`](/cli/commands/helm/diff) shows a real unified diff (via the
embedded [helm-diff](https://github.com/databus23/helm-diff) library — no plugin to
install) against the deployed release, a local manifest file, or the manifests in a
`provision` git deployment repository (the offline, GitOps producer-side diff).
Helm CLI **subcommand** plugins such as `helm-secrets` are not run by the native
component — use a [`helmfile`](/stacks/components/helmfile) component for those.
:::

## Example

**File:** `stacks/catalog/monitoring.yaml`

```yaml
components:
  helm:
    monitoring:
      chart: prometheus-community/kube-prometheus-stack
      version: "65.1.1"
      repositories:
        - name: prometheus-community
          url: https://prometheus-community.github.io/helm-charts
      namespace: monitoring
      values:
        grafana:
          enabled: true
      dependencies:
        components:
          - cert-manager
      provision:
        default: cluster
        targets:
          cluster:
            kind: kubernetes
          deployment-repo:
            kind: git
            repository: deployments
            path: "clusters/{{ .vars.stage }}/monitoring"
```

See the [`atmos helm`](/cli/commands/helm/usage) command reference for the full
workflow.

To inspect which repositories are associated with Helm components, run:

```shell
atmos helm repo list --stack=ue2-dev
atmos helm repo list monitoring --format=json
```
