Prerequisites & topology
What you're installing, where it runs, and what the cluster needs before you apply anything.
Deployment shapes
Industric deploys two ways. On managed cloud Industric runs the control plane for you and the only thing you install is the Industric Operator — so the prerequisite is just a cluster to run it. When you self-host, you stand up three things in your own Kubernetes cluster: the CRDs, the Industric Operator, and the platform (the Industric backend plus UI). The rest of this page covers what a self-hosted install needs before you run exo-install.
Three components
The CRDs define what you can author, the operator (autonomic-manager) reconciles those objects into running pods, and the platform is the dashboard your team signs in to and the control plane the operator connects out to.
Cluster requirements
| Requirement | Value | Notes |
|---|---|---|
| Kubernetes version | 1.27 or later | With cluster-admin: you create CRDs, ClusterRoles, and namespaces. |
| kubectl context | A working context | The installer drives the cluster through your existing kubeconfig, so exec plugins, OIDC, and cloud IAM all work unchanged. |
| Operator pod | Requests 100m CPU / 128Mi | Limits 500m CPU / 512Mi. |
| Platform pod | Requests 100m CPU / 128Mi | Limits 1 CPU / 512Mi. |
Database
When self-hosting, the platform needs PostgreSQL 16. Let the installer deploy a bundled in-cluster Postgres (fine for trials), or bring your own managed instance (production) and pass its DSN. The backend requires an explicit exo-server --migrations step before serving. See Database migrations.
Namespaces
autonomic-system: the operator's namespace (the webhook serving cert is signed forautonomic-manager.autonomic-system.svc). Override it with--operator-namespace.- Platform namespace (self-hosted only): the platform lands here, defaulting to
exo, override with--namespace. On managed cloud the platform runs in Industric's cluster, so there's nothing to create. Either way, Agents, Tools, and other CRs live in whatever namespaces you choose.
Network
- Inbound to the platform: the backend serves plain HTTP on port 9092. Terminate TLS at your ingress.
- Outbound from the Industric Operator: in managed mode the operator opens one outbound connection to the platform. No inbound ports are opened on the operator's cluster.
- Image pulls: the operator launches runtime pods from
adaptivelive/*images. Air-gapped clusters mirror these and point the image references at the mirror. See Air-gapped.
Local tooling
Install exo-install, the cluster installer:
curl -fsSL https://exo.assets.adaptive.live/exo-install/install.sh | bash
Then run its pre-flight check before anything else:
exo-install precheck
It verifies (hard requirements marked ✓):
1kubectl on PATH ✓ required2helm on PATH ✓ required for rendering and installation3docker, git on PATH advisory4current kube-context set ✓ required5cluster reachable ✓ required6server version informational7RBAC: can create CRDs / ClusterRoles / ns / deploys advisory