docs/v5/architecture/adr/0004-coolify-control-plane-boundary.md
Accepted.
Coolify v5 manages user intent across teams, projects, environments, applications, services, databases, servers, domains, deployments, secrets, notifications, billing, and audit history. Those concepts require durable state, RBAC, validation, UI/API workflows, and user-facing status.
The v5 runtime also needs Flux and coold so hosts behind NAT can receive work and privileged host operations stay close to the host. If product decisions move into Flux or coold, the system gains multiple control planes with duplicated rules and unclear ownership. If Coolify directly mutates hosts, the Flux/coold boundary is bypassed and host safety checks become optional.
Coolify Laravel is the product control plane for v5. It owns user intent, durable product state, RBAC, API tokens, sessions, SSO/OAuth, projects, environments, resources, deployment state machines, placement decisions, proxy and ingress intent, secret resolution, notifications, billing/subscriptions, business audit, deployment logs, and user-facing status.
Coolify chooses what should happen and which host should receive the work. It then turns product intent into ordered host primitives and dispatches them through Flux to coold. Coolify records primitive results and advances the durable resource or deployment state.
Coolify must not hold long-lived coold streams or directly expose privileged host runtime sockets as part of normal v5 operation. It also must not rely on Flux or coold to understand product concepts such as teams, applications, domains, rollbacks, billing, or audit meaning.