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://

or from a mirror on github:

git clone


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.


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.


This library uses CMake for building:

cmake -B build
cmake --build build


The API is currently experimental and without documentation; some example of usage can be found in the test executable (src/main.cpp).


0.1.0 – 2024-02-18