---
title: "Live metrics and the remote console"
description: "Watch an endpoint's performance and processes as they happen, run scripts on it, open an interactive shell, and read console transcripts."
url: "https://support.outpostplatform.com/endpoints/live-and-console/"
product: "depot"
type: "how-to"
status: "draft"
ai_summary: "How to use an endpoint's Live tab (Performance, Processes, sampling interval, metered connections, monitoring.live_metrics_* policy) and Commands tab (library and one-off scripts, Run as SYSTEM or root or the signed-in user, the remote console and its shells per OS, transcripts, command history). Permissions endpoint:read, command:execute, script:run_unapproved."
availability:
  plans: ["home-lab", "essentials", "enterprise", "msp"]
  platforms: ["windows", "linux", "macos", "freebsd", "openbsd"]
  permission: "command:execute"
  preview: false
source: "https://gitlab.com/outpostplatform/docs/-/edit/main/src/content/docs/endpoints/live-and-console.md"
license: "CC BY 4.0"
---

# Live metrics and the remote console

When an endpoint is slow or misbehaving, the **Live** tab shows what it is doing
second by second, and the **Commands** tab lets you run a script on it or open
an interactive shell. This page covers both.

## Before you begin

- The endpoint must be online. Neither live metrics nor the console work on an
  offline endpoint.
- Watching live metrics and reading transcripts and command history needs
  `endpoint:read`.
- Running a script or opening the console needs `command:execute`.
- Running a one-off script, or a library script that is still a draft, also
  needs `script:run_unapproved`.

Every command and every console session is recorded in the endpoint's history.

## Watch live performance

1. Open the endpoint, and select the **Live** tab.
2. **Performance** opens first. Graphs of processor, memory, disk, network, and
   GPU fill in as samples arrive.
3. To change how often the endpoint samples, choose a **Sampling interval**:
   **1 s**, **2 s**, **5 s** (the default), or **10 s**.
4. Select **Pause** to freeze the graphs, and **Resume** to continue.

The endpoint samples only while somebody has the tab open. Leaving the tab
stops it, so live metrics cost the endpoint nothing the rest of the time.

Live metrics work on Windows, Linux, and macOS endpoints. FreeBSD and OpenBSD
endpoints have no live metrics, though the remote console and scripts work on
them.

The connection quality panel shows the **Ping round trip** between your browser
and Outpost, how fresh the newest sample is, and samples that were lost on the
way. If **Dropped for this view** climbs, choose a slower interval.

### Metered connections

An endpoint on a metered connection does not sample until you ask it to. The
tab shows **Live data is paused: this endpoint is on a metered connection**.
Select **Stream anyway** to sample regardless.

## Watch processes

Select **Live** > **Processes** to see the running processes. Filter by name,
process ID, or user. The columns are **Name**, **PID**, **CPU**, **Working
set**, **Private bytes**, **Read/s**, **Write/s**, **Threads**, **Handles**,
**User**, **Session**, and **Status**.

To end a process, note its **PID**, then use **Actions** > **Kill process**.
See [Endpoint actions](/endpoints/endpoint-actions/).

### Live metrics policy

Three profile settings decide what the **Live** tab may show:

| Setting | Default | Effect |
| --- | --- | --- |
| `monitoring.live_metrics_enabled` | On | Off shows **Live metrics are turned off for this endpoint**. Off anywhere wins. |
| `monitoring.live_metrics_process_list` | On | Off withholds the process list while keeping the graphs. Off anywhere wins. |
| `monitoring.live_metrics_min_interval_ms` | `1000` | The fastest the endpoint samples, in milliseconds. A faster request is slowed to this. The larger value wins. |

See [Profiles](/automation/profiles/).

## Run a script

1. Open the endpoint, and select **Commands** > **Overview**.
2. Choose how to run it:

   **From the library:** in **Run a script from the library**, choose a script
   in **Script**, and select **Run script**. A draft is marked **(draft)**.

   **One-off:** in **Run a one-off script**, choose an **Interpreter**, type
   the script in **Script**, and set **Timeout (seconds)**.

3. For a one-off script, choose who it runs as. **Run as SYSTEM** on Windows,
   or **Run as root** elsewhere, runs it with full rights. **Run as the
   signed-in user** appears when someone is signed in and the endpoint can run
   a script as that person.
4. Select **Run script**.

The result appears under **Most recent command**, with its **State**, **Exit
code**, **stdout**, and **stderr**. If the endpoint is offline, the command is
left pending until it reconnects.

An endpoint whose policy requires signed scripts refuses a one-off script or a
draft, and the console says which profile requires it. Approve the script in
the library to sign it. See [Scripts](/automation/scripting/).

## Open the remote console

The remote console is an interactive shell on the endpoint. It stays open
between commands, so the working directory and anything you set carry over.

1. Open the endpoint, and select **Commands** > **Console**.
2. In **Shell**, choose a shell:

   | Endpoint | Shells offered |
   | --- | --- |
   | Windows | **PowerShell**, **Command Prompt** |
   | Linux | **bash**, **sh**, **zsh** |
   | macOS | **zsh**, **bash**, **sh** |
   | FreeBSD and OpenBSD | **sh**, **bash**, **zsh** |

   A shell that is not installed on the endpoint is left out, and a note says
   which ones are missing.

3. Select **Open terminal**. The console opens in its own window.

   On FreeBSD and OpenBSD, **Open terminal** opens the remote viewer as a
   terminal-only window instead, with tabs, saved scripts, and saved layouts.
   See [Use the terminal in the remote viewer](/remote-access/terminal/).

On an endpoint that cannot share its screen, such as a Linux server without a
display, FreeBSD, or OpenBSD, the endpoint's page header also has an **Open
terminal** button, on every tab. It opens the remote viewer as a
terminal-only window, and needs `remote:initiate` as well as
`command:execute`.

In the console window, **Ctrl-C** interrupts the running command,
**Disconnect** ends the session, and **New session** starts another. On Windows
builds before Windows 10 version 1809, the console is line based rather than
full screen.

During a remote desktop session, the viewer's **Terminal** button opens shells
beside the endpoint's screen, in tabs, as the agent or the signed-in user. See
[Use the terminal in the remote viewer](/remote-access/terminal/).

### Control terminal access

On a profile's **Settings** tab, under **Remote shell**, set
`remote_shell.enabled` to `false` to block interactive terminals. It defaults
to `true`. Outpost and the agent enforce this setting, including terminal
requests from AI and MCP clients.

Terminal access is independent of `script_execution.enabled`. To block both
scripts and interactive terminals, turn off both settings. See
[Remote shell policy](/automation/policy-settings/#remote-shell).

## Read a console transcript

Every console session is recorded. On **Commands** > **Console**, under
**Session transcripts**, select **View** beside a session to read what was
typed and what came back. A very long session shows its first page of lines.

## Read command history

**Commands** > **History** lists every command sent to the endpoint, including
scripts, endpoint actions, patch requests, and agent updates, with the state,
exit code, and output of each.

## Verify

Run `hostname` as a one-off script. **Most recent command** shows the state
`completed`, exit code `0`, and the endpoint's hostname in **stdout**.

## If something goes wrong

| Symptom | Cause | Fix |
| --- | --- | --- |
| **This endpoint is offline** on the **Live** tab | The endpoint is not connected. | Wait for it to reconnect, or [wake it](/endpoints/wake-on-lan/). The tab starts on its own when it does. |
| **Live metrics are turned off for this endpoint** | A profile turns off `monitoring.live_metrics_enabled`. | Change the profile. |
| **Open terminal** is unavailable, or the console refuses to connect | The endpoint is offline, or you lack `command:execute`. Without the permission the button stays available and the connection is refused. | Check the endpoint's status and your role. |
| A terminal session is refused by policy | `remote_shell.enabled` is off in the endpoint's effective configuration. | Check **Profiles** > **Effective config** and the winning profile. |
| The script is refused as unsigned | The endpoint requires signed scripts. | Run an approved library script instead. |

## Next steps

- [Endpoint actions](/endpoints/endpoint-actions/)
- [Scripts](/automation/scripting/)
- [Remote access](/remote-access/)
