Files
website/NIP.md
Copilot 3868e088b4 Add NIP-86 relay management console (Relay Admin app) (#73)
* Initial plan

* Add NIP-86 protocol client library with tests

Co-authored-by: mroxso <24775431+mroxso@users.noreply.github.com>

* Add NIP-86 session hook and relay-admin app UI

Co-authored-by: mroxso <24775431+mroxso@users.noreply.github.com>

* Add integration tests, NIP.md, and apps.md docs for Relay Admin

Co-authored-by: mroxso <24775431+mroxso@users.noreply.github.com>

* Address review feedback on Relay Admin app

- sanitizeIconUrl() now only allows http:// for local relay hostnames
  (localhost/127.0.0.1/::1/*.local), matching its docstring and error
  message instead of accepting arbitrary http:// URLs.
- Scope the discovery-time cache clear to the previous session's own
  relay URL instead of removing every ['nip86'] query, so connecting in
  one Relay Admin window no longer disrupts other open windows.
- Use the AllowedPubkey type (not BannedPubkey) when mapping allowed-
  pubkey entries, since the structural overlap today made a real type
  mismatch invisible.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BYiUtZMQeA5RHggQw73wto

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: mroxso <24775431+mroxso@users.noreply.github.com>
Co-authored-by: highperfocused <highperfocused@pm.me>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-07 22:35:53 +02:00

30 lines
1.7 KiB
Markdown

# NIPs and custom schemas
This project defines **no custom event kinds**. It implements and adopts the following
protocols:
## Implemented NIPs
- [NIP-86: Relay Management API](https://github.com/nostr-protocol/nips/blob/master/86.md)
(draft, optional) — the Relay Admin app (`src/apps/relay-admin/`) is a management client.
Requests are JSON-RPC-like POSTs over HTTP(S) on the relay's own URI with the
`application/nostr+json+rpc` content type, authorized with a NIP-98 event (kind 27235)
whose `u` tag is the relay URL and whose `payload` tag binds it to the request body.
The client treats `supportedmethods` as the source of truth and only calls methods the
relay advertised; advertised names outside the standard method list are treated as
relay-specific extensions and kept visually and semantically separate. No generic
event-purge/delete method is assumed — NIP-86 does not define one.
- [NIP-98: HTTP Auth](https://github.com/nostr-protocol/nips/blob/master/98.md) — used for
NIP-86 authorization (with the NIP-86-required `payload` tag) and for Blossom uploads.
- [NIP-11: Relay Information Document](https://github.com/nostr-protocol/nips/blob/master/11.md)
— read at connect time to show relay identity in Relay Admin.
## Adopted third-party kinds
- **Kind `777` ("Spell")** — a third-party draft NIP from the
[Grimoire](https://github.com/purrgrammer/grimoire) client, adopted as-is for interop.
See `docs/apps.md` ("Spells are a third-party kind") and `src/hooks/useSpells.ts`.
Anything else (kinds 0, 1, 3, 5, 6, 16, 9802, 10002, 10003, 22242, 30023, 30311, 31337,
39701, …) follows the official NIPs as implemented in `src/hooks/` and `src/lib/`.