● uptime monitoring / single binary

MONITRA_

One binary.
Zero infrastructure.

Copy it to a box, run it, get alerted. No Docker, no database server, no config-file archaeology.

7.0 MB · HTTP / TCP / ICMP / K8s / host agents · CLI · TUI · web · API

~ shellbash
$ monitra monitor add --name api \ --target https://api.example.com --kind http --interval 30 $ monitra start ✓ monitoring started $ monitra tui # in another terminal _

Two ways to monitor. Both cost you something.

--- hosted-saas Pingdom, UptimeRobot, Better Stack
  • ✓ Great UX.
  • ✗ Someone else's infrastructure.
  • ✗ Cost scales per monitor.
  • ✗ Private networks need an agent.
--- self-hosted Uptime Kuma, Zabbix, Prometheus Blackbox
  • ✓ Powerful.
  • ✗ Containers, databases, reverse proxies, config files.
  • ✗ Real setup effort between “is it down?” and “I'm alerted.”
+++ monitraMonitra is the whole platform, in one executable, with no external service dependencies for its default setup.

Numbers, not adjectives.

Measured 2026-10-01 on a 2 vCPU / 512 MB cgroup. Read the benchmark results.

benchmarks.txt
$ cat benchmarks.txt
METRICVALUENOTE
binary_size7.0 MBstripped release binary, default features
monitors1,000at 30s intervals, p99 drift 3× under the 2 s bound
scaling_limit~2,500CPU-bound; passes by ~1%, fails at 5,000. Single run, mock targets share the CPUs
p99_drift632 msN = 1,000 (1,979 ms at N = 2,500)
missed_checks0N ≤ 5,000 in the constrained run
static_musl6.8 MBno libc dependency; runs on Alpine or scratch
rss_at_500041 MBmemory is not the constraint

HTTP. TCP. ICMP. Kubernetes. Hosts.

● http

Request an endpoint. Check the response.

● tcp

Open a connection to host:port.

● icmp

Ping the host.

● kubernetes

Deployments, StatefulSets, Services. Polled directly via the cluster API.

● host-agent

A lightweight agent pushes host checks back to the daemon.

Runs where your services are. Inside the VPC, on the edge device, in the cluster. A lost agent or broken collector shows as stale or unknown, never as down.k8s: direct poll · hosts: agent push

CLI first. Everything else is a client.

cli
$ monitra <command>
Every capability. The reference interface.
tui
$ monitra tui
Terminal UI over SSH.
web
embedded, optional
A dashboard served by the same binary.
api
REST + WebSocket
For scripts and your own tooling.

> Every capability is reachable from the CLI. The web UI is a client, not a requirement.

Get told. Without blocking a probe.

log
default
Needs nothing external. Works on a pristine machine.
webhook
webhook://host/path
JSON message over HTTPS.
slack
slack://host/path
Slack text payload. Built with the slack Cargo feature.

> Bounded queue, 30 s retries, failures logged loudly. monitra alert list keeps the history even when delivery fails.

What Monitra is not.

Scope discipline matters more than feature count.

NOT THIS
GO HERE INSTEAD
✗ Metrics / observability platform
Prometheus, VictoriaMetrics
✗ APM / tracing
Jaeger, Datadog
✗ Log aggregation
Loki, Elasticsearch
✗ On-call / alert routing
Alertmanager, PagerDuty

We say no to a lot so the binary stays small and the failure modes stay boring.

If we're uncertain whether a target is down, we say unknown. We don't guess.

A monitor that lies is worse than no monitor.

✓ up✗ down? unknown

Get from source to your first check.

Early software: v0.0.x. Build from source today; prebuilt binaries are not published yet. Known gaps are listed under limitations.

~ shell
$ git clone https://github.com/rustiqz/monitra.git $ cd monitra $ cargo build --release $ ./target/release/monitra monitor add \ --name api --target https://api.example.com \ --kind http --interval 30 $ ./target/release/monitra start _