The Cheogram app is a reliable, decentralized, and secure messaging app, available for Android.
The app feels like WhatsApp or Telegram but it is also a Snikket compatible app that works on the Jabber network. You can signup anonymously to a variety of interoperable services which are minimal servers optimized for fast and secure operations. (Note that Cheogram is not associated with, and does not specifically suggest, any of the providers on that list.)
This app is especially optimized for use with gateways to other networks, such as those operated by Cheogram or ones you operate yourself based on Slidge.
To securely setup contact with others scan an invite QR code or share an invite link. This will both add them as a contact as well as verify their device encryption keys.
You may manually create a contact if you know their Jabber ID and then write messages to them even if the recipient is not using a Cheogram app. You may also use the “discover channels” option in the app to find public channels where you may discuss with others on the network. Please note these public rooms are not associated with Cheogram and the content policy is up to the respective channel moderators.
If you have accidentally blocked a contact or whole domain you can manage your block list by following these steps:
Yes. Long press any piece of media or avatar and select the block option from the menu to block that media and not see it again in the future.
You can clear the list of blocked media under the attachment settings in app settings.
An account is a name, a picture, a Jabber ID and some additional information for encrypting messages.
On first installation of the Cheogram app a first account is created.
Later, you can tap the three lines image in the upper left corner to Add Account or to Switch Account.
You may want to use separate accounts for political, family, or work related activities, or e.g. for a dedicated “spam-profile” with which you register at websites and platforms that tend to cause unsolicited messages (“spam”) sooner or later.
You may also wish to learn how to use the same profile on multiple devices.
Yes, you can do so under Manage Accounts → Your Account → Edit Status Message. Your contacts who use compatible apps will see it when they view your contact details.
Use these tools to organize your chats and keep everything in its place:
You can also optionally use the Clear history option to delete local message history storage for a chat.
To use the functions, long tap or right click a chat in the chat list.
To add or delete members, click on Invite contact in the chat menu.
You can mention anyone who recently sent a message by tapping on their avatar. This will also default your message into the same thread context as that message.
You can also type an @
followed by a search term to search active participants. Tap any result to mention that person. You can disable this search feature in settings.
Note that a mention may cause an immediate notification for the mentioned participant, depending on their settings and if their app is currently connected.
Occasionally, you may wish to participate in a group without seeing messages from one or more participants. Long press the avatar of any participant and choose mute from the menu. If this option is not available, ask the administrator about upgrading their server software.
You can unmute by long pressing on the avatar area next to a muted message.
Some public channels do not allow other participants to see your Jabber ID in order to be able to start a chat with you. Long press on the avatar of any participant you wish to connect with and select Invite to chat. This will send them an option to begin a chat with you if they wish.
If you are the administrator or moderator of a group or channel there are many tools available to you, including:
@here
, and possibly other privileges based on your service provider and settings.If you are using the Google Play variant of the app, push Notifications are sent by Google “Push services” to a user’s device so that an inactive app can fetch messages in the background and show notifications on a user’s phone if needed. No message content is included in the push notifications.
Push Notifications work with at least all Snikket servers by integrating with the Google FCM Push service, including on devices that use microG instead of proprietary Google code on the phone.
If a “Push Service” is available, the Google Play variant of Cheogram enables Push Notifications to achieve instant message delivery for all users on a compatible server.
You may disable “battery optimizations” for Cheogram, allowing it to to use a more battery efficient connection in the background. However, some Android vendors even restrict apps completely (see dontkillmyapp.com) and in those cases, without push notifications, Cheogram might not show incoming messages until you manually open the app again.
Push Notification support avoids leakage of private information. It does not leak Jabber ID, IP address, or message content (not even encrypted) to any system involved in the delivery of Push Notifications.
Here is how Cheogram app performs Push Notification delivery:
Resulting from this overall privacy design, even the full seizure of the central notification proxy would not reveal private information that Push services do not already have.
Cheogram is a free and open source decentralized messenger with free server choice, but we want users to reliably experience “instant delivery” of messages, like they experience from WhatsApp, Signal or Telegram apps, without asking questions up-front that are more suited to expert users or developers.
Note that Cheogram has a small and privacy-preserving Push Notification system that achieves “instant delivery” of messages for servers including a potential one you might setup yourself without our permission. Welcome to the power of the interoperable and massive Jabber network.
DNSSEC is the Internet standard used to securely verify the mapping between the domain name of a service and the actual address to connect to that service. In other words, it makes sure you are really connecting to the service you intend to. This can be further enhanced by DANE to make sure there is no “machine in the middle” attack between you and the service you are connecting to.
The Cheogram app checks for DNSSEC and DANE and shows a small badge on the Manage accounts screen to show the status. If you know your service provider has these set up, and you don’t see them, it may mean there is a security problem with your service.
When enabled, OMEMO is used for automatically establishing end-to-end encryption with contacts and group chats. OMEMO uses the cryptographic protocol developed for Signal. End-to-End encrypted messages are marked with a padlock or shield .
All end-to-end encrypted messages carry a padlock or shield .
End-to-end encryption is guaranteed if the message compose box indicates it is enabled.
If you have a second communication channel with your chat partner, like a video chat or a different messenger, you can generate an invite link.
If you are together in person, you can show a QR code to your chat partner.
For direct 1:1 chat invitations, tap the QR Code icon on the app main screen.
Let your chat partner scan the QR image with their Cheogram or Snikket app, or click “Copy” or “Share” to create an invite link and share it with your chat partner.
Congratulations! You can now use guaranteed end-to-end encryption with this contact.
Messages with shield checkmarks mean that all messages in the chat will be end-to-end encrypted and can not be read or altered by compromised servers or Internet providers. Furthermore the shield means you have verified the keys in use by this contact.
Your chat with a contact lost guaranteed end-to-end encryption, probably because you got a new device or installed or reinstalled a new app.
Send your contact a new invite link or have them scan your new QR code to re-verify your keys so they can continue the send you encrypted messages. Older encrypted messages will not be able to display on your new device unless you moved them over using an export or backup.
Yes.
When we talk about an “end-to-end encrypted message” we always mean a whole message is encrypted, including all the attachments and attachment metadata such as filenames.
Even if your messages are not guaranteed to be end-to-end encrypted, they are still protected from Internet providers like cell or cable companies. However, your and your recipient’s service providers may read, analyze or even modify your messages, including any attachments, if they are not end-to-end encrypted.
Cheogram by default uses strict TLS encryption which secures connections between your device and your provider. Moreover, the connection between your and the recipient’s provider will be transport-encrypted as well.
Note that maintaining guaranteed end-to-end encryption on top of TLS encryption provides pervasive safety between your and the recipient’s devices. Not even your provider will be able to read or modify your messages.
A little padlock in a message bubble denotes that the message was properly end-to-end encrypted from the given sender or a shield denotes that it was encrypted by a verified key. If there is no padlock or shield, the message was not end-to-end encrypted most likely because the sender disabled it.
Yes, Cheogram (when using OMEMO) does support Perfect Forward Secrecy (PFS). This means that if your private decryption key is leaked, and someone has collected your prior in-transit messages, they will be unable to decrypt and read them using the leaked decryption key.
Note, however, that if anyone obtains to your decryption keys, they will typically also be able to obtain your messages, irrespective if Perfect Forward Secrecy is in place or not. The typical real-world situation for leaked decryption keys is device seizure.
Yes. OMEMO is based on the same cryptographic protocol as signal and the implementation uses the same code.
Yes. If you make a backup from the app on one device, you can restore it on a new device which will transfer your messages and your keys. Do not continue to use the app on the old device after you have restored a backup on the new device.
If you don’t have a key or don’t even know you would need one - don’t worry: Cheogram generates keys as needed, you don’t have to hit a button for it.
Yes. Sign in with your credentials on the second device and both devices will receive all messages.
In contrast to many other messengers, after successful transfer, both devices are completely independent. One device is not needed for the other to work.
There are several third party web clients which have some compatibility with Cheogram already, including Movim. Work is underway to produce a first party web client. You can try an early, unfinished demo of this.
To restore a backup, first make sure the account is disabled on the previous device (if the device is destroyed or the app uninstalled that is also ok). You will need to know the encryption password of the backup (usually the account password). Tap the three lines in the top left of the main screen to get to the side drawer. Tap the account header drop down to get the the accounts menu. Tap Add account. In the top bar of the add account activity tap the icon for restore backup.
You are also offered the option to restore a backup on first start of the app, instead of creating a Jabber ID or logging in.
Never re-enable the account on a previous device after restoring the backup on a new device.
In Cheogram, you can share widgets based on webxdc, attachments with an .xdc
file extension. They can do very different things, and make Cheogram a truly extendable messenger.
Experimentally, some widgets (such as (Text Cards)[https://webxdc.org/apps/#arcanecircle-textcards]) can be installed into the attachments menu as extensions. When run from the attachments menu the widget is given no special access to the chat, but can still be used to provide extended functionality to the app.
Open a chat with any contact. If they support receiving calls you will see a phone handset icon in the toolbar. Tap this to initiate a call. You may need to add someone to your contacts to see if they support this option.
Depending on the operating system in use, you may be asked to grant permissions to the app. This is what the app does with these permissions:
Most Jabber compatible servers will work well. We suggest Snikket for beginners or Prosody for more flexible setups.
Yes. Incoming rich text messages are fully supported. Outbound messages can be formatted using items in the text selection menu or with some basic formatting markers:
*
for bold_
for italic~
for strikethroughYou can disable composing messages with rich text in the settings.
You can insert emoji, stickers, or GIFs using any keyboard which supports these. You can also select any sticker from your gallery using the Choose media option.
For convenience you may search known emoji and stickers by typing a :
followed by your search query. Tap on any result to insert it inline. You can disable this search function in settings.
It is known that the functions of some keyboard apps, such as the emoji search function in Any Soft Keyboard, interferes with our emoji search function.
Every time you start to discuss a new topic, tap the circle with thread icon in the bottom left, next to your message compose box. This will mark the next message you send with a small thread icon to differentiate it from other nearby messages. To reply in an existing thread, tap on any message in that thread, swipe to reply to a particular message, or (in groups and channels) tap the avatar next to the message to mention the person you are replying to.
A list of recent threads can be found in the details screen for groups and channels.
There is an option in settings to also set the thread you are writing to do match whatever message is at the bottom of your chat scroll area, to reduce taps needed if you are replying to something recent.
Yes. Under the attachment menu is the option to add a subject to your message.
A subject with no body in a thread will set the subject for the entire thread.
Some development and hosting are sponsored by MBOA the creators of JMP.
The app is also for sale in Google Play to collect some funds that way, and you can sponsor some of our developers on Liberapay.