Erebos C++ library
This is the second implementation of the Erebos protocol, created mostly because I haven’t found a way to use the Haskell library on Android. This library should work on any Linux system, though not elsewhere as it uses the inotify system to react on changes in storage. Features are typically implemented with some delay compared to the Haskell library, although this version generally tends to be running somewhat faster.
The code can be downloaded here:
git clone git://erebosprotocol.net/cpp
or from a mirror on github:
git clone https://github.com/roman-smrz/erebos-cpp
Readme
Library implementing the Erebos identity management, decentralized messaging and synchronization protocol, along with local storage. Specification being created at:
Erebos identity is based on locally stored cryptographic keys, all communication is end-to-end encrypted. Multiple devices can be attached to the same identity, after which they function interchangeably, without any one being in any way “primary”; messages and other state data are then synchronized automatically whenever the devices are able to connect with one another.
Status
This is experimental implementation of yet unfinished specification, so changes, especially in the library API, are expected. Storage format and network protocol should generally remain backward compatible, with their respective versions to be increased in case of incompatible changes, to allow for interoperability even in that case.
Build
This library uses CMake for building:
cmake -B build
cmake --build build
Usage
The API is currently experimental and without documentation; some example of
usage can be found in the test executable (src/main.cpp
).
Roadmap
0.1.1
- Streams in network protocol
- Retransmission of lost packets
- Storage version check
0.1.x
- Secure cookie for connection initialization
- Keep unknown items in local state
- Handle unknown object and record item types
Changelog
0.1.0 – 2024-02-18
- First version.