StoneAge Messenger

StoneAge Messenger is an Android messenger self-hosted in your own S3 storage, with no developer-controlled backend. Storage owner can host other users like their family, team, community. Users can communicate regardless of where they are hosted. Supports text, images, audio, video, and files in DMs or private groups. No voice or video calls.

Getting the App

StoneAge Messenger is available on F-Droid Get it on F-Droid on Google Play Get it on Google Play and as an APK.

Creating a Home Server

After installing the app, you need to set up your home server. You can either self-host or request an invite from someone who self-hosts.

Self-Hosting: Follow the instructions in Storage Setup to create an S3 bucket that serves as a home server, and construct your Private Storage Profile that you enter in the app. Self-hosting allows hosting other users your S3 bucket via in-app invites.

Requesting Invite: You can request to join the home server of someone who self-hosts. The request message can be generated in the initial setup screen in the app, and involves exchanging encrypted messages via external channels like email or texting. The messages are encrypted to allow securely sharing home server address and credentials (Storage Profile) to the intended recipient only. Even if message content leaks - only the original requester can decrypt it.

Note: A Custom APK allows embedding storage profile into an APK for private distribution. It allows users to skip the initial step of configuring the home server.

Congrats! You can now exchange contact details and communicate with other StoneAge users.

Exchanging contact details (in-app)

Before two users can communicate, they both have to add each other to their contact lists in the app.

In physical proximity: Tap options (three dots in the top right, or the hardware options button on older phones) → Show my contact barcode. On the other phone tap the Barcode icon in the top right → scan the barcode → follow instruction for adding a contact.

Remotely: Tap options (three dots in the top right, or the hardware options button on older phones) → Share my contact URI → send it via email, another messenger, etc. The contact string contains encoded contact id and public storage profile, for example:

cweb:contact.car6jqxkqsqtczkfz7k5u5hfbg5pjoduczyn2o6ongc.af4jzy3bmdsgembqoalbn2ywuw4bqweaembslknyas5erqswubmqbttdcjga9999

On receiving contact from another user, add it to your contact list by tapping + in the contact list, and paste there the received contact string.

Additional properties due to self-hosting and P2P protocol

  1. On a fresh install, the app generates a new Identity that is analogous to user account.
  2. The Identity and its encryption keys live on the device. Identity is not tied to a phone number, and does not require authorization.
  3. There is no backup in the cloud, identity keys and history cannot be restored in case of data or device loss.
  4. The app only communicates with its own and contacts’ online storage. No information is sent to the developer or any other third party.
  5. There is no discovery service - for two users to communicate they have to exchange their addresses (public storage profiles) via external channels.
  6. The app does not use third party push notification services (e.g., FCM) and polls messages periodically, as a result messages may be delayed. The poll interval is configurable to balance message delay and battery life.

Credits

StoneAge Messenger is forked from Conversations with communication protocol switched from XMPP to Cweb.