Understand the Coolify v5 Control Plane Architecture
v4.xThe Coolify v5 architecture manages a fleet of mesh-connected hosts using a centralized UI/API and per-host agents called coold.
Key Components
- Coolify Central UI/API: The command center. It routes commands to specific hosts using
host_id. It listens for outbound TLS connections (:443) from agents. - coold (Per-host agent): The local agent running on every host. It dials outbound to Central (or an optional gateway) via WSS/gRPC bidi streams. It never accepts inbound connections from the internet or Central, allowing it to work through NAT and firewalls.
- Podman: The container runtime.
cooldinteracts with Podman exclusively through the local/run/podman/podman.sockvia a bind-mount. The raw socket is never exposed on a TCP network. - Per-customer Gateway (Optional): For large-scale deployments, a single host in a mesh can act as a stream aggregator. It dials Central once and proxies commands to other
cooldagents over the WireGuard (wg0) mesh, reducing the connection load on Central.
Connectivity Model
- Outbound-only: Agents (
coold) initiate all connections to Central. This ensures scalability and security. - Intra-mesh REST API:
cooldexposes a local REST API on the WireGuard (wg0) management IP (port:8443). This is accessible only to intra-mesh callers (like thecoolify firewallCLI or other agents in the same mesh) and is never reachable from the public internet.
┌─────────────────────────────────────┐
│ Coolify central UI / API │
└────────────────────▲────────────────┘
│ outbound TLS :443 (WSS / gRPC bidi)
│
┌─────────────────┴──────────────────┐
│ (per-customer gateway, │
│ OPTIONAL — one mesh host │
└─────────────────▲──────────────────┘
│
┌────────────────────┴────────────────┐ ┌─────────────────────────┐
│ coold (per-host agent) │ │ /run/podman/podman.sock│
└─────────────────────────────────────┘ └─────────────┬───────────┘
▼
┌─────────────────────────────┐
│ podmand (containers, nets) │
└─────────────────────────────┘