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

# Install SeekrFlow

> Run preflight checks and install SeekrFlow with the sfe CLI or Helm.

Install SeekrFlow from its chart, using the values file you prepared. Before you start, finish the steps in [Prepare to install](/self-managed/flow/prepare/sfe-cli). Your values file must be complete, and its secrets and databases must exist.

<Warning>
  Kustomize isn't supported. Install and upgrade SeekrFlow with Helm or `sfe` directly. Applying the chart through Kustomize can cause SeekrFlow to delete its own resources.
</Warning>

<Tabs>
  <Tab title="With the sfe CLI">
    <Steps>
      <Step title="Run preflight">
        ```bash theme={null}
        sfe preflight -p <profile-name> -r <version>
        ```

        Preflight checks that your cluster and cloud resources are ready, such as cloud identity, storage, secrets, PostgreSQL, OpenSearch, and GPUs. `sfe install` doesn't run it for you.

        If SeekrFlow creates its own ingress on Amazon Web Services (AWS), the `dns` check fails on a first install. You create that Domain Name System (DNS) record after install, once the load balancer exists. Checks that can't run before install, such as `storage` and `models`, show as skipped. Fix any other failure before you continue.
      </Step>

      <Step title="Install">
        ```bash theme={null}
        sfe install -p <profile-name> -r <version>
        ```

        `sfe` downloads the chart for the release and installs it. To see what it would install without changing anything, add `--dry-run`.
      </Step>

      <Step title="Let the catalog sync pull its image">
        SeekrFlow loads its model catalog with a job that runs as the `seekrflow-operator` service account. That service account doesn't get your image pull secret. Add it:

        ```bash theme={null}
        kubectl patch serviceaccount seekrflow-operator -n seekrflow \
          -p '{"imagePullSecrets":[{"name":"seekrflow-artifacts-pull-access"}]}'
        ```

        If the `seekrflow-model-sync` pod already shows `ImagePullBackOff`, delete the job and restart the operator, which runs the job again:

        ```bash theme={null}
        kubectl delete job seekrflow-model-sync -n seekrflow
        kubectl rollout restart deployment/seekrflow-operator -n seekrflow
        ```
      </Step>
    </Steps>
  </Tab>

  <Tab title="Without the sfe CLI">
    Use this path if you're experienced with Helm and Kubernetes, and you're building your own automation.

    <Steps>
      <Step title="Download the chart">
        If you pulled the chart when you created the values file, skip this step.

        Sign in to Seekr's registry:

        ```bash theme={null}
        echo "$REGISTRY_PASSWORD" | helm registry login seekr.repo.sonatype.app \
          --username "$REGISTRY_USERNAME" \
          --password-stdin
        ```

        Pull the chart and unpack it:

        ```bash theme={null}
        helm pull oci://seekr.repo.sonatype.app/seekr-docker-release/seekr/flow-helm-chart --version <version>
        tar -xzf flow-helm-chart-<version>.tgz
        ```
      </Step>

      <Step title="Install">
        From the folder that contains the unpacked chart, run:

        ```bash theme={null}
        helm install seekrflow flow-helm-chart --namespace seekrflow -f my-values.yaml
        ```

        Helm reports the release as deployed. If the install fails, fix the values file and run `helm upgrade --install` with the same options.
      </Step>

      <Step title="Let the catalog sync pull its image">
        SeekrFlow loads its model catalog with a job that runs as the `seekrflow-operator` service account. That service account doesn't get your image pull secret. Add it:

        ```bash theme={null}
        kubectl patch serviceaccount seekrflow-operator -n seekrflow \
          -p '{"imagePullSecrets":[{"name":"seekrflow-artifacts-pull-access"}]}'
        ```

        If the `seekrflow-model-sync` pod already shows `ImagePullBackOff`, delete the job and restart the operator, which runs the job again:

        ```bash theme={null}
        kubectl delete job seekrflow-model-sync -n seekrflow
        kubectl rollout restart deployment/seekrflow-operator -n seekrflow
        ```
      </Step>
    </Steps>
  </Tab>
</Tabs>


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