dnsmesh-rs

Rust SDK and CLI for the DNS Mesh Protocol — end-to-end encrypted messaging delivered over DNS, with a sendmail-compatible bridge for mutt/neomutt and an FFI surface for iOS and Android consumers.

Get started Mutt integration Protocol spec GitHub


What this is

DMP is an open protocol for moving end-to-end encrypted messages between two people using DNS as the transport. The recipient’s identity, prekeys, and mailbox slots resolve like any other DNS record. There is no central server, no app store, no gatekeeper between sender and recipient.

dnsmesh-rs is the Rust port of the client side of that protocol. The protocol specification, the authoritative DNS node, and the federation / cluster code live in the Python reference at oscarvalenzuelab/DNSMeshProtocol. This port consumes the same wire format, byte-for-byte, and is exercised against the reference in CI.

This site documents the Rust port. For protocol questions — threat model, wire format, claim routing, rotation chain semantics — follow the link out to the spec repository.

Why a Rust port

  • Embeddability. A single static library for iOS, Android, server backends, and other Rust crates without forcing a Python runtime onto the embedder.
  • Deterministic builds. cargo artifacts are signable and reproducible; mobile teams pin a specific commit and ship the binary unchanged across stores.
  • Footprint. No interpreter, no GIL, predictable memory.

The Rust port is intentionally client-only. The node implementation stays in Python, where its threading model, operational tooling, and federation story already exist.

Where to go next

If you want to… Read
Send your first message Getting started
Wire dnsmesh into mutt / neomutt Mutt integration guide
Use the SDK from your own Rust application SDK guide
Embed on iOS / Android Mobile bindings
Understand publishing back-ends (TSIG / Cloudflare / HTTP token) Publishers
See dnsmesh subcommand reference CLI reference
Understand on-disk config Config reference
Compare to the Python reference Differences from the Python reference
Understand the threat model Python repo’s SECURITY.md