The non-negotiable foundation: a database, ClickHouse for telemetry, and the ACS application tier (ftacs + hazelcast). Replica counts here drive how many hosts you'll need later. Optional bundles come next.
One-click groups for common service sets. UI and AI are the headline bundles. Monitoring & Testing are pre-packaged stacks you can toggle as a unit. You can still fine-tune each service in the next step.
Customer-facing UI: the operator portal, the API backend it talks to, and the device-network service. Pair with Configuration if operators manage configs through the portal. Keycloak (auth) is fully optional — pick it separately from the Auth category in the next step if you need SSO.
The AI assistant and the Postgres instance it persists conversation state into. Postgres is shared with anything else that needs it.
External-facing HTTP APIs. Northbound for OSS/BSS, service-api for tenants, provision-api for fulfillment.
Centralized device-configuration service and its admin UI. Pair with the UI bundle if operators access it through the operator portal.
Full service list with replica counts and dependencies. Required services from step 1 are locked. Bundle picks from step 2 are pre-checked. Selecting a service auto-checks its upstream dependencies.
How many physical servers will run this topology? Each host can run a subset of services; replicas of the same service must land on different hosts.
Drag each service replica from the rail into the host that should run it. Peer-cluster replicas must land on distinct hosts (warned). Auto-balance distributes everything round-robin.
Last call. Name the topology and verify the JSON below. It will land in env.topologies and immediately become selectable in the Create Compose Env wizard.