Every node in Datanet runs an agent which acts as a reliable write-thru cache, replicating data P2P to other Agents and to Central (a GeoMesh of Clusters). Central provides high-availability, bootstraps new Agents, and resyncs temporarily offline Agents. Every Agent is a master, writes data locally, replicates asynchronously, and resolves conflicts independently & automatically via CRDT algorithms.


Datanet consists of a single logical Central component and many Agent components.
Central is a mesh of Clusters; each Cluster is designed to be located in a separate DataCenter.
Agents create, modify, & remove documents, they are the database masters.
Central's primary responsibility is to provide high-availability.


All Agents sync data with one-another: they all speak the same protocol and share a single data-space.
Current Agent options are:
- 1.) OpenResty-Agent (Lua)
- 2.) NodeJS-Agent (JS)
- 3.) Browser-Agent (JS)
- 4.) MemcacheCluster-Agent (JS) (experimental)


CentralClusters are elastic, supporting automatic add-node & remove-node (via gossip).
Central's Geo-Mesh is elastic, supporting automatic add-data-center & remove-data-center (via gossip & discovery).
Each Agent is actively connected to a single CentralCluster.
Agents seamlessly switch CentralClusters on error conditions.


Each CentralCluster uses a distributed database for data-storage.
Agents use either an embedded database or a single-machine database.
Databases at both the Central & Agent level are pluggable, there are numerous (~10) options (enumerated on page: components).