You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The admin console (Phase 1 + Phase 2 metrics) gives operators internal relay health :- EPS, active WebSocket connections, CPU/RAM, DB/Redis ping — but it does not answer the questions that matter for hosted deployments:
Can clients actually reach my relay over its public URL?
Is DNS resolving correctly for my relay domain?
Is TLS valid, and when does the certificate expire?
What is real WebSocket latency from outside the process?
Today, operators must SSH in, run manual curl/dig/openssl checks, or rely on external monitors (e.g. BigBrotr) to get this data. Nostream also does not publish NIP-66 relay discovery events (kind 30166 / 10166), so clients like NDK cannot use Nostream's own health data when filtering dead relays.
Meanwhile, the approved admin console design treats the UI as an operator platform, not only a metrics dashboard. Network-level health belongs in that platform and should share infrastructure with ecosystem-facing NIP-66 publishing.
Proposed solution
Add a built-in NIP-66 relay health monitor as a new cluster worker, with a shared probe engine consumed by both:
Approved admin console design covers operator platform needs (metrics, settings, moderation, payments, webhooks, ops) but does not include external network health probing or NIP-66 publishing. This issue proposes bridging that gap with shared probe infrastructure serving both the admin UI and the wider Nostr network.
CC: @cameri — seeking alignment before starting implementation. Happy to adjust scope based on feedback.
Problem
The admin console (Phase 1 + Phase 2 metrics) gives operators internal relay health :- EPS, active WebSocket connections, CPU/RAM, DB/Redis ping — but it does not answer the questions that matter for hosted deployments:
Today, operators must SSH in, run manual
curl/dig/opensslchecks, or rely on external monitors (e.g. BigBrotr) to get this data. Nostream also does not publish NIP-66 relay discovery events (kind30166/10166), so clients like NDK cannot use Nostream's own health data when filtering dead relays.Meanwhile, the approved admin console design treats the UI as an operator platform, not only a metrics dashboard. Network-level health belongs in that platform and should share infrastructure with ecosystem-facing NIP-66 publishing.
Proposed solution
Add a built-in NIP-66 relay health monitor as a new cluster worker, with a shared probe engine consumed by both:
30166(relay discovery) and kind10166(monitor announcement) eventsBenefits
For operators (admin console)
For the Nostr ecosystem
For the project
maintenance,static-mirroring)30166is in range 30000–39999)Scope
Track A — NIP-66 backend (core)
RelayMonitorWorkercluster worker (WORKER_TYPE=relay-monitor)A,AAAA,CNAME, TTL) with cachingrtt-open; laterrtt-read,rtt-write)Accept: application/nostr+json)mirroring.static)nip66.enabled, probe interval, timeouts, monitor pubkey/key, targetslocalhost:8008),.onionskips DNSTrack B — Admin console integration (extends Phase 2)
GET /admin/network-health— latest probe snapshot (auth required)GET /admin/network-health/history— last N probe runs (optional v2)POST /admin/network-health/probe— manual probe trigger with audit log (optional v2)resources/admin/dashboard.html:clearnet/tor/i2p)/admin/metricsstreamTrack C — Settings editor slice (extends Phase 3)
nip66.*settings (probe interval, enabled, targets)Track D — Stretch
mirroring.static[]URLsprobe.failed,ssl.expiring(extends [Admin Console] Phase 7: Webhooks and Notifications #637)NIPs involved
Depends on
/admin/metricsSSE endpoint ([Admin Console] : Add cluster-aware /admin/metrics SSE endpoint (Prometheus-backed) #655 — review in progress)app.ts,index.ts)MONITOR_PRIVATE_KEYor dedicated settings key)Success criteria
/adminwithout terminal access{"kinds":[30166],"authors":["<monitor-pubkey>"]})References
Additional context
Approved admin console design covers operator platform needs (metrics, settings, moderation, payments, webhooks, ops) but does not include external network health probing or NIP-66 publishing. This issue proposes bridging that gap with shared probe infrastructure serving both the admin UI and the wider Nostr network.
CC: @cameri — seeking alignment before starting implementation. Happy to adjust scope based on feedback.