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

# Upgrade Lumovi in your cluster

> Move to a new version of Lumovi by upgrading its Helm chart, and roll back if you need to.

The desktop app updates itself. In a cluster, Lumovi is upgraded like anything else Helm installed: you upgrade its chart. The chart is released with Lumovi itself, so the chart's version is the app's.

## Upgrade

<Steps>
  <Step title="See what's new">
    Each version's changes are in the [changelog](/changelog) and on [GitHub releases](https://github.com/Lumovi/Lumovi/releases).
  </Step>

  <Step title="Upgrade the chart">
    <CodeGroup>
      ```bash With your values file theme={"theme":{"light":"github-light","dark":"github-dark-default"}}
      helm upgrade lumovi oci://ghcr.io/lumovi/charts/lumovi \
        --namespace lumovi --values values.yaml
      ```

      ```bash To a particular version theme={"theme":{"light":"github-light","dark":"github-dark-default"}}
      helm upgrade lumovi oci://ghcr.io/lumovi/charts/lumovi \
        --namespace lumovi --values values.yaml --version 1.0.0
      ```

      ```bash Keeping the values you set before theme={"theme":{"light":"github-light","dark":"github-dark-default"}}
      helm upgrade lumovi oci://ghcr.io/lumovi/charts/lumovi \
        --namespace lumovi --reuse-values
      ```
    </CodeGroup>

    Without `--version`, Helm installs the latest. The image's tag follows the chart unless you set `image.tag`.
  </Step>

  <Step title="Check it started">
    ```bash theme={"theme":{"light":"github-light","dark":"github-dark-default"}}
    kubectl rollout status --namespace lumovi deployment/lumovi
    kubectl logs --namespace lumovi deployment/lumovi
    ```

    The first line of the log names the version that's running.
  </Step>
</Steps>

## What people see

Sessions live in Lumovi's memory, so a new pod signs everyone out. Open pages reconnect to the new pod by themselves, and show the sign-in page. With single sign-on, signing in again is a click; with tokens, people paste one again. Behind an [authenticating proxy](/server/auth/proxy), Lumovi keeps no sessions of its own, so nobody notices more than a reconnect.

The same goes for any change that replaces the pod: changing a setting, or the [views everyone sees](/server/views).

<Note>
  For the same reason the chart runs one replica. More than one would need sticky sessions, and each replica would still keep its own sessions.
</Note>

## When the client secret changes

A change to a Secret's contents doesn't replace the pod. Lumovi reads the single sign-on client's secret from an environment variable, when the pod starts, so it keeps the old one until it restarts. That's the case when you change `auth.oidc.clientSecret` and upgrade (the chart changes its Secret, not the pod), and when you change the Secret that `auth.oidc.existingSecret` names.

Restart Lumovi so it reads the new secret:

```bash theme={"theme":{"light":"github-light","dark":"github-dark-default"}}
kubectl rollout restart --namespace lumovi deployment/lumovi
```

Like any restart, this signs everyone out.

## Roll back

Helm keeps the previous revision, so going back is one command:

```bash theme={"theme":{"light":"github-light","dark":"github-dark-default"}}
helm rollback lumovi --namespace lumovi
```

`helm history lumovi --namespace lumovi` lists the revisions, and `helm rollback lumovi <revision> --namespace lumovi` goes back to a particular one.

<Columns cols={2}>
  <Card title="Changelog" icon="book-open" href="/changelog">
    What changed in each version.
  </Card>

  <Card title="Helm values" icon="sliders-horizontal" href="/server/helm-values">
    Every setting the chart has.
  </Card>
</Columns>


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