# What is kogut

Self-hosted server, container, and uptime monitoring in one Rust binary.

kogut monitors servers, containers, and uptime. It runs as one Rust binary with one
SQLite file. Optional web app monitoring adds analytics, JavaScript errors, Web Vitals,
and deploy reports.

Checks, host metrics, and deploys share a service timeline. Related failures form one
incident with [likely causes and evidence](https://docs.kogut.dev/incidents/correlation/).

## Monitoring scope

- [Servers and containers](https://docs.kogut.dev/agent/installing/): host resources, Docker and Podman
  containers, and systemd units, collected by an agent.
- [Uptime](https://docs.kogut.dev/monitoring/checks/): HTTP, TCP, DNS, and ping checks, also from agents
  inside private networks. HTTPS checks watch certificate expiry, and
  [domain checks](https://docs.kogut.dev/monitoring/certificates-and-domains/) registration expiry.
- [Heartbeats](https://docs.kogut.dev/monitoring/heartbeats/): missed cron jobs, late backups, and reported
  job failures.
- [Web apps](https://docs.kogut.dev/web-apps/tracking-script/): page views, visitors, Web Vitals, and
  JavaScript errors, without cookies or browser storage.
- [Deploys](https://docs.kogut.dev/deploys/reports/): markers from GitHub or CI, with before-and-after
  reports.
- [Status page](https://docs.kogut.dev/status-page/): public service status and incidents.

## What runs where

`kogut serve` runs checks, receives data, manages incidents, sends notifications, and
serves the panel, the API, and the status page.

`kogut agent` runs on each monitored Linux host. It connects out and needs no inbound
port. [kogut edge](https://docs.kogut.dev/high-availability/kogut-edge/), an optional Cloudflare Worker,
alerts you when kogut stops answering.

## Resource use

Measured with `scripts/measure-memory.sh` on the demo data from
`scripts/demo.sh --release --agent`, on x86_64 Linux: two hosts with a week of history,
five checks, about 3,700 page views a day, and one live agent.

| x86_64 Linux build from `cargo build --release` | Size or memory (RSS) |
|---|---|
| Binary, with the panel | 12.2 MB (12,217,024 bytes) |
| Agent-only binary | 3.6 MB (3,641,664 bytes) |
| Server idle | 21.7 MiB |
| Server one minute after panel reads | 33.8 MiB |
| Server peak during panel reads | 60.4 MiB |
| Agent idle | 8.6 MiB |

The panel reads are every screen in every range ten times, first one at a time, then
six at a time. These are measurements, not limits.

[Resource use compared](https://docs.kogut.dev/introduction/resource-comparison/) runs kogut next to Beszel, Uptime Kuma,
and other tools with the same 50 checks.

## Limits of scope

kogut serves one team. It has no log search, traces, APM, session replay, identified
users, or headless-browser checks. Agents attach recent log excerpts to incidents, but
kogut is not a log store. It has no plugins, custom dashboards, or arbitrary metric
series; see [Plugins and custom metrics](https://docs.kogut.dev/faq/#plugins-and-custom-metrics).
