Community

NIPs

NIP-EE: E2EE Messaging using MLS Protocol

NIP-EE adapted Messaging Layer Security to Nostr for private group messaging with forward secrecy and post-compromise security, but it is now marked unrecommended because the Marmot Protocol supersedes it.

NIP-EE: E2EE Messaging using MLS Protocol visual
NIPs Under the hood Events, NIPs, relay behavior and the shared formats apps can trust.
Back to Nostr
NIPs

NIPs shelf

NIP pages connect standards to product behavior, event kinds, relay rules, wallets, media, privacy and implementation risk.

NIPs All NIPs pages NIPs route archiveNIP explainer pages, NIP reference pages, Protocol orientation Browse pagesClose shelf

Protocol orientation

Field guides

Awesome Nostr branches

NIP reference pages

Android Signer ApplicationBasic key derivation from mnemonic seed phraseBasic protocol flowbech32-encoded entitiesBLE CommunicationsBlossomBridged EventsCalendar EventsChatsChessClassified ListingsCode SnippetsCommentsComplete NIP Archive IndexCrays NIP StrategyCustom EmojiData Vending MachinesDealing with Unknown EventsDelegated Event SigningDraft EventsE2EE Messaging using MLSEcash Mint DiscoverabilityEncrypted Direct MessageEvent Deletion RequestExpiration TimestampExternal Content IDsExternal IdentitiesExtra metadata fields and tagsFile MetadataFollow ListForum ThreadsGeocachingGift Wrapgit stuffHandling MentionsHTTP AuthHTTP File Storage IntegrationLabelingListsLive ActivitiesMapping Nostr keys to DNS-based identifiersModerated CommunitiesNegentropy SyncingNIP and standards researchNIP-EE: E2EE Messaging using MLS ProtocolNIP-02: Follow ListNIP-03: OpenTimestamps AttestationsNIP-04: Encrypted Direct MessageNIP-05: Mapping Nostr keys to DNS-based identifiersNIP-5A: Static Websites / nsitesNIP-06: Basic key derivation from mnemonic seed phraseNIP-07: window.nostr capability for web browsersNIP-7D: Forum ThreadsNIP-08: Handling MentionsNIP-09: Event Deletion RequestNIP-10: Text Notes and ThreadsNIP-12: Generic tag queriesNIP-13: Proof of WorkNIP-14: Subject tagNIP-15: Nostr MarketplaceNIP-16: Event treatmentNIP-17: Private Direct MessagesNIP-18: RepostsNIP-19: bech32-encoded entitiesNIP-20: Command resultsNIP-21: nostr: URI schemeNIP-22: CommentsNIP-23: Long-form ContentNIP-24: Extra metadata fields and tagsNIP-25: ReactionsNIP-26: Delegated Event SigningNIP-27: Text Note ReferencesNIP-28: Public ChatNIP-29: Relay-based GroupsNIP-30: Custom EmojiNIP-31: Dealing with Unknown EventsNIP-32: LabelingNIP-33: Parameterized replaceable eventsNIP-34: git stuffNIP-35: TorrentsNIP-36: Sensitive ContentNIP-37: Draft EventsNIP-38: User StatusesNIP-39: External IdentitiesNIP-40: Expiration TimestampNIP-42: Authentication of clients to relaysNIP-43: Relay Access Metadata and RequestsNIP-44: Versioned EncryptionNIP-45: Counting ResultsNIP-46: Nostr Remote SigningNIP-EE: E2EE Messaging using MLS ProtocolNIP-48: Bridged EventsNIP-49: Private Key EncryptionNIP-50: Search CapabilityNIP-51: ListsNIP-52: Calendar EventsNIP-53: Live ActivitiesNIP-54: WikiNIP-55: Android Signer ApplicationNIP-56: ReportingNIP-57: Lightning ZapsNIP-58: BadgesNIP-59: Gift WrapNIP-60: Cashu WalletNIP-61: NutzapsNIP-62: Request to VanishNIP-64: ChessNIP-65: Relay List MetadataNIP-68: Picture-first feedsNIP-69: Peer-to-peer Order eventsNIP-70: Protected EventsNIP-71: Video EventsNIP-72: Moderated CommunitiesNIP-73: External Content IDsNIP-75: Zap GoalsNIP-77: Negentropy SyncingNIP-78: Application-specific dataNIP-84: HighlightsNIP-85: Trusted AssertionsNIP-86: Relay Management APINIP-87: Ecash Mint DiscoverabilityNIP-88: PollsNIP-89: Recommended Application HandlersNIP-90: Data Vending MachinesNIP-92: Media Attachments MetadataNIP-94: File MetadataNIP-96: HTTP File Storage IntegrationNIP-98: HTTP AuthNIP-99: Classified ListingsNIP-A0: Voice MessagesNIP-A4: Public MessagesNIP-B0: Web BookmarksNIP-B7: BlossomNIP-BE: BLE CommunicationsNIP-C0: Code SnippetsNIP-C7: ChatsNIP-CC: GeocachingNIP-EE: E2EE Messaging using MLSNIP-F4: PodcastsNIPs mirrorNostr NIPsNostr Remote Signingnostr-protocol/nipsnostr: URI schemeOpenTimestamps AttestationsPeer-to-peer Order eventsPicture-first feedsPodcastsPollsPrivate Direct MessagesPrivate Key EncryptionProof of WorkProtected EventsPublic ChatPublic MessagesReactionsReportingRepostsRequest to VanishSearch CapabilitySensitive ContentStatic Websites / nsitesSubject tagText Note ReferencesText Notes and ThreadsTorrentsTrusted AssertionsUser StatusesVersioned EncryptionVoice MessagesWeb BookmarksWikiwindow.nostr capability for web browsers

Research and library

Source inventory

Deep Research: Standards and NIPsResearch Source: Android Signer ApplicationResearch Source: Application-specific dataResearch Source: Authentication of clients to relaysResearch Source: Basic key derivation from mnemonic seed phraseResearch Source: Basic protocol flowResearch Source: BLE CommunicationsResearch Source: BlossomResearch Source: Bridged EventsResearch Source: Calendar EventsResearch Source: ChatsResearch Source: ChessResearch Source: Classified ListingsResearch Source: Code SnippetsResearch Source: CommentsResearch Source: Counting ResultsResearch Source: Custom EmojiResearch Source: Data Vending MachinesResearch Source: Dealing with Unknown EventsResearch Source: Delegated Event SigningResearch Source: Draft EventsResearch Source: E2EE Messaging using MLSResearch Source: Ecash Mint DiscoverabilityResearch Source: Encrypted Direct MessageResearch Source: Event Deletion RequestResearch Source: Expiration TimestampResearch Source: External Content IDsResearch Source: External IdentitiesResearch Source: Extra metadata fields and tagsResearch Source: File MetadataResearch Source: Follow ListResearch Source: Forum ThreadsResearch Source: GeocachingResearch Source: Gift WrapResearch Source: Groups NIP-29Research Source: Handling MentionsResearch Source: HighlightsResearch Source: HTTP AuthResearch Source: HTTP File Storage IntegrationResearch Source: LabelingResearch Source: ListsResearch Source: Live ActivitiesResearch Source: Mapping Nostr keys to DNS-based identifiersResearch Source: Moderated CommunitiesResearch Source: NIP-03: OpenTimestamps AttestationsResearch Source: NIP-5A: Static Websites / nsitesResearch Source: NIP-07: window.nostr capability for web browsersResearch Source: NIP-10: Text Notes and ThreadsResearch Source: NIP-11: Relay Information DocumentResearch Source: NIP-13: Proof of WorkResearch Source: NIP-14: Subject tagResearch Source: NIP-17: Private Direct MessagesResearch Source: NIP-18: RepostsResearch Source: NIP-19: bech32-encoded entitiesResearch Source: NIP-21: nostr: URI schemeResearch Source: NIP-25: ReactionsResearch Source: NIP-27: Text Note ReferencesResearch Source: NIP-28: Public ChatResearch Source: NIP-29 Groups RelayResearch Source: NIP-29: Relay-based GroupsResearch Source: NIP-34: git stuffResearch Source: NIP-35: TorrentsResearch Source: NIP-36: Sensitive ContentResearch Source: NIP-38: User StatusesResearch Source: NIP-43: Relay Access Metadata and RequestsResearch Source: NIP-44: Versioned EncryptionResearch Source: NIP-46: Nostr Remote SigningResearch Source: NIP-49: Private Key EncryptionResearch Source: NIP-50: Search CapabilityResearch Source: NIP-54: WikiResearch Source: NIP-56: ReportingResearch Source: NIP-62: Request to VanishResearch Source: NIP-65: Relay List MetadataResearch Source: NIP-66 / nostr-watch stackResearch Source: NIP-66: Relay Liveness MonitoringResearch Source: NIP-68: Picture-first feedsResearch Source: NIP-69: Peer-to-peer Order eventsResearch Source: NIP-70: Protected EventsResearch Source: NIP-77: Negentropy SyncingResearch Source: NIP-85: Trusted AssertionsResearch Source: NIP-86: Relay Management APIResearch Source: NIP-88: PollsResearch Source: NIP-89: Recommended Application HandlersResearch Source: NIP-A0: Voice MessagesResearch Source: NIP-A4: Public MessagesResearch Source: NIP-B0: Web BookmarksResearch Source: NIP-F4: PodcastsResearch Source: NIPs mirrorResearch Source: nostr-protocol/nips GitHub
Messaging and privacyfinalunrecommendedMLS

NIP-EE: E2EE Messaging using MLS

NIP-EE adapted Messaging Layer Security to Nostr for private group messaging with forward secrecy and post-compromise security, but it is now marked unrecommended because the Marmot Protocol supersedes it.

The quick readNIP-EE adapted Messaging Layer Security to Nostr for private group messaging with forward secrecy and post-compromise security, but it is now marked unrecommended because the Marmot Protocol supersedes it.
NIPEEStatusfinal but unrecommendedProtocol baseMessaging Layer Security RFC 9420Goalprivate group messagingSuperseded byMarmot ProtocolKnown appWhite Noise

Nostr DMs needed more than encrypted content

The early Nostr DM story was not enough. NIP-04 encrypted content but leaked metadata. NIP-44 improved encryption primitives. NIP-17 combined NIP-44 with gift wrapping to hide more metadata. Yet forward secrecy, post-compromise security and efficient group messaging remained difficult.

NIP-EE tried to adapt the Messaging Layer Security protocol to Nostr. MLS is designed for secure group messaging, with epochs, commits, proposals, ratchet trees and key packages. The goal was private and confidential DMs and group messages using decentralized relays.

The ambition was serious: a secure messenger that does not depend on one centralized delivery service.

Nostr as authentication and delivery around MLS

The NIP focuses on how Nostr can perform the authentication and delivery-service functions needed by MLS. MLS libraries such as OpenMLS handle the cryptographic group state, while Nostr events carry key packages, group evolution and encrypted application messages.

The file explains credentials, group events, key-package events, welcome flows, proposals, commits and exporter secrets. It also spends real space on security considerations, because group messaging is not a normal app-layer event.

The current official header changes the product conclusion: final but unrecommended, superseded by the Marmot Protocol.

Jeff Gardner added NIP-EE, then Marmot replaced it

Jeff Gardner added NIP-EE in August 2025 through PR #1427 and later clarified exporter-secret use with NIP-44. In December 2025, JeffG replaced NIP-EE with Marmot through PR #2154, adding the warning that the NIP is superseded.

White Noise and Marmot are the practical ecosystem signals. White Noise moved from an archived Flutter repo to active development under the Marmot/whitenoise codebase. The Marmot Protocol describes secure, decentralized group messaging that combines MLS with Nostr.

So the right page is not a victory lap for NIP-EE. It is a bridge: read it to understand the MLS-on-Nostr design path, then follow Marmot for current work.

First visible addition2025-08 by Jeff GardnerSuperseded2025-12 by Marmot Protocol updateOpen Git history

Use Marmot for current product work

A secure messaging client should not build blindly on NIP-EE today. The official file points to Marmot, and White Noise describes itself as implementing Marmot-style MLS group messaging over Nostr.

The underlying lessons remain valuable: protect metadata, manage devices carefully, delete key material, handle out-of-order delivery and make group membership changes auditable.

Messaging UX should communicate security properties carefully. Forward secrecy and post-compromise security are not slogans; they depend on correct key lifecycle and implementation discipline.

MLSGroup encryption protocol.
RFC 9420IETF MLS specification.
OpenMLSImplementation library context.
MarmotCurrent successor protocol.

Secure messaging fails at the edges

The cryptography can be sound while the product leaks metadata, device state or membership information. Relays, push notifications, backups and multi-device flows all need care.

Because the NIP is superseded, presenting it as the current path would be wrong. It belongs in the archive as context for why Marmot exists.

Direct sources

Use the official file first, then the commit history, implementation references and adjacent standards. NIPs move, and product guidance gets weaker when those source trails are hidden.

Back to the NIPs atlas
NIPs route visual cue 1
NIPs route visual cue 2
NIPs route visual cue 3
NIPs route visual cue 4
NIPs route visual cue 5

How to use this page

Use the NIPs route when product behavior needs a standard.

Search NIP numbers, event kinds, signers, media, wallets and moderation standards before a detail turns into confusion.

NIPsThe full NIPs route stays openNIPs route archiveStandards, event kinds, implementation notes and consequences.Browse pages
NIPs route visual cue 1
NIPs route visual cue 2
NIPs route visual cue 3
NIPs route visual cue 4
NIPs route visual cue 5

Bring something back

Ask, suggest, submit or nominate.

Ask a question, send a source, suggest a fix, submit a project or nominate a public Nostr account. The page stays stable; your contribution gets reviewed beside it.