Monero LWS Observatory — Public LWS Health Monitoring
Summary
Monero LWS Observatory is a public tip-freshness dashboard and JSON API for curated Monero Light Wallet Server (LWS) hosts. It answers one question:
Is this operator LWS fresh vs the chain tip — or is sync failing somewhere else?
It probes opt-in hosts with public POST /get_version (blockchain_height), plus optional TLS / CORS / privacy-safe get_random_outs. No view keys. No wallet traffic. No port scanning.
This is the LWS layer light wallets actually use — not another monerod remote-node list.
| Live preview | https://monero-lws-observatory.vercel.app |
| Operator directory |
https://monero-lws-observatory.vercel.app/directory · /api/directory.json
|
| Opt-in checklist | https://monero-lws-observatory.vercel.app/onboard |
| Open work | https://monero-lws-observatory.vercel.app/roadmap |
| Source (MIT) | https://gitlab.com/panformonero/monero-lws-observatory |
| Verify | https://gitlab.com/panformonero/monero-lws-observatory/-/blob/main/docs/VERIFY.md |
| Integrator CI | https://gitlab.com/panformonero/monero-lws-observatory/-/blob/main/docs/INTEGRATOR_CI.md |
Payment: 3 XMR on M1 acceptance · 3 XMR on M2 acceptance (6 XMR total). Standard CCS after-milestone disbursement — not prepaid.
Live status (27 August 2026)
/api/ci lws_ok
|
false (no operator returned blockchain_height) |
| Operators listed |
1 (Monero Web) — typically yellow probe_blocked
|
| Tip plumbing | Canary + 3 mirrors — pipeline only, not wallet backends |
| Hosting | On-demand preview (warm history ring, not durable multi-day storage) |
Funding buys operations, not a redesign: always-on VPS + custom domain + durable history + growing the opt-in operator set toward 5–8 + alerts.
curl -sS https://monero-lws-observatory.vercel.app/api/ci \
| jq '{ok,lws_ok,pipeline_ok,operator_total,operator_responding,measurable_total,reasons}'
Problem
Light wallets sync through LWS, not directly through monerod. When sync stalls, it is hard to tell whether the LWS, the network tip, or the wallet is at fault.
Public remote-node lists cover monerod. They do not cover LWS. Stack Exchange #14557 still asks for a maintained public list. After MyMonero’s shutdown, more wallets ship bring-your-own LWS defaults — so a neutral tip-freshness signal matters more, not less.
What the service provides
| Opt-in registry | Operator-approved LWS URLs only — no port scanning |
| Public directory |
/directory + /api/directory.json (operators only; SE #14557 shape) |
| Probes |
POST /get_version primary; TLS / CORS / get_random_outs optional |
| Lag vs tip | Multi-source reference height; reproducible with curl |
| Status | Green / yellow / red — lag first; 401/403/429 = yellow probe_blocked
|
| CI / badge |
/api/ci (lws_ok for operators, pipeline_ok for plumbing) + SVG badge |
| Operator path |
/onboard checklist + POST /api/check (pass does not auto-list) |
Who benefits
| Audience | Benefit |
|---|---|
| Wallet developers | Shared signal when choosing or debugging a default LWS |
| LWS operators | Early warning when the host lags or blocks automated probes |
| Integrators | Reproducible /api/ci + badge examples |
| Light wallet users | Indirect — fewer silent sync failures as operators act on shared data |
What already ships (pre-funding)
A working preview is live before any CCS spend:
- Fleet: 1 opt-in operator (often
probe_blocked) + canary + 3 tip mirrors (lws_okstays false until an operator returns height) - Directory + opt-in checklist + wallet-defaults compare + open-work honesty strip
- Full JSON API, scorecard, diagnose drawer, integrator CI docs
- Empty attestation / allowlist-success slots until real public opt-ins exist
Still needs funding (M1–M2): always-on hosting, durable multi-day history, 5–8 measurable operators, webhooks, Tor probing. No invented LWS hosts.
Milestones
M1 — Production v1 · 3 XMR · weeks 1–2
- Always-on poller + API on VPS with custom domain
- Durable history (lag / uptime / incidents)
- Grow opt-in operators toward 5–8 (mirrors do not count)
- Multi-day charts on durable data
- Documented, reproducible
/api/cigates (docs/VERIFY.md) - 12 months hosting + maintenance begins
Interim progress: ≥1 operator returns blockchain_height matching manual curl within ±1 block.
Acceptance: A wallet developer or LWS operator confirms ≥3 operator endpoints match curl -X POST …/get_version within ±1 block; lws_ok / pipeline_ok documented and reproducible.
M2 — Operator tooling · 3 XMR · weeks 3–4
- Webhooks (Discord / HTTP) for lag, downtime, height drops
- 30-day retention + JSON/CSV export
- Self-host docs; expand submission checklist from
/onboard - Tor /
.onionprobing where operators provide URLs
Acceptance: An operator configures alerts and confirms delivery within one poll cycle.
Budget
| Milestone | When paid | XMR |
|---|---|---|
| M1 — Production v1 | On acceptance | 3 |
| M2 — Operator tooling | On acceptance | 3 |
| Total | 6 |
Illustrative inside M1: small VPS + domain for 12 months is a low fixed cost; most of M1 is engineering for durable storage, charts, outreach, and ops. Work is MIT on GitLab (GitHub mirror for deploy).
Out of scope
- Operating or competing with monero-lws
- Port scanning; collecting view keys or wallet traffic
- Block explorer / P2P monitoring
- Replacing self-hosted LWS for privacy
- Treating tip mirrors as wallet backends
- Inventing public LWS URLs without written opt-in
Sustainability
- Registry is version-controlled JSON; stack is MIT — anyone can redeploy
- 12-month hosting in M1 is finite; no open-ended recurring ask here
- Portable exports in M2 (JSON/CSV)
Milestone reports as comments on this MR.
Expiration: 7 October 2026 — if not fully funded or completed by then, remaining escrowed funds release per CCS rules.