zonescope is the zero-runtime-dependency Bun and TypeScript topology truth engine for the loca.zone operator hub. It reads the host from independent angles, joins the observations into one Snapshot, and reports contradictions instead of treating any one inventory as authoritative.
Seven sources
- nginx configuration from
/etc/nginx/sites-enabled - listening TCP sockets from
ss -ltnpH - system and user systemd service units
- running Docker containers from
sudo -n docker ps - the
port_convention:registry in/home/loca/AGENTS.md - live TLS handshakes at the local HTTPS edge
- live HTTPS responses at the local edge
One-command usage
From /home/loca/dev/wild:
./bin/zonescopeThe default command prints a terminal report. JSON and a self-contained HTML dashboard are additional renderings of the same snapshot.
Guide
- Architecture — module boundaries, the snapshot contract, probes, and bounded concurrency.
- Modelling decisions — the five rules that keep cross-source verdicts truthful.
- Finding codes — all 17 codes, fixed severities, and process exit status.
- Dashboard — the public static surface and how to read it.
- Operations — local scans, flags, tests, rule changes, and publication commands.
- Scan records — dated evidence that remains historical rather than silently becoming current.
- 2026-09-03 baseline scan — the initial host-wide inventory and findings.
Data flow
flowchart LR N["nginx site files"] --> J["judge"] S["listening sockets"] --> J U["systemd units"] --> J C["Docker containers"] --> J R["port registry"] --> J T["TLS probes"] --> J H["HTTPS probes"] --> J J --> X["terminal report"] J --> Y["snapshot JSON"] J --> Z["HTML dashboard"]
scan owns collection and probe orchestration, judge emits generic findings, and the three reporters consume the completed snapshot.