Design Intent
The documents under this section are the original project spec — written before any code existed. Much of what they describe has since been built; some has been replaced with a different mechanism in the same spirit; a few items are deliberately deferred. The per-bullet status below tells you which is which. For ground-truth on what ships today, use the links in “For what ships today”.
For what ships today
- How It Works — mental model + deployment paths (non-aspirational).
- Getting Started — hands-on install + first message.
- Protocol — wire format + crypto as implemented.
- ROADMAP.md — milestone-by-milestone status, with commit references for every shipped item.
- SECURITY.md — honest list of what’s protected and what isn’t.
The documents
Spec → ship delta
Items from the original spec that ship today:
- DNS TXT encoding of identity + chunks — ships, same shape.
- ChaCha20-Poly1305 + X25519 message encryption — ships.
- DNS chunking — ships (chunk sizing tuned from the spec’s proposal).
- Resolver pool with per-host health and failover — ships (M1:
dmp/client/resolver_pool.py+dnsmesh resolvers discover / list). - Multi-node storage with write redundancy — ships (M2:
FanoutWriterwrites to a quorum of cluster nodes;UnionReaderreads from all; 3-node compose cluster with integration tests). The spec’s “3× redundancy” is a config choice over this mechanism, not a separate system. - Anti-entropy sync between nodes — ships (M2.4: digest-and-pull worker so a node that was offline backfills on return).
- Peer discovery between nodes — ships (M3.3: signed cluster-manifest gossip over the same HTTP channel the nodes use for record sync).
- Bootstrap-domain gossip — ships (M3.1
BootstrapRecord+ M3.2dnsmesh bootstrap discover+ M3.3 cluster-manifest gossip). - User-identity key rotation + revocation — ships (M5.4: co-
signed
RotationRecordand self-signedRevocationRecord, client-side chain-walker, docker e2e coverage).
Items from the original spec that were replaced with different mechanisms:
- “30% whole-message Reed–Solomon redundancy” → per-chunk RS + cross-
chunk
zfecerasure (same durability goal; chunk-granular). - “Forward secrecy via ephemeral sender keys only” → real FS via recipient one-time prekeys (Signal/X3DH-shaped, not ephemeral- sender-only).
Items from the original spec that are deliberately deferred:
- Dijkstra-style mesh routing — out of scope. With the M2 + M3 cluster model, routing reduces to “which cluster nodes to query,” and mature mesh libraries (Yggdrasil, cjdns) address multi-hop IP-layer routing better than a message-layer protocol could. See the “Deferred / unlikely” section of ROADMAP.md.
- Using DMP as a relay for non-DMP traffic — also deferred; DMP is an application-layer protocol, not an overlay network.