This guide explains how to configure resource limits for OpenHands Enterprise components. Proper resource configuration ensures stable operation and prevents issues like OOMKills and pod evictions.Documentation Index
Fetch the complete documentation index at: https://allhandsai-chore-rename-allhands-bot-github-pat-to-pat-token.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
Values File Structure
All configuration examples in this guide show keys that belong in yoursite-values.yaml
file. The examples show the complete path from the root of the file.
Understanding Kubernetes Resources
Kubernetes uses two key resource settings:- Requests: The minimum resources guaranteed to a pod. The scheduler uses this to place pods on nodes with sufficient capacity.
- Limits: The maximum resources a pod can use. Exceeding memory limits causes an OOMKill; exceeding CPU limits causes throttling.
Application Server Resources
The OpenHands application server (deployment name:openhands) handles the UI, API,
and agent orchestration. Configure its resources under the deployment section in
your values file.
Default Configuration
Recommended Production Configuration
For production workloads, increase memory and add replicas for redundancy:When to Adjust
Increase resources if you observe:| Symptom | Metric to Check | Action |
|---|---|---|
| Pod restarts | RESTARTS column in kubectl get pods | Increase limits.memory |
| High memory usage | kubectl top pods shows >80% of limit | Increase limits.memory |
| Evictions during node pressure | Pod events show eviction | Increase requests.memory to match actual usage |
| Slow response times | Application latency metrics | Add replicas or increase CPU |
Horizontal Pod Autoscaling
For automatic scaling based on load, enable the HorizontalPodAutoscaler:Sandbox Resources
Sandboxes (also called runtimes) are the isolated containers where agents execute code. Each conversation runs in its own sandbox pod. Configure these via environment variables in theruntime-api.env section.
Available Settings
| Variable | Default | Description |
|---|---|---|
MEMORY_REQUEST | 3072Mi | Minimum memory guaranteed per sandbox |
MEMORY_LIMIT | 3072Mi | Maximum memory per sandbox |
CPU_REQUEST | 500m | Minimum CPU guaranteed (500m = 0.5 cores) |
CPU_LIMIT | (none) | Maximum CPU per sandbox |
EPHEMERAL_STORAGE_SIZE | 10Gi | Temporary storage per sandbox |
Default Configuration
High-Resource Configuration
For workloads that require more resources (large codebases, memory-intensive builds):Resource Format
- Memory: Use
Misuffix (mebibytes). Examples:1024Mi,4096Mi,8192Mi - CPU: Use millicores.
1000m= 1 CPU core. Examples:500m,2000m,4000m - Storage: Use
Gisuffix (gibibytes). Examples:10Gi,50Gi,100Gi
Applying Changes
1. Update your values file
Editsite-values.yaml with your desired configuration:
2. Apply with Helm upgrade
Verifying Changes
Check application server resources
Check replica count
Check runtime-api environment variables
Verify the sandbox resource settings are configured in the runtime-api deployment:Monitoring Resource Usage
Current resource consumption
Resource usage over time
For production deployments, we recommend integrating with a monitoring solution (Prometheus/Grafana, Datadog, etc.) to track:- Memory usage vs. limits (to predict OOMKills)
- Memory usage vs. requests (to predict evictions)
- CPU throttling events
- Pod restart counts
Next Steps
K8s Install Overview
Return to the Kubernetes installation overview.
Enterprise Overview
Learn more about OpenHands Enterprise features.

