Skip to main content
Adaptive Engine can be easily deployed in your own infrastructure - cloud or on-premises - using our Helm chart. This guide will walk you through an overview of the deployment process and key configuration areas. For the most up-to-date and precise instructions, refer to the Adaptive Engine Helm chart repository.
In self-hosting, customers enjoy a high level of privacy. Adaptive ML has no requirement for external connectivity nor telemetry.

Prerequisites & dependencies

This section details necessary prerequisites to a self-hosted Adaptive Engine deployment.

Commercial contract

Adaptive Engine containers are private and available only upon signature of a commercial contract with Adaptive ML.

Infrastructure landing zone

Adaptive Engine requires the following infrastructure dependencies:
  1. A Kubernetes cluster with:
    • One or multiple GPU VM(s) to host the harmony compute plane container(s).
    • One or multiple CPU VM(s) to host the control-plane and recipe-runner containers.
  2. A PostgreSQL database, that can be local or remote.
  3. A Redis data store, that can be local or remote.
  4. A shared storage, that can be local or remote, POSIX or S3-compliant.
  5. An OIDC client (Google Workspace, Azure Entra ID, Amazon Cognito, Keycloak, etc.).
  6. A domain name that routes to the Adaptive Engine deployment and serve both the UI and the API.
The PostgreSQL database, Redis data store and shared storage can be local or remote. For production, we recommend to host them on remote, durable services.
The system architecture section of the documentation explains the role of each component. The architecture observations provides comments and best practices.
To assist with setting up the infrastructure landing zone, Adaptive ML maintains optional Terraform infrastructure-as-code templates for Microsoft Azure and for AWS (available upon request).

Kubernetes & VM configuration

The Kubernetes environment must fit the following prerequisites:
  • Kubernetes version equal or above 1.28.
  • Helm 3.8.0 or higher.
  • NVIDIA GPU operator installed in Kubernetes.
  • CUDA greater or equal to 12.8 with driver greater or equal to 570.172.08.
Read more in the Helm chart’s README.

Deployment checklist

1

GPU quota verification

If deploying in the cloud, verify that your GPU quota are high enough to accommodate the desired instance type and count. If it is not, work with your cloud account team to get the quota approved.
2

Infrastructure provisioning

Deploy the above infrastructure landing zone.
3

Adaptive ML Docker image access

Obtain access to Adaptive Engine private container registry. This requires the signature of a commercial contract with Adaptive ML.
4

Set deployment details in Helm

Pull the chart from the GitHub OCI registry. Personalize the Helm values.yaml file as indicated in the Helm configuration highlights section below. The Helm values.yaml file centralizes key deployment configuration, including the infrastructure landing zone (storage, compute resources, domain name, OIDC configuration) and the Adaptive Engine cluster settings, notably permissions.
5

Deploy 🚀

Deploy Adaptive Engine using helm install
We recommend copying Adaptive Engine container images to your own registry to avoid production dependency on our registry.
Adaptive Engine administrator emails must be set in the administrator emails list before those users log in to Adaptive Engine. We strongly recommend to specify at least one administrator email in the administrator email list when launching a new cluster.

Helm configuration highlights

The values.yaml file contains all the configuration options for the Adaptive Engine Helm chart. Below are some of the key sections to be edited.

Container Registry Information

You will need to provide the details for the container registry where the Adaptive Engine images are stored.

Resource Limits

Adjust the resource limits based on your cluster’s capabilities and workload requirements. harmony.gpusPerNode should match the available GPU resources for each node in the cluster where Adaptive Harmony will be deployed. For example:

Configuration Secrets

The chart requires several secrets for configuration, such as S3 bucket URLs, database connection strings, and authentication provider details. You can set these directly in values.yaml or use an external secrets manager.
If you set allow_sign_up: true, any member of your OIDC provider will be able to connect to Adaptive Engine. To restrict user access, set it to false and create users with SDK instead.
For information on using an external secrets manager, refer to the “Using External Secret Management” section in the helm chart’s README.