From 533b7f8ffeae76ba04ab7da78296ff8902b2ec47 Mon Sep 17 00:00:00 2001 From: fiatjaf Date: Wed, 25 Feb 2026 11:47:06 -0300 Subject: nip29: audio/video live spaces. --- 29.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/29.md b/29.md index f39d4d8..f041885 100644 --- a/29.md +++ b/29.md @@ -48,6 +48,16 @@ The roles supported by the group as to having some special privilege assigned to Users with any roles that have any privilege can be considered _admins_ in a broad sense and be returned in the `kind:39001` event for a group. +## Live audio/video (AV) spaces + +Groups may indicate they support live audio and/or video chat by means of a [LiveKit](https://docs.livekit.io/transport/) server by having the tag `livekit` in the group announcement event. The tag `no-text` should be used if the group doesn't support text, only live AV chat (this is just for informative purposes to the client, the relay should still block events). This setup allows for both Discord-style independent AV rooms and text rooms and Telegram-style single-roomgroup with support for both text and AV. + +Upon seeing a `livekit` tag in a group, clients that want to take part in the AV space should call the [token endpoint](https://docs.livekit.io/frontends/build/authentication/endpoint/) at the relay path `/.well-known/nip29/livekit/` with a [NIP-98](98.md)-style `Authorization` header to get back the LiveKit JWT and the URL of the LiveKit server and proceed with the stardard LiveKit flow there. + +The `Authorization` event should be of kind `27235` and contain a tag `["u", "https://relay.tld/.well-known/nip29/livekit/"]`. + +Relays should enforce access control at the LiveKit JWT creation time according to the group settings. + ## Event definitions These are the events expected to be found in NIP-29 groups. @@ -155,6 +165,8 @@ If the group is forked and hosted in multiple relays, there will be multiple ver - `restricted` indicates that only members can _write_ messages to the group. Omitting this tag indicates that anyone can send messages to the group. - `hidden` indicates that relays should hide group metadata from non-members. Omitting this tag indicates that anyone can request group metadata events. - `closed` indicates that join requests are ignored. Omitting this tag indicates that users can expect join requests to be honored. +- `livekit` indicates that a group supports LiveKit-powered media rooms (live audio/video). +- `no-text` indicates that a group doesn't support text messages (can be used to indicate that a group is only usable for live audio/video). - *group admins* (`kind:39001`) (optional) -- cgit v1.2.3