--- id: servers title: Servers sidebar_label: Servers --- The fleet. Every managed machine runs an agent that connects outbound to the control plane, and everything else in Vantage keys, workflows, monitors, consoles targets these records. ## Enrolling a server Covered step by step in [Add your first server](../getting-started/first-server.md). In short: **Servers → Add server** issues a single-use, one-hour token and shows a one-liner to run as root on the target machine. ## Lifecycle | Status | Meaning | | --------- | --------------------------------------------------- | | `pending` | Enrolment created; the agent has not registered yet | | `active` | The agent registered and is syncing | | `offline` | Last-seen passed the threshold | The offline sweep runs every two minutes, so a machine that has just gone away takes a little while to be marked as such. That delay is intentional a single missed poll is not an outage. ## Tags A tag is a `key:value` label you put on a server. Tags are how you say what a machine **is** `env:prod`, `role:web`, `team:core-infra` so that you can find it later, and so that a [workflow](./workflows.md) can target it without you naming it by hand. There is no tag library to manage first. A tag exists because a server carries it, and it stops existing when the last server carrying it drops it. ### The rules | Rule | Value | | ---------- | ------------------------------------------------- | | Characters | lowercase letters, digits, `-` and `_`, on both halves | | Key length | up to 32 characters | | Value length | up to 64 characters | | Per server | up to 20 tags | Neither half may be empty, and keys beginning `sys:` are reserved for tags Vantage may derive from inventory later, so a tag you write today can never collide with one invented for you tomorrow. Anything outside those rules is refused with a message naming the rule, rather than quietly saved in a shape you did not intend. Uppercase is not folded to lowercase for you `Env` is a mistake, not a synonym for `env`. ### Editing a server's tags On the server detail page, **Edit** beside the tag chips. Saving replaces the whole set: what you see in the editor is exactly what the server will have. There is no per-tag merge, so if two people edit the same server at once, the last save wins outright rather than producing a blend of the two. ### Filtering the fleet The **Servers** list has a picker per tag key in use. Choosing values from more than one key narrows the list a server must match **all** of them, not any. Untagged servers appear only when no filter is set. :::tip A filtered fleet view is a link The filter lives in the URL (`/servers?tag=env:prod&tag=role:web`). Copy the address bar and you have sent someone the same view, not a description of how to reproduce it. ::: ## The server detail page ### Keys Which SSH keys are assigned to this machine, and their state. See [SSH keys](./ssh-keys.md). ### Inventory Agents report: | Data | Refreshed | | ---------------------------------------- | ---------------- | | CPU, memory, swap, load | every 30 seconds | | Partitions, kernel, full static snapshot | every 15 minutes | The two carry separate timestamps, so a stale static snapshot beside fresh metrics is normal rather than a fault. ### OS updates Agents check for pending package updates hourly and report the count. From the server page you can: - **Apply updates** pushes `ApplyUpdatesCmd` down the command stream. The agent runs the platform's package manager and reports back. - **Update agent** pushes `UpdateAgentCmd` with a target version; the agent downloads the release, verifies it and replaces itself. See [Agent updates](../operations/agent-updates.md). :::warning Applying updates is not scheduled or staged It runs now, on that machine. If you need ordering, health gates or a canary, build it as a [workflow](./workflows.md) instead that is what workflows exist for. ::: ### Console Opens a browser SSH, RDP or VNC session. See [Browser console](./browser-console.md). ## Windows servers Windows agents register, heartbeat, run workflow steps and report inventory. They do not manage `authorized_keys` the poll loop stops after the heartbeat on any non-Linux host. This is a deliberate scope decision, not a gap being worked on. ## Removing a server Deleting the server record removes it from the fleet. It does **not** uninstall the agent, which will keep trying to sync and failing. Uninstall it on the machine too: ```bash systemctl disable --now vantage-agent rm -f /usr/local/bin/vantage-agent /etc/systemd/system/vantage-agent.service rm -rf /etc/vantage systemctl daemon-reload ``` Keys previously written to `authorized_keys` stay on disk, because the agent is no longer running to remove them. Revoke and let the agent apply the change **before** you delete the server if that matters to you. ## Agent tokens Each server has its own token. The control plane stores only its SHA-256; the plaintext exists in the agent's `0600` config and nowhere else. There is no way to read a token back out of the control plane if one is lost, re-enrol the machine.