Crates.io | exocore |
lib.rs | exocore |
version | 0.1.26 |
source | src |
created_at | 2020-01-16 01:45:57.369766 |
updated_at | 2024-09-06 14:40:30.05367 |
description | Distributed applications framework |
homepage | |
repository | https://github.com/appaquet/exocore |
max_upload_size | |
id | 198974 |
size | 152,273 |
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:
Build dependencies
apt install build-essential pkg-config libssl-dev
clippy
and rustfmt
: rustup component add clippy rustfmt
brew install capnp
apt install capnproto
brew install protobuf swift-protobuf
apt install protobuf-compiler
CLI:
./tools/install.sh
or cd exo && cargo install --path .
or grab latest released binary.Configuration
./examples/node.yaml
].
exo
can also generate and manage configurations. See Quick start.On node 1
Generate configuration:
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
Generate configuration:
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