Uptime Kuma
Read-only Uptime Kuma monitor history for triage: the last N heartbeats of one monitor -- status, time, message, ping -- plus a summary of the current status, since when, and how many times it changed in the window. Kuma has no REST endpoint for heartbeat history, and its socket.io API needs the instance's only kind of login, an administrator, so any credential that can read history can also delete monitors and read notifier secrets. This model instead reads kuma.db over SSH with the host's python3, opening the database mode=ro with PRAGMA query_only=ON so SQLite itself refuses any write, and selects named columns from the monitor and heartbeat tables only: never notifier settings, credentials, monitor URLs or hostnames, or heartbeat response bodies. Monitors are found by id or by name (exact, else a unique case-insensitive substring; ambiguity is an error listing the candidates). It needs no Kuma login, never enters the container, never copies the database off the host, and has no write method.
Global Arguments
| Argument | Type | Description |
|---|---|---|
| sshHost | string | Host that holds the Kuma data directory. |
| sshUser? | string | SSH user. Needs read access to the database file, nothing more. |
| dbPath | string | Path to kuma.db ON THE HOST (the bind-mounted data directory), not the path inside the container. `~` is expanded. |
| python? | string | Python interpreter on the host. Its stdlib sqlite3 module is used. |
| strictHostKeyChecking? | enum | OpenSSH StrictHostKeyChecking. `no` is never the default. |
| knownHostsFile? | string | Optional UserKnownHostsFile override. |
| Argument | Type | Description |
|---|---|---|
| id? | number | Monitor id. |
| name? | string | Monitor name: exact match first, else a unique case-insensitive substring. |
| limit? | number | How many heartbeats, newest first. |
| importantOnly? | boolean | Only beats Kuma marked important, i.e. status changes. |
Resources
- Has README or module doc2/2earned
- README has a code example1/1earned
- README is substantive1/1earned
- Most symbols documented1/1earned
- No slow types (deprecated)1/1earned
- Dependencies pass trust audit2/2earned
- Docs keep secrets in a vault1/1earned
- Has description1/1earned
- Platform support declared (or universal)2/2earned
- License2/2earned
- Verified public repository2/2earned
Spawns a subprocess with Deno.Command().
- models/kuma_history.ts:400 — no reason given