marmot-protocol/whitenoise — Encrypted Nostr Messenger
marmot-protocol/whitenoise — Encrypted Nostr Messenger
Metadata
- Source: https://github.com/marmot-protocol/whitenoise
- License: AGPL-3.0
- Language: Flutter (Dart, 282 lib files) + Rust (via flutter_rust_bridge)
- Size: 24MB
- Files: 1,090
- Platforms: Android, iOS (supported); macOS, Windows, Linux, Web (planned)
Purpose
Private, decentralized messenger built on Nostr using Marmot protocol for MLS group encryption. Identity based on keypairs. Phone and email play no role.
Key Features
- MLS group messaging: Messaging Layer Security for group chats
- Forward secrecy: Past messages safe even if keys compromised
- Post-compromise security: Future messages safe after key rotation
- Keypair identity: Accounts are keypairs (no phone/email)
- Decentralized transport: Messages route through Nostr relays
- Serverless: Any relay can carry messages
- External signer support: Amber, NIP-55 signers
- Media: Images, video with blurhash previews; encrypted at rest
- Search: Full-text search across all groups
- Multi-account: Encrypted local storage, automatic migration
- Open source: AGPL-3.0
Architecture
Stack
| Layer | Technology |
|---|---|
| UI | Flutter (>=3.41.4) |
| Core | Rust (whitenoise-rs) |
| FFI | flutter_rust_bridge |
| Protocol | Marmot (MLS over Nostr) |
Source Structure
whitenoise/
lib/
constants/ — Nostr event kinds, etc.
services/ — Message, profile, notification, push services
integrations/ — Discord bot, etc.
ui/ — Flutter widgets
android/ — Android platform
ios/ — iOS platform
linux/ — Linux platform
macos/ — macOS platform (planned)
windows/ — Windows platform (planned)
test/ — 238 test files
What Makes It Different
vs Signal
- No phone number required
- Decentralized (no central server)
- Open source (AGPL)
- Nostr-based (censorship resistant)
vs Standard Nostr DMs
- MLS encryption (not just NIP-04 ECIES)
- Group chat support
- Forward secrecy
- Post-compromise security
vs Other Nostr Clients
- Group messaging (not just 1:1)
- MLS (not just encryption at rest)
- Media support with blurhash
- Multi-account
Relevance to Kapnet
As Encrypted Workspace Layer
White Noise provides the encrypted group messaging layer for Kapnet:
- Each Kapnet room = White Noise group
- MLS encryption = workspace encryption
- Group membership = workspace access
- Nostr transport = workspace communication
As Control Surface
Phone running White Noise → agentnoise bridge → local agents:
- Operator sends command via White Noise
- agentnoise receives encrypted message
- Agent processes command
- Response sent back via White Noise
Integration Points
- Room creation: Kapnet room → White Noise group
- Access control: Group membership = KOR scope
- Encrypted TXXMs: TXXM payload encrypted via MLS
- Media sharing: Files attached to TXXMs via White Noise
License Implications (AGPL-3.0)
If we modify White Noise and serve it as a service:
- Must share source code with all users
- Must include original license and copyright
- Must state changes made
- Compatible with Kapnet’s open-source approach
Action Items
- Read whitenoise-rs core library
- Study Marmot protocol for MLS over Nostr
- Evaluate forking for Kapnet room integration
- Design TXXM-over-MLS protocol
- Plan for macOS deployment
Write a comment