# The server selector

> **Multi server observability is BoxLang+.** The Free version shows one server only: this one. Free has no selector, the Servers table lists this server alone, and the server answers 403 for the pages of another server.

With BoxLang+ the header of the console has a **Server** selector. It switches the pages that read saved data between this server, another server and all servers.

Servers that share a [store folder](../reference/store.md) (a network volume, for example) each write their own subfolder. The selector lists the servers it finds there:

| State | Meaning |
|---|---|
| live | This server. Its numbers come from memory. |
| saved | Another server that wrote in the last two minutes. |
| behind | Another server that wrote in the last 24 hours, but not lately. |
| stale | No write for more than a day. It is shown dimmed, cannot be chosen, and is left out of **All servers**. |

**All servers** appears when at least two servers are not stale.

## Which pages follow the selector

| Page | Another server | All servers |
|---|---|---|
| [HTTP](http.md) | Its saved rollups and calls | Rollups added up. The p95 is read from the merged latency histogram, so it is a real p95 and not an average of p95s. |
| [Reports](errors-and-reports.md#reports) | The same page as the live one, from the totals it saved: requests, errors, slow requests, queries, exceptions, status codes, p50 / p95 / p99, busiest, slowest and failing URLs, and the minute series | The totals added up, latency counts merged into one real p95, with a table by server |
| [Errors](errors-and-reports.md#errors) | Its saved error groups, with samples | Groups with one fingerprint merged: counts added, first and last seen, the servers that saw it, newest samples |
| [Mail](mail.md), [ORM](../panels/orm.md), [Queries](in-flight-and-queries.md) | The same page from the snapshot of that server: the Mail overview (1h and 24h), the latest messages (addresses and subject), servers, queue and settings; the ORM totals and statistics; the query statistics | Not offered. Pick one server. The text of a message stays on the server that sent it. |
| [System](system-and-threads.md), [Executors](executors.md), [Tasks](tasks.md), [Datasources](datasources.md), [Caches](caches.md), Requests, In flight | The same page, from the **health snapshot** that server saves every minute: heap, CPU, threads, volumes, pools, tasks, caches and its latest requests | Not offered. Pick one server. |

Pages of another server are read only and say the totals were saved, not live. Reset and Clear act on this server only. Every other page shows this server only. The selector does not change what an action does: actions, downloads and settings always act on this server.

## The health snapshot and the Servers table

Every server saves one small document a minute (`health`) with what the live pages show: system, executors, tasks, datasources, caches, the latest 50 requests and what is in flight. It holds no request bodies, cache values or log lines. A page for another server shows a banner ("You are looking at web-b, saved 40 seconds ago. This page is read only") and every call the page makes says which server it shows, so an action such as pause a task, clear a cache or run GC can never run on this server by mistake: the server answers 403.

The **Overview** shows a **Servers** table when there is more than one server: state, heap, CPU, threads, the fullest volume, failing tasks, connections waited for, deadlocks and when it was saved. Click a row to open its System page. Without BoxLang+ the table has this server only.

Threads, Logs, Environment and Configuration are not copied between servers (they are large and sensitive). Open the console of that server for them.

## What to know

* Other servers' numbers are read from the files they wrote, so they can be about 30 seconds behind. A page says when it shows saved data.
* The selector reads files. It never connects to another server.
* The viewer role can use it, like the pages it switches.
* Your choice is kept for the browser session.
* Without BoxLang+ there is no selector, and the server answers 403 for another server.

BX Insights is the product for clusters, long history and alerting. This selector only reads what the servers of one store folder saved.
