> ## Documentation Index
> Fetch the complete documentation index at: https://docs.2501.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Clusters

> How the engine operates hosts in network zones it cannot reach

The engine cannot always reach a host directly: the host may sit in another network zone, behind a firewall that blocks the engine's SSH or WinRM connection. You register a Kubernetes cluster or Docker Swarm whose nodes span your network zones, and give the host a placement that names the nodes in its zone. For each task, the engine starts a short-lived executor on one of those nodes. The executor connects back to the engine over TLS, opens the SSH or WinRM connection to the host from inside its zone, and is deleted when the task ends. A remote Kubernetes cluster works the same way, with the engine outside the network zone reaching in to its API server only.

```text theme={null}
 one Kubernetes cluster or Docker Swarm across your network zones
┌──────────────────────────────────────────────────────────────────┐
│ network zone A                ┃  network zone B                  │
│ ┌──────────────┐              ┃  ┌──────────────┐                │
│ │ engine       │── SSH/WinRM ─╳─▶│ host         │                │
│ │              │              ┃  └──────────────┘                │
│ │              │── start ─────╂─▶ node in zone B                 │
│ │              │◀── TLS ──────╂── executor ── SSH/WinRM ─▶ host  │
│ └──────────────┘              ┃  (placement: zone B nodes)       │
└──────────────────────────────────────────────────────────────────┘
```

## How it works

On Kubernetes, the engine creates each executor pod through the cluster's API: with its own service account when it runs in that cluster, otherwise with credentials you register. On Docker Swarm, the engine runs on a Swarm manager and starts each executor as a Swarm service.

* **No inbound flow.** Executors connect out to the engine; nothing dials into the executor's zone except, for a remote cluster, its API server.
* **No credentials at rest.** Host credentials arrive over the TLS session, never in the pod spec or on disk.
* **An unprivileged executor.** It runs as non-root with every capability dropped, and holds no service-account token or Docker socket.
* **Nothing resident.** The executor is deleted when the task ends.

## Clusters, Central and plugins

Besides executors for tasks, a cluster's nodes can run Central and send HTTP API requests. MCP server calls go out from the engine for now; running them on a cluster is planned.

```text theme={null}
 one Kubernetes cluster or Docker Swarm across your network zones
┌──────────────────────────────────────────────────────────────────┐
│ network zone A                ┃  network zone B                  │
│ ┌──────────────┐              ┃                                  │
│ │ engine       │── start ─────╂─▶ node in zone B                 │
│ │              │◀── TLS ──────╂── executor ─▶ host               │
│ │ MCP server   │              ┃   Central ─▶ control plane       │
│ │ calls ─▶ API │              ┃   HTTP API calls ─▶ private API  │
│ └──────────────┘              ┃                                  │
└──────────────────────────────────────────────────────────────────┘
```

| | Clusters |
| - | - |
| Central | Supported |
| HTTP API | Supported |
| MCP server | Planned |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.