Functional goals: Given a list of IP addresses, maintain communicative cluster capable of sending and receiving messages between members Maximize ability to maintain cluster with various commonplace network conditions: dynamic IP address periodic temporary connection loss long term connection loss hardware failure Ensure attack surface is minimized to third parties nodes must allow connection from the internet due to changing IP addresses randomly calculated rendezvous windows


Key Management

Cryptographic keys are used at every interface - between nodes to establish identities, to decrypt received data, to encrypt data before transmission, to encrypt data before storage, to decrypt data read from storage, etc. It’s critical that all other components are properly structured around safe key management, so this will be one of the first components developed. Key generation Every user generates a root key that serves as the ultimate recovery key, which is used to bootstrap their cluster....



Simple messaging layer, which can be built upon for more complex communication schemes. sharing of simple messages, with references to other messages creation of conversation groups group message exchange between clusters



Data layer - persistent storage duplicated between one’s own nodes and some nodes of trusted friends. stores messages always encrypted at rest combinatoric streaming engine requires compromise of multiple nodes to access archived data. combine stream of two remote nodes to construct messages in memory locally redundant - any two nodes can be used to recover all data relay, sender, receiver roles trusted friends can serve relay role only one sender at a time fully encrypted on nodes of trusted people you know


Consensus Engine

If we’re not going to rely on third parties to tell us what to think, we need to build a system to help us arrive at consensus without them. The overall approach here is for small groups of individuals to participate in a process that allows them to achieve local consensus. With so many independent consensus decisions being made, and with no ability to know the results from any of them, mass propaganda will become much less effective. Over time people will accumulate a wealth of consensus results that distill the careful thoughts and discussions of those that they trust the most. ...