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

# Upgrade Self-Hosted

Upgrade the platform in place from the September release to the November release. Replace `<new-version>` with the version of the November release.

> [!NOTE]
>
> This release needs more CPU and memory than the September release. For example, the Embedded Cluster worker minimum changes from 16 vCPU and 32 GB to 32 vCPU and 64 GB, and the Helm memory figure from 32 GB to 48 GB. The [Embedded Cluster prerequisites](https://docs.hiddenlayer.ai/docs/products/selfhosted/selfhosted_platform_embedded_prerequisites.md) and [Helm prerequisites](https://docs.hiddenlayer.ai/docs/products/selfhosted/selfhosted_platform_helm_prerequisites.md) list every size. Check the nodes have room for the larger requests before upgrading. With GPU acceleration, an upgrade restarts the Runtime Security proxy, which is unavailable while its pod restarts.

## Embedded Cluster

Run the commands on the controller as root: run `sudo -i` first.

1. Download and extract the new bundle.

   * Replace `<License ID>` with your HiddenLayer AI Security Platform License.

   ```sh theme={null}
   mkdir -p /root/upd; cd /root/upd
   curl -f "https://updates.hiddenlayer.ai/embedded/aisec-platform/stable?airgap=true" \
     -H "Authorization: <License ID>" -o aisec-platform-stable.tgz
   tar -xvzf aisec-platform-stable.tgz
   ```

   * **Airgap**: Download the bundle and put it onto the controller node.

2. Load the new version from the extracted directory.

   ```sh theme={null}
   ./aisec-platform update --airgap-bundle aisec-platform.airgap
   ```

   * The command takes about 5 to 7 minutes and ends with `Visit the Admin Console to deploy this update.`

3. Deploy the new version in the Admin Console.

   * Open **Version history** and click **Deploy** next to `<new-version>`.
   * If the upgrade wizard does not open within a minute, open `https://<ip or url>:30000/upgrade-service/app/aisec-platform/config`.
   * Click **Next** on Config, **Next: Confirm and deploy** on Preflight, and **Deploy** on Confirm.

4. The Platform Console will be accessible when the status changes to “Ready” as seen in the Admin Console, `https://<ip or url>:30000`, within 20 minutes of deploying.

## Helm

1. Sign in to the registry.

   ```sh theme={null}
   helm registry login registry.hiddenlayer.ai \
     --username <your-email> --password <license-id>
   ```

2. Download the chart.

   ```sh theme={null}
   helm pull oci://registry.hiddenlayer.ai/aisec-platform/stable/distro-enterprise-platform-installer \
     --version <new-version>
   ```

   * The downloaded file `distro-enterprise-platform-installer-<new-version>.tgz` contains the license.

3. Upgrade from the file with the values file the installation used.

   ```sh theme={null}
   helm upgrade hl-installer \
     ./distro-enterprise-platform-installer-<new-version>.tgz \
     --namespace hiddenlayer \
     -f config.yaml
   ```

4. Check the result. The installer Job `hl-aisec-platform-<new-version>`, with the dots of the version replaced by dashes, completes within 10 minutes, and the pods are ready within 20 minutes.

   ```sh theme={null}
   kubectl get pods -A
   kubectl get jobs -A
   helm list -A
   helm list -A --failed --pending --uninstalling --superseded
   ```

   * Every pod is `Running` and ready, or `Completed`.
   * Every Job is `Complete`.
   * The second `helm list` prints no release: none is failed, pending, uninstalling or superseded.
