2501 CLI, how the Kubernetes backend selects itself, and the RBAC the engine needs.
Docker Swarm remains the default deployment target, with a fully managed
deploy lifecycle. The Kubernetes target is generate-only: the CLI renders a complete manifest tree and you apply it with kubectl (or your distribution’s equivalent CLI). This keeps you in control of how changes reach the cluster, including through GitOps tooling.Generating the manifests
Run the deploy command with the Kubernetes target:<configDir>/kubernetes/:
--image-tag (alias --tag) is required with --yes. --stack-name and --namespace both default to ai-2501, and both are validated as DNS-1123 labels.
Flags
2501 infra deploy -h
--remove, --stop, --restart, --history, --cleanup-resources, and --disable-services drive the Swarm lifecycle; on the Kubernetes target the relevant options are --target, --stack-name, --namespace, --image-tag, -d, --dir, and -y, --yes.
Filling in secrets
Secret manifests usestringData, so every value is plain text and the cluster encodes it server-side on apply. Before applying, fill in any blank values directly in the YAML:
AWS_*andELASTICSEARCH_*insecret/engine.ymlandsecret/command-center.ymlBASE_URLinconfigmap/command-center.yml(your real ingress hostname)- The license public key in
secret/license-public-key.yml, unless a PEM file already exists at<configDir>/license.public.pem
Applying
kubectl — oc, k3s kubectl, etc.)
Executor backend selection
The engine picks an executor backend automatically:- When it detects that it is running inside a Kubernetes cluster, it uses the Kubernetes pod backend.
- Otherwise it falls back to Docker / Swarm.
EXECUTOR_MCP_BACKEND environment variable, set to kube or docker.
The engine talks to the in-cluster Kubernetes API directly using the pod’s auto-mounted service-account token. It does not shell out to
kubectl, and you do not supply a kubeconfig.Required access (RBAC)
The generatedrbac/executor.yml provisions a dedicated engine-executor ServiceAccount with a namespace-scoped Role and RoleBinding granting:
| Resource | Verbs |
|---|---|
pods | create, get, list, watch, delete |
pods/attach | create, get |
pods/status | get |
pods/log | get |
EXECUTOR_MCP_K8S_NAMESPACE on the engine pod, which is otherwise set to the engine’s own namespace via the Downward API.
For the full set of engine and Command Center environment variables (database, security keys, LLM providers, optional integrations), see Configuration.

