OpenSandbox
The NeMo Platform Helm chart does not install OpenSandbox. Install the upstream charts, then point the platform at the running server.
Install OpenSandbox when you run sandboxed GRPO / NeMo Gym: untrusted custom environment FileSets run in isolated pods, not in the training container. It does not sandbox the rest of the platform (API, DPO, SFT, inference).
This page is the shared-kernel path: sandbox pods use the cluster default OCI runtime. That is often runc (containerd) or crun (CRI-O, including OKE and OpenShift). A kernel-isolated runtime is not required. Use OpenSandbox with Kata when those Gym/GRPO sandbox pods must be isolated from the host kernel. The documented path is Kata QEMU because it gives each sandbox its own guest kernel; other isolated runtimes may work but have not been tested. Example Helm values live in k8s/helm/examples/opensandbox/.
OpenSandbox [secure_runtime] is server-global. One OpenSandbox server cannot mix shared-kernel and Kata, so point the platform at one Service DNS. The cluster keeps its default OCI runtime for every other workload.
Upstream Helm, TOML, and SDK documentation: Kubernetes deployment, configuration, server configuration reference.
Prerequisites
- A local OpenSandbox checkout with Helm charts under
kubernetes/charts/, or a published chart tarball kubectlaccess to the cluster- The NeMo Platform Helm release namespace (jobs run here; it is also
[kubernetes] namespacein the server values)
Namespace rule
OpenSandbox config.toml [kubernetes] namespace must be the same namespace the platform jobs run in (the Helm release namespace). Control-plane Deployments, Services, and template ConfigMaps can stay in opensandbox-system. Sandbox pods remount the job-storage PVC by claim name and resolve image-pull secrets in their own namespace, so a dedicated opensandbox workload namespace will fail PVC remounts and image pulls.
Values jobs need
Training and other job pods are OpenSandbox clients. They do not need a kubeconfig to the sandbox API. The Python SDK builds http(s)://{domain}/v1 from:
Gym sample YAML uses OPENSANDBOX_DOMAIN / OPENSANDBOX_API_KEY. NeMo Platform and the SDK use OPEN_SANDBOX_*. Do not mix the names.
Install the shared-kernel server
Replace NMP_NAMESPACE with the platform release namespace.
Point the platform at the server
When sandboxClusterCapable is true, Kubernetes and Volcano job pods receive OPEN_SANDBOX_DOMAIN and a Secret-backed OPEN_SANDBOX_API_KEY. The chart still does not create OpenSandbox Deployments.
Verify
The verifier checks the server Deployment, /health, creates a short-lived sandbox in the job namespace, and asserts an empty runtimeClassName (cluster default OCI runtime).