You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.
Felix Ableitner b9eddea5b9 Added project discontinued notice 7 years ago
android Fixed Android tests to work on emulator 7 years ago
buildSrc@fc9d3267aa Updated to latest build tools 8 years ago
core Retry internet connections if all nodes disconnected 8 years ago
docs Added bachelor thesis 8 years ago
gradle Updated to latest build tools 8 years ago
graphics Fixed screenshot size 8 years ago
integration Uncommented integration test code 8 years ago
server Bumped version to 0.5.2 8 years ago
.gitignore Added .apk files to .gitignore. 8 years ago
.gitmodules Updated to latest build tools 8 years ago
.travis.yml Add Travis CI 7 years ago
LICENSE Changed license to MPLv2 (fixes #47) 8 years ago Allow adding other device by address, auto request public key 8 years ago Added project discontinued notice 7 years ago
build.gradle Updated to latest build tools 8 years ago
gradlew Initial commit. 10 years ago
gradlew.bat Initial commit. 10 years ago
settings.gradle Implemented AODVv2, including integration test (fixes #33). 8 years ago


Unfortunately, I won't be able to continue development on Ensichat, due to lack of time. I suggest you give Briar a try instead.

If you wish to take over maintenance of the project, please contact me.


Build Status License: MPLv2

Instant messenger for Android that is fully decentralized, and uses strong end-to-end encryption. Messages are sent directly between devices via Bluetooth or Internet, without any central server. Relay nodes are used to ensure message delivery, even if the target node is offline.

For details on how Ensichat works, you can check out my bachelor thesis, and read the protocol definition.

screenshot 1 screenshot 2 screenshot 3

Get it on Google Play Get it on F-Droid

To set up a server, please follow the instructions on the wiki.


To setup a development environment, just install Android Studio and import the project.

Alternatively, you can use the command line. To create a debug apk, run ./gradlew assembleDevDebug. This requires at least Android Lollipop on your development device. If you don't have 5.0 or higher, you have to use ./gradlew assembleRelDebug. However, this results in considerably slower incremental builds. To create a release apk, run ./gradlew assembleRelRelease.


You can run the unit tests with ./gradlew test. After connecting an Android device, you can run the Android tests with ./gradlew connectedDevDebugAndroidTest (or ./gradlew connectedRelDebugAndroidTest if your Android version is lower than 5.0).

To run integration tests for the core module, use ./gradlew integration:run. If this fails (or is very slow), try changing the value of Crypto#PublicKeySize to 512 (in the core module).


The project is licensed under the MPLv2.

The launcher icon is based on the Bubbles Icon created by Paomedia which is available under CC BY 3.0.