Satellite includes a built-in MCP (Model Context Protocol) server that lets AI agents query your monitoring data directly. When enabled, it exposes a Streamable HTTP endpoint with tools for listing probes, querying CPU/memory/load/disk metrics, reading logs, checking alerts, and managing probes.
Add it to your MCP client:
# Claude Code
claude mcp add --transport http satellite http://127.0.0.1:4000/mcp
# Codex
codex mcp add satellite --url http://127.0.0.1:4000/mcp| Tool | Description |
|---|---|
list_probes |
List all probes with status, latest metrics, and alarm thresholds |
get_cpu |
CPU usage time series with top 3 processes |
get_memory |
Memory usage time series with top 3 processes |
get_load |
Load average time series (1m, 5m, 15m) |
get_disk |
Disk usage time series with path selector |
get_logs |
Log entries with log file path selector |
get_alerts |
Alarm thresholds and current metric values |
delete_probe |
Delete a probe and all its data |
Enable it by setting MCP_ENABLED=true in your .env file.
- MCP Server - AI agent access to all monitoring data via Model Context Protocol
- CPU - overall and per-process CPU usage charts
- Memory - overall and per-process memory usage charts
- Load - system load averages (1, 5, 15 min) charts
- Disk - per-partition disk usage charts with path selector
- Log Viewer - browse log tail entries collected by Probe
- Dark Mode - full dark mode support
- Heartbeat - webhook notifications when a probe goes offline
- Series Filtering - configurable time range buttons (5 min to 30 days)
Follow the steps below to install and configure Satellite.
- Redis:
Version >= 5.0for data reading
Image can be found at the package page on GitHub.
docker run --rm \
-e APP_URL=http://127.0.0.1:4000 \
-e REDIS_URL=redis://192.168.0.200:6379/0 \
-p 4000:4000 \
ghcr.io/petaki/satelliteDownload the latest release for your platform from the GitHub Releases page.
- Go:
Version >= 1.26 - Node.js:
Version >= 22.0 - Yarn or NPM
- Clone the repository:
git clone git@github.com:petaki/satellite.git- Install UI dependencies and build:
cd satellite
yarn install
yarn build- Build the binary:
go build- Copy and edit the configuration:
cp .env.example .envAll configuration is done through environment variables in the .env file.
APP_NAME=
APP_ADDR=:4000
APP_URL=http://127.0.0.1:4000
- Maximum
4items. - The first item is the
default. - The order does not matter from the second item.
APP_SERIES_BUTTONS=last_5_minutes,last_1_hour,last_24_hours,last_7_days
Available options:
| Option | Description |
|---|---|
last_5_minutes |
Last 5 minutes |
last_15_minutes |
Last 15 minutes |
last_30_minutes |
Last 30 minutes |
last_1_hour |
Last 1 hour |
last_3_hours |
Last 3 hours |
last_6_hours |
Last 6 hours |
last_12_hours |
Last 12 hours |
last_24_hours |
Last 24 hours |
last_2_days |
Last 2 days |
last_7_days |
Last 7 days |
last_30_days |
Last 30 days |
REDIS_URL=redis://127.0.0.1:6379/0
Exposes monitoring data to AI agents via the Model Context Protocol. No authentication is included — control access at the network level.
MCP_ENABLED=false
Sends webhook notifications when a probe stops reporting. Requires Redis to be configured.
HEARTBEAT_ENABLED=false
HEARTBEAT_WAIT=5
Set to 0 to disable.
HEARTBEAT_SLEEP=300
HEARTBEAT_WEBHOOK_METHOD=POST
HEARTBEAT_WEBHOOK_URL=http://127.0.0.1:4000/heartbeat
HEARTBEAT_WEBHOOK_HEADER='{"Authorization": "Bearer TOKEN", "Accept": "application/json"}'
The body supports the following placeholders:
| Placeholder | Description |
|---|---|
%p |
Probe name |
%t |
Timestamp (RFC3339) |
%x |
Timestamp (Unix) |
%l |
Satellite link (relative) |
HEARTBEAT_WEBHOOK_BODY='{"probe": "%p", "timestamp_rfc3339": "%t", "timestamp_unix": %x, "link": "%l"}'
./satellite web serveCollected data is provided by Probe.
- @dyipon - development ideas, bug reports and testing
If you are facing a problem with this package or found any bug, please open an issue on GitHub.
The MIT License (MIT). Please see License File for more information.
