Step 1 of 5
A monitor announces itself
A kind 10166 event says this key publishes relay reports regularly: how often, which checks it runs and its timeouts.
NIP-66
DraftEventsRelay
Monitors probe relays and publish what they find (uptime, speed, supported NIPs, rules), so clients can discover relays and skip dead ones.
Edit the form or the JSON: both stay in sync, the badge says whether the result is valid, and tapping any field explains it.
How the parts connect: Monitoring relays
Not signed yet · Demo keys only. These personas' secret keys are public on purpose.
Select any field in the form or the JSON to see what it does.
Step 1 of 5
A kind 10166 event says this key publishes relay reports regularly: how often, which checks it runs and its timeouts.
Many facts mirror the relay's NIP-11 document, which can be embedded in the content.
The g tag is a NIP-52 style geohash.
Monitors should also publish a relay list so their reports can be found.
The l tag is a NIP-32 label, e.g. the relay's language.
Specification text is quoted in English from the nostr-protocol/nips repository. Our explanations and the interface are translated. Source on GitHub at commit 0046368
This NIP defines events for relay discovery and the announcement of relay monitors.
30166 relay discovery events document relay characteristics inferred either from a relay's NIP 11 document, or via probing.
Information corresponding to field in a relay's NIP 11 document MAY contradict actual values if monitors find that a different policy is implemented than is advertised.
content MAY include the stringified JSON of the relay's NIP-11 informational document.
The only required tag is the d tag, which MUST be set to the relay's normalized URL. For relays not accessible via URL, a hex-encoded pubkey MAY be used instead.
Other tags include:
rtt-open - The relay's open round-trip time in milliseconds.rtt-read - The relay's read round-trip time in milliseconds.rtt-write - The relay's write round-trip time in milliseconds.n - The relay's network type. SHOULD be one of clearnet, tor, i2p, lokiT - The relay type. Enumerated relay type formatted as PascalCase, e.g. PrivateInboxN - NIPs supported by the relayR - Keys corresponding to requirements per NIP 11's limitations array, including auth, writes, pow, and payment. False values should be specified using a ! prefix, for example !auth.t - A topic associated with this relayk - Accepted and unaccepted kinds (false values prepended by !) g - A NIP-52 geohashTags with more than one value should be repeated, rather than putting all values in a single tag, for example [["t", "cats"], ["t", "dogs"]], rather than [["t", "cats", "dogs"]].
Example:
{
"id": "<eventid>",
"pubkey": "<monitor's pubkey>",
"created_at": "<created_at [some recent date ...]>",
"signature": "<signature>",
"content": "<optional nip 11 document>",
"kind": 30166,
"tags": [
["d","wss://some.relay/"],
["n", "clearnet"],
["N", "40"],
["N", "33"],
["R", "!payment"],
["R", "auth"],
["g", "ww8p1r4t8"],
["l", "en", "ISO-639-1"],
["t", "nsfw" ],
["rtt-open", "234" ]
]
}
Kind 10166 relay monitor announcements advertise the author's intent to publish 30166 events. This event is optional and is intended for monitors who intend to provide monitoring services at a regular and predictable frequency.
Tags include:
frequency - The frequency in seconds at which the monitor publishes events.timeout (optional) - The timeout values for various checks conducted by a monitor. Index 1 is the monitor's timeout in milliseconds. Index 2 describes what test the timeout is used for. If no index 2 is provided, it is inferred that the timeout provided applies to all tests.c - a lowercase string describing the checks conducted by a monitor. Examples include open, read, write, auth, nip11, dns, and geo.g - NIP-52 geohash tagMonitors SHOULD also publish a kind 0 profile and a kind 10002 relay selections event.
Example:
{
"id": "<eventid>",
"pubkey": "<monitor's pubkey>",
"created_at": "<created_at [some recent date ...]>",
"signature": "<signature>",
"content": "",
"tags": [
[ "timeout", "open", "5000" ],
[ "timeout", "read", "3000" ],
[ "timeout", "write", "3000" ],
[ "timeout", "nip11", "3000" ],
[ "frequency", "3600" ],
[ "c", "ws" ],
[ "c", "nip11" ],
[ "c", "ssl" ],
[ "c", "dns" ],
[ "c", "geo" ]
[ "g", "ww8p1r4t8" ]
]
}
30166 events to function. Absence of monitoring data MUST NOT prevent relay connections.30166 events, either by misconfiguration or malicious intent.