README.md

March 20, 2026 ยท View on GitHub

Satellite

Badges

Build Status License: MIT

MCP Server

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
ToolDescription
list_probesList all probes with status, latest metrics, and alarm thresholds
get_cpuCPU usage time series with top 3 processes
get_memoryMemory usage time series with top 3 processes
get_loadLoad average time series (1m, 5m, 15m)
get_diskDisk usage time series with path selector
get_logsLog entries with log file path selector
get_alertsAlarm thresholds and current metric values
delete_probeDelete a probe and all its data

Enable it by setting MCP_ENABLED=true in your .env file.

Features

  • 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)

Getting Started

Follow the steps below to install and configure Satellite.

Prerequisites

  • Redis: Version >= 5.0 for data reading

Run with Docker

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/satellite

Install from Binary

Download the latest release for your platform from the GitHub Releases page.


Install from Source

Prerequisites

  • Go: Version >= 1.26
  • Node.js: Version >= 22.0
  • Yarn or NPM

Steps

  1. Clone the repository:
git clone git@github.com:petaki/satellite.git
  1. Install UI dependencies and build:
cd satellite
yarn install
yarn build
  1. Build the binary:
go build
  1. Copy and edit the configuration:
cp .env.example .env

Configuration

All configuration is done through environment variables in the .env file.

General

Application Name

APP_NAME=

Application Address

APP_ADDR=:4000

Application URL

APP_URL=http://127.0.0.1:4000

Application Series Buttons

  • Maximum 4 items.
  • 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:

OptionDescription
last_5_minutesLast 5 minutes
last_15_minutesLast 15 minutes
last_30_minutesLast 30 minutes
last_1_hourLast 1 hour
last_3_hoursLast 3 hours
last_6_hoursLast 6 hours
last_12_hoursLast 12 hours
last_24_hoursLast 24 hours
last_2_daysLast 2 days
last_7_daysLast 7 days
last_30_daysLast 30 days

Redis

Redis URL

REDIS_URL=redis://127.0.0.1:6379/0

MCP

Exposes monitoring data to AI agents via the Model Context Protocol. No authentication is included โ€” control access at the network level.

MCP Enabled

MCP_ENABLED=false

Heartbeat

Sends webhook notifications when a probe stops reporting. Requires Redis to be configured.

Heartbeat Enabled

HEARTBEAT_ENABLED=false

Heartbeat Wait (in minutes before first notification)

HEARTBEAT_WAIT=5

Heartbeat Sleep (in seconds between notifications)

Set to 0 to disable.

HEARTBEAT_SLEEP=300

Heartbeat Webhook

Heartbeat Webhook Method

HEARTBEAT_WEBHOOK_METHOD=POST

Heartbeat Webhook URL

HEARTBEAT_WEBHOOK_URL=http://127.0.0.1:4000/heartbeat

Heartbeat Webhook Header

HEARTBEAT_WEBHOOK_HEADER='{"Authorization": "Bearer TOKEN", "Accept": "application/json"}'

Heartbeat Webhook Body

The body supports the following placeholders:

PlaceholderDescription
%pProbe name
%tTimestamp (RFC3339)
%xTimestamp (Unix)
%lSatellite link (relative)
HEARTBEAT_WEBHOOK_BODY='{"probe": "%p", "timestamp_rfc3339": "%t", "timestamp_unix": %x, "link": "%l"}'

Usage

./satellite web serve

Data Collection

Collected data is provided by Probe.

Contributors

  • @dyipon - development ideas, bug reports and testing

Reporting Issues

If you are facing a problem with this package or found any bug, please open an issue on GitHub.

License

The MIT License (MIT). Please see License File for more information.