Warning: Exocore is at a very early development stage, hence incomplete, unstable, and probably totally unsafe. Use at your own risk.
Exocore is a distributed applications framework with private and encrypted data storage. Think of it as an infrastructure that allows a user to own his own personal cloud that is extensible via WebAssembly applications and accessible via Web/Mobile/Backend SDKs. It is designed to be resilient to failures and will eventually allow offline usage (ex: on mobile).
Exocore is primarily built for Exomind, a personal knowledge management tool built in parallel to this project. Exocore is the application framework for Exomind.
The primary concept in Exocore is a Cell, which is a unique container for a user's applications and data.
A cell consists of:
apt install build-essential pkg-config libssl-dev
rustup component add clippy rustfmt
brew install capnp
apt install capnproto
brew install protobuf swift-protobuf
apt install protobuf-compiler
cd exo && cargo install --path .or grab latest released binary.
exocan also generate and manage configurations. See Quick start.
On node 1
exo --dir ./node1 node init --name node1
Edit configuration to include unique and accessible addresses:
exo -d ./node1 config edit
Generate a cell:
exo -d ./node1 cell init --name my_cell
On node 2
exo --dir ./node2 node init --name node1
Edit configuration to include unique and accessible addresses. If both nodes are running on the same machine, make sure they have unique ports.
exo -d ./node2 config edit
Request to join the cell as a chain and store node.
This will use exocore's discovery server (
disco.exocore.io) to exchange configurations:
exo -d ./node2 cell join --chain --store
and copy the displayed discovery PIN.
On node 1:
Add node 2 to cell:
exo -d ./node1 cell node add
Paste node 2's discovery PIN and accept its join request.
Start both nodes:
exo -d ./node1 daemon
exo -d ./node2 daemon