> For the complete documentation index, see [llms.txt](https://docs.cstplus.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.cstplus.org/documentation/guides/fleet-mode-multiple-servers.md).

# Fleet Mode (Multiple Servers)

Fleet mode lets you run CST+ across multiple servers: one primary and one or more edge nodes. The primary holds all configuration and content; edges sync from it and serve streams to viewers.

***

### When to use fleet mode

Add edge nodes when:

* Your viewers are geographically spread and latency to a single server is noticeable
* You are serving enough concurrent streams to saturate one server's upload bandwidth
* You want a hot standby in case the primary goes down

{% hint style="info" %}
Start with a single server. Add an edge node only when you have a clear reason. Most operators with under 5,000 concurrent viewers never need fleet mode.
{% endhint %}

***

### Architecture

| Component | What it runs                                           | Location              |
| --------- | ------------------------------------------------------ | --------------------- |
| Primary   | Control plane, admin panel, stream edge, all rendering | Your main server      |
| Edge node | Stream edge only (no panel, no rendering)              | Any additional server |

Edge nodes sync channel config, lines, and rendered content from the primary over HTTP, then serve streams from their own disk. The primary's director handles geo-routing: it looks at the viewer's IP and redirects them to the closest node.

***

### Adding an edge node

You need a separate CST+ license per node. Edge nodes activate via a fleet token generated by the primary, not a paid license key entered manually.

**On the primary:**

1. Go to **Settings > Fleet**
2. Click **Add node**
3. Enter the edge server's IP or hostname and give it a name
4. Copy the install command shown

**On the edge server:**

Run the install command. The installer sets up CST+, registers it as an edge node, and starts syncing. The node appears in the Fleet panel within a minute.

{% hint style="info" %}
The edge node only needs outbound HTTP access to the primary on port 8080. No SSH access between servers is required.
{% endhint %}

***

### Content sync

Edge nodes pull rendered channel reels from the primary automatically. When a channel is re-rendered on the primary, the edge pulls the new files.

{% hint style="info" %}
Content is never re-rendered on an edge node. All rendering happens on the primary. Edge nodes are pure serving infrastructure.
{% endhint %}

***

### Geo-routing

Set a country and/or city for each node in **Settings > Fleet**. The director uses this to calculate proximity and redirect viewers to the closest online node.

{% hint style="success" %}
If an edge node goes offline, the director automatically stops sending viewers to it and falls back to the primary or another online node. No manual action needed.
{% endhint %}

***

### Monitoring the fleet

| Status  | Meaning                                              |
| ------- | ---------------------------------------------------- |
| Online  | Node is synced and serving streams                   |
| Syncing | Node is pulling new content from the primary         |
| Offline | Node has not checked in within the expected interval |

{% hint style="danger" %}
Removing a node from the fleet does not uninstall CST+ from that server. It only disconnects the node from the primary. Viewers currently routed to a removed node will lose their stream until they reconnect and get rerouted elsewhere.
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.cstplus.org/documentation/guides/fleet-mode-multiple-servers.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
