On-prem CLI

Install and remove on-prem training workers from your terminal. Commands match the snippets on On-prem training cluster → class row → ConfigArena CLI (recommended).

Prerequisites

  • Arena CLI installed (pip install "agilerl[arena]")

  • arena login or ARENA_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: kubectl context 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

--name

Cluster name, unique per org. Reusing a name updates that cluster.

--storage-endpoint

S3 API the cluster agent can reach

--storage-bucket

Bucket holding checkpoints and datasets

--storage-secret-name

Kubernetes Secret in the agent namespace with the bucket credentials

--install

Downloads charts from Arena and installs the agent against your current kube context

--no-write

Does not write chart files to disk

--install-storage

First register: mint bundled MinIO values and install the storage chart

--narrow-allowed-ips

Omit 10.0.0.0/8 from WireGuard AllowedIPs (k3d/k3s)

--lab

Shortcut for --install-storage --narrow-allowed-ips. Still pass --storage-endpoint, --storage-bucket, and --storage-secret-name (PoC defaults: http://minio.storage.svc:9000, arena-data, arena-storage).

--gateway-api-parent-refs

JSON list of {name, namespace?, sectionName?}. group and kind are optional.

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.