A messaging protocol specification combining the MLS Protocol (RFC 9420 — Messaging Layer Security) with Nostr's decentralized identity and relay network to enable efficient, private E2EE group messaging without centralized servers or legacy identity systems. Marmot extends NIP-EE (the Nostr MLS integration spec) with a broader set of specifications including media handling (MIP-04), group metadata standardization, and key package distribution. Provides forward secrecy and post-compromise security at the group messaging level, protecting both message content and metadata (communication patterns and group membership hidden). Multiple independent implementations exist: MDK (Rust library — mdk-core v0.7.1), marmot-ts (TypeScript/npm), mdk-swift (Swift), mdk-python (Python). White Noise is the primary reference application.
LicenciaOpen source (MIT/Apache likely); https://github.com/marmot-protocol/marmot; MDK at https://github.com/parres-hq/mdk
Estado de Desarrollo 🔬 Beta
Detalle del Estado de DesarrolloPre-specification / WIP (spec under active development; breaking changes possible; no formal security audit yet; MDK v0.7.1 released; marmot-ts available on npm; White Noise ships on it in production)
FinanciamientoMLS / RFC 9420 (cryptographic group messaging standard — OpenMLS Rust implementation); Nostr (Fed Pro — transport and identity layer); NIP-EE (Nostr MLS integration base specification extended by Marmot)
OrígenesPrivacy / Secure group messaging (motivated by limitations of Signal centralized infrastructure, NIP-04/17 lack of forward secrecy and group messaging; combines MLS cryptographic rigor with Nostr decentralization; designed to provide Signal-level security with censorship-resistant infrastructure)
Base de DatosMLS ciphertext (RFC 9420 encrypted group messages); Nostr events (NIP-compliant transport wrapper for MLS messages and key packages); MLS key packages (Ed25519 identity material published to Nostr relays); encrypted media (MIP-04); BLAKE3 or SHA256 content hashes
Lenguaje de ConsultaN/A
Formatos de DatosN/A
Edición Colaborativa en VivoYes (MDK used in White Noise Flutter app — Android, iOS)
Edición de Texto EnriquecidoPartial (marmot-ts enables browser/web implementation; marmots-web-chat demo)
Aplicaciones NativasCommunity / AOS / OpenSats / HRF (via White Noise funding; protocol spec itself community-funded)
TérminosUndisclosed
FondosHybrid relay + local (Nostr relays transport MLS ciphertext and distribute key packages; MLS group state stored locally on each participant's device; no central server for message storage; relay network provides decentralized transport without compromising E2EE)
Basado EnApplication-wide (scoped to Marmot group instances; groups can span any Nostr relays; no global network topology required beyond Nostr relay access)
Arquitectura P2PNo (messaging protocol; no content addressing)
Red de SuperposiciónYes (MLS group state managed locally; offline messages queued and delivered when relay connection restored)
Direccionamiento por ContenidoYes (MLS RFC 9420 — forward secrecy, post-compromise security, group message E2EE; metadata protection hides communication patterns and group membership)
Local-FirstN/A (sequential MLS ratchet provides forward secrecy; not a CRDT-based system)
Cifrado de Extremo a Extremo (E2EE)N/A (messaging protocol; BFT not applicable)
Biblioteca de CRDTsEd25519 (Nostr keypair for identity; MLS signing keys distinct from Nostr identity keys for security separation; DEFAULT_CIPHERSUITE: MLS_128_DHKEMX25519_AES128GCM_SHA256_Ed25519)
Tolerancia a Fallos BizantinosGroup-member-controlled (MLS group admin manages membership; Nostr keypair required for participation; no phone number or email required)
FirmaNo
PermisosNo
Compatibilidad con la Web SemánticaApplication layer (sits above Nostr relay transport; defines group messaging semantics, key management, and media handling on top of MLS + Nostr)
Contrato InteligenteN/A (messaging protocol; no asset embedding)
Posición en la Pila del ProtocoloPre-specification / WIP (active spec development; breaking changes possible; no formal security audit; multiple implementations in Rust/TypeScript/Swift/Python; White Noise ships in production; NIP-EE base in Nostr protocol repo)
Incorporación de Activos/Valor Source: https://andotherstuff.org/#foundry-projects — AOS Foundry listing: Marmot as messaging protocol combining MLS with Nostr for private group messaging; no phone numbers or emails; https://github.com/parres-hq/marmot | Source: https://github.com/parres-hq/mdk and https://github.com/marmot-protocol/marmot — MDK Rust library v0.7.1: OpenMLS-based; mdk-core, mdk-storage-traits, mdk-sqlite-storage, mdk-memory-storage; DEFAULT_CIPHERSUITE MLS_128_DHKEMX25519_AES128GCM_SHA256_Ed25519; REQUIRED_EXTENSIONS including Marmot Group Data Extension (0xF2EE); forward secrecy; post-compromise security; metadata protection; spec under active development; breaking changes possible; no formal security audit | Source: https://github.com/parres-hq/marmot-ts — TypeScript npm package @internet-privacy/marmots; MarmotClient; KeyPackageStore; KeyValueGroupStateBackend; LocalForage/IndexedDB storage; browser and Node.js v20+ support; marmots-web-chat demo
Madurez del Protocolo / EstandarizaciónPre-specification / WIP (active spec development; breaking changes possible; no formal security audit; multiple implementations in Rust/TypeScript/Swift/Python; White Noise ships in production; NIP-EE base in Nostr protocol repo)
¿Ve algo que falta o que podría mejorarse? Cuéntenos →