Nostr NIPS 66
NIP-66
Relay Discovery and Liveness Monitoring
draft
optional
This NIP defines events for relay discovery and the announcement of relay monitors.
Relay Discovery Events
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 ofclearnet
,tor
,i2p
,loki
T
- The relay type. Enumerated relay type formatted asPascalCase
, e.g.PrivateInbox
N
- NIPs supported by the relayR
- Keys corresponding to requirements per NIP 11 ’slimitations
array, includingauth
,writes
,pow
, andpayment
. False values should be specified using a!
prefix, for example!auth
.t
- A topic associated with this relayk
- An event kind accepted by the relay!k
- An event kind not accepted by the relayg
- A NIP-52 geohashl
- A language tag
Tags 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 ]
]
}
Relay Monitor Announcements
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. Index1
is the monitor’s timeout in milliseconds. Index2
describes what test the timeout is used for. If no index2
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 includeopen
,read
,write
,auth
,nip11
,dns
, andgeo
.g
- NIP-52 geohash tag
Monitors 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" ]
]
}
Source: nostr-protocol/nips/66.md version: 0b45265 2025-08-04T15:47:20Z