Skip to content

NIP-AC: P2P Voice and Video calls over WebRTC#2301

Open
vitorpamplona wants to merge 1 commit intonostr-protocol:masterfrom
vitorpamplona:NIP-ac
Open

NIP-AC: P2P Voice and Video calls over WebRTC#2301
vitorpamplona wants to merge 1 commit intonostr-protocol:masterfrom
vitorpamplona:NIP-ac

Conversation

@vitorpamplona
Copy link
Copy Markdown
Collaborator

This is an expansion of the original NIP-100 (implemented by 0xChat etc) to:

  • Migrate to NIP-44 and use GiftWrap privacy, removing metadata leaks
  • Specify the workflow of WebRTC itself for voice calls and video calls
  • Establish the workflow for Mesh group calls (each peer calls each other peer).

It was written to follow Amethyst's recent implementation, and it is not backwards-compatible.

This NIP should also not be used for any other kind of P2P communication. It is specifically designed for voice and video calls.

Finally, I added a session on Test vectors that, when complete, will make it fully compatible with Amethyst's calling features.

This entire NIP wasn't designed for humans to code, but for AI to read and have the complete set of instructions to one-shot it.

@vitorpamplona
Copy link
Copy Markdown
Collaborator Author

@wcat7
Copy link
Copy Markdown
Contributor

wcat7 commented Apr 6, 2026

Noscall is also doing P2P calls @sanah9

@wcat7
Copy link
Copy Markdown
Contributor

wcat7 commented Apr 6, 2026

If I open the app and answer a voice call ~20 seconds after the offer was sent, should Call ICE Candidate events (kind 25052) ever be dropped by the staleness rule?

@vitorpamplona
Copy link
Copy Markdown
Collaborator Author

vitorpamplona commented Apr 6, 2026

I just ignore it, together with ignoring the same event from any relay that might keep these ephemeral giftwraps. But i am happy to change if it makes the ux better

@staab
Copy link
Copy Markdown
Member

staab commented Apr 6, 2026

This seems at least somewhat with #2238. I don't know anything about the details, but livekit works well; it would be nice to use the same standard for calls as much as possible, and using livekit would reduce NIPs surface area. @mplorentz @fiatjaf

@vitorpamplona
Copy link
Copy Markdown
Collaborator Author

For LiveKit to work, we will need to have a "Blossom"-like spec list for it. With users picking the servers they like to host conversations, etc.

We might still keep P2P for the super private comms.

@sanah9
Copy link
Copy Markdown

sanah9 commented Apr 8, 2026

Has Amethyst already implemented this NIP? Which app can I use to test it?

@vitorpamplona
Copy link
Copy Markdown
Collaborator Author

We are still finishing it... WebRTC is tricky to get right

@wcat7
Copy link
Copy Markdown
Contributor

wcat7 commented Apr 9, 2026

I just ignore it, together with ignoring the same event from any relay that might keep these ephemeral giftwraps. But i am happy to change if it makes the ux better

I think 20 seconds is a bit too short for answering a call. How about extending it to 1 minute?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants