On-prem CLI¶
Install and remove on-prem training workers from your terminal. Commands match the snippets on On-prem training cluster → class row → Config → Arena CLI (recommended).
Prerequisites¶
Arena CLI installed (
pip install "agilerl[arena]")arena loginorARENA_API_KEY(Authentication)Enterprise organization
One install target per cluster — Docker Swarm or Helm on Kubernetes, not both:
Swarm: SSH to manager and worker hosts from the machine running the command
Helm:
kubectlcontext for the target cluster
Register an enterprise cluster¶
Connect a Kubernetes cluster you already run, then install the cluster agent in one step. This is the command the training cluster page generates after you register:
arena on-prem cluster register --name 'corp-k8s' \
--storage-endpoint 'https://s3.corp.example.com' \
--storage-bucket 'arena-data' \
--storage-secret-name 'arena-storage' \
--install --no-write
Flag |
Meaning |
|---|---|
|
Cluster name, unique per org. Reusing a name updates that cluster. |
|
S3 API the cluster agent can reach |
|
Bucket holding checkpoints and datasets |
|
Kubernetes Secret in the agent namespace with the bucket credentials |
|
Downloads charts from Arena and installs the agent against your current kube context |
|
Does not write chart files to disk |
|
First register: mint bundled MinIO values and install the storage chart |
|
Omit |
|
Shortcut for |
|
JSON list of |
Optional routing and storage flags (--storage-prefix, --ingress-class-name, --hostname-template, --domain, --tls-secret-name, --ray-data-storage-class-name, --ray-data-pvc-size, --preprocessing-resource-class-id) match the Advanced settings on the cluster form. --hostname-template is hostname-only (inference-{deploymentId}), not a FQDN; --domain is the DNS suffix (corp.example.com). If --domain is set and --hostname-template is omitted, the template defaults to inference-{deploymentId}. Arena joins them as {expanded_hostname_template}.{domain} when both are set.
Create the credentials Secret first if it does not exist:
kubectl create secret generic arena-storage \
--from-literal=AWS_ACCESS_KEY_ID=<key> \
--from-literal=AWS_SECRET_ACCESS_KEY=<secret>
Connectivity shows Connected on the cluster row once the operator polls Arena.
Install¶
arena login
arena on-prem install MY-CLASS --setup-type dockerSwarm \
--manager MANAGER_HOST --workers gpu1.example.com,gpu2.example.com
Helm (local kubectl):
arena on-prem install MY-CLASS --setup-type helm
Replace MY-CLASS with the resource class Name from the training cluster table.
From the Config panel: the class already exists; the command installs workers for that class.
From your terminal only: arena on-prem install NEW-NAME can enable the on-prem provider and create the class when missing, then download the bundle and install. Set worker sizing afterward in the UI or with CLI class update commands if your install flow requires it.
Swarm install over SSH can install Docker on fresh nodes (including reboot when required). Helm runs ./setup.sh against your current kube context.
Down¶
Stop workloads without removing the deployment definition:
arena on-prem down MY-CLASS --setup-type dockerSwarm --manager MANAGER_HOST
arena on-prem down MY-CLASS --setup-type helm
dockerSwarm — scales every service in the stack to zero replicas; the stack remains on the manager.
helm — scales deployments to zero replicas; the Helm release remains. Release and namespace come from the deployment bundle (override with RELEASE_NAME / NAMESPACE env vars when set in the bundle).
To bring workloads back, re-run arena on-prem install with the same flags.
Teardown¶
Remove the deployment (stack or Helm release):
arena on-prem teardown MY-CLASS --setup-type dockerSwarm --manager MANAGER_HOST
arena on-prem teardown MY-CLASS --setup-type helm
Use the same --setup-type as install. Swarm teardown needs --manager.
Removes the deployment only — not a full reversal of install (Docker, NVIDIA, and the Arena resource class remain). With --leave-swarm, pass --workers on multi-node clusters so every node can leave the Swarm.