GUN is a small, easy, and fast data sync and storage system that runs everywhere JavaScript does. The aim of GUN is to let you focus on the data that needs to be stored, loaded, and shared in your app without worrying about servers, network calls, databases, or tracking offline changes or concurrency conflicts. This lets you build cool apps fast. When a browser peer asks for data, it'll merge the reply with its own data using a CRDT, then cache the result. GUN is fully decentralized (peer-to-peer or multi-master), meaning that changes are not controlled by a centralized server. A server can be just another peer in the network, one that may have more reliable resources than a browser. You save data on one machine, and it will sync it to other peers without needing a complex consensus protocol. It just works. GUN can be used in both browsers and servers. We have made it easy to install in many different environments.
Features
- The gun graph database is stored across all peers participating in the network
- Every peer might possess the complete graph, or only a subset of the complete graph and may possess data that does not exist on any other node (yet)
- There is no theoretical limit for the total size of a gun graph
- The amount of data that a peer has locally available is limited by the memory constraints of the host environment, like operating system, browser, etc
- The amount of data that can be persisted beyond the running process depends on the storage engine
- Relay peers are dedicated gun peers running on NodeJS