Documentation · v0.1.0
Lumra docs
Install it, run one command, read the verdict. Lumra diagnoses why a site is blocked, throttled, or tampered with — and where — from packets it measures itself, never a third-party block list.
INSTALL
Install
A single static binary, no account. macOS, Linux, and Windows on amd64/arm64.
Verify it's on your path:
QUICKSTART
Quickstart
Point it at a domain. Lumra runs its probes from your own vantage and prints a verdict with the evidence behind it.
Nothing leaves your machine. Lumra measures; it does not phone home. Analysis is metadata- and behavior-based — no packet contents are logged.
REFERENCE
Commands
lumra diagnose <domain> | Run the full diagnosis and print a human-readable verdict. |
|---|---|
--json | Emit the verdict as JSON ({type, cause, confidence, attribution, evidence[]}) for pipelines. |
--report <file.html> | Also write a self-contained HTML evidence page you can share as proof. |
lumra version | Print the build version, commit, and date. |
lumra install-host <ext-id> | Register the native-messaging host so the browser extension can call the local core. |
lumra nm-host | Native-messaging host mode — run by the browser, not by hand. |
REFERENCE
Verdict types
Every run resolves to exactly one labeled verdict, with a confidence of high medium low.
OK | No interference detected by the probes run. |
|---|---|
DNS_TAMPERING | A DNS answer was poisoned, denied (NXDOMAIN), or injected as a duplicate response. |
SNI_FILTERING | TLS reset triggered by the target hostname in the ClientHello, while a benign SNI to the same IP succeeds. |
RST_INJECTION | A TCP reset injected from within the path, closer than the destination. |
TLS_MITM | The handshake completes but the certificate does not chain to a trusted root — interception. |
IP_BLOCKING | Every connection to the IP is reset regardless of SNI — the address itself is blocked. |
THROTTLING | The target is reachable but its sustained throughput is far below a capable control path. |
BLOCK_PAGE | The request was diverted to an operator's self-identifying block server (e.g. warning.or.kr → KCSC). |
LOCAL_ISSUE | Your own network is down — no control anchor is reachable. Overrides everything. |
GENUINE_OUTAGE | The target itself is failing, not being interfered with. |
INCONCLUSIVE | Not enough signal — e.g. a silent blackhole a single vantage can't split from an outage. |
REFERENCE
Evidence probes
Each evidence line is tagged by the probe that produced it and marked ✓ pass ✗ fail ⓘ info.
DNS | Cross-resolver comparison vs. DoH ground truth; NXDOMAIN and duplicate-response injection. |
|---|---|
TLS | SNI-conditional resets, certificate chain verification (MITM), IP-level reset behavior. |
HOP | RST/TTL hop distance — how far away the injector is vs. the destination. Needs elevation. |
RATE | Sustained throughput vs. a capable control path — throttling vs. congestion. |
CTRL | Baseline reachability to anycast anchors, so a local outage is never called censorship. |
PAGE | Whether the request was diverted to a known operator block server. |
DEEP PROBES
Attribution & elevation
RST/TTL hop attribution — the HOP signal that places an injector "~6 hops out, before the destination" — reads raw packets, which needs a raw socket. Run elevated to enable it:
Without elevation Lumra degrades honestly — it reports attribution not measured rather than guessing. Every other signal (DNS, TLS/SNI, MITM, throttling, block-page) works unprivileged. Raw capture is currently Linux-only; other platforms report it as not measured.
BROWSER
Browser extension
Diagnose the current tab from the toolbar. The extension is a thin front end; the measurement runs in the local core over Native Messaging.
go build -o lumra ./cmd/lumra and note the path.chrome://extensions → Developer mode → Load unpacked → the extension/ dir. Copy its ID../lumra install-host <extension-id> wires Chrome to your binary.Without the core, the extension still flags failing navigations in-browser; deep attribution needs the native binary. Full setup in the extension README.
EXAMPLES
Examples
Machine-readable output for scripts and CI:
A shareable evidence page — one self-contained file, no dependencies:
Verify Lumra's own discrimination against public test certs:
STANCE
Privacy & non-goals
Lumra never reports "blocked" because a third party said so — a verdict cites packets it observed or infrastructure that named itself. It does not log packet contents, and it does not route around blocks: circumvention is Warren's job. Lumra diagnoses.
Lumra