The values below apply to Enterprise Helm chart
0.74.0 and Runtime API 0.10.0.
Check the values for your licensed release before installing or upgrading.Cluster Requirements
Entra or Azure DevOps authentication alone does not establish subscription access.
Check
az account list --all and the selected subscription’s permissions.
Grant the deployment identity access to create the cluster and its dependencies.
Creating Azure role assignments requires additional permissions. Existing networks, private
cluster access and workload identities need their own access checks.
Check VM SKU restrictions as well as quota before selecting a region or availability
zones. Use a dedicated resource group and explicit subscription and kubeconfig.
Node Pools
Use separate pools for application services and sandbox workloads:- General pool: runs OpenHands services and cluster add-ons. Keep application workloads here through node affinity or selectors.
- Sandbox pool: an Ubuntu user node pool for agent sandboxes. Set
workload=openhands-sandboxas a persistent node-pool label so new nodes match the Runtime API selector. Do not install the Sysbox DaemonSet or add its installer label.
Configure runc Sandboxes
Override the Sysbox defaults in the Enterprise chart through Helm values:RUNTIME_CLASS omits runtimeClassName from new sandbox pods, using
containerd’s default runtime. SET_HOST_USERS: "false" omits the hostUsers override;
it does not request the Sysbox user-namespace configuration. Save these values in
values-aks-runc.yaml and pass that file as the last -f argument on every
install and upgrade, after your base values and feature overlays. For example:
values-aks-runc.yaml. Omitting these overrides
can restore the chart’s Sysbox defaults and prevent new sandboxes from starting.
If you add a sandbox-pool taint, configure a matching toleration instead of the empty list.
Verify a Sandbox
-
Sign in to OpenHands and start a conversation. Ask the agent to run
pwd, write a file in its workspace and read it back. -
Confirm the sandbox pod runs on the sandbox pool using the default runtime:
Expect a sandbox-pool node name followed by two empty fields. Use the runtime namespace configured in your Helm values, such as
openhands-runtimes. - Stop the conversation runtime, reopen the conversation and ask the agent to read the same file to confirm workspace persistence.
Persistent Storage
Inspect the Azure Disk CSI StorageClass:disk.csi.azure.com)
and supports the binding mode and expansion your workloads need. Azure Disk
workspace PVCs use ReadWriteOnce. Configure storage explicitly for workspaces,
PostgreSQL and any in-cluster object store. Merge the following settings into your
base values file:
Object Storage
Conversation/session storage is separate from workspace PVCs. Helm chart 0.74.0 supports S3-compatible and GCS filestore configuration; it does not expose an Azure Blob backend. Do not substitute Azure Blob credentials into the S3 settings. For an in-cluster store, chart0.74.0 includes optional RustFS. Configure its
persistence with Azure Disk CSI, provide the object-store credential Secret, and
create the conversation bucket before starting conversations. Select an object
store that meets your durability requirements and configure backup and restore.
When enabling automations, configure a separate automation package bucket. The
automation service can create it at startup when bucket creation is enabled.
Database
Use the External PostgreSQL guide for managed database requirements and Helm values. If choosing Azure Database for PostgreSQL, verify compatibility, TLS and network access against those requirements before deployment. For bundled PostgreSQL, set its persistence storage class as shown above.Ingress
Run an ingress controller on the general pool. For Traefik with an Azure public load balancer, use the following Traefik Helm values:Next Steps
DNS and TLS
Configure hostnames and trusted certificates.
Install with Helm
Deploy the application and validate a conversation.
Enable Automations
Configure optional automation services and storage.

