What is the Cheogram app?

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.

How can I find people to chat with?

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.

Manually creating a contact
Manually creating a contact

What are the advantages of Cheogram compared to other messengers?

What if I expect a message from someone I didn’t write to in the past?

Chat Requests
Chat Requests

How do I unblock someone?

If you have accidentally blocked a contact or whole domain you can manage your block list by following these steps:

  1. From the main screen, tap the three lines in top left to open the side drawer
  2. Tap your account avatar in the top left, or the account drop down if you have multiple accounts
  3. In the account drop down tap Manage Accounts
  4. Tap the account to manage the block list of
  5. Tap the three dots in the top right
  6. Tap Show block list
  7. Long press any item to unblock

Does Cheogram support images, videos and other attachments?

Can I block offensive media and avatars?

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.

What are accounts? How can I switch between them?

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.

Who sees my profile picture?

Can I set a Status with Cheogram?

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.

What do Pinning, Muting and Archiving mean?

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.

What does the green send button mean?

Groups

Creation of a group

Creating a private group chat
Creating a private group chat

Add members to a group

To add or delete members, click on Invite contact in the chat menu.

I do not want to receive the messages of a group any longer.

Mute a group chat
Mute a group chat

How do I mention someone in a group or channel?

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.

How can I mute participant in a group?

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.

How can I invite someone from a public channel to chat with me?

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.

What moderation tools are available?

If you are the administrator or moderator of a group or channel there are many tools available to you, including:

What do the ticks shown beside outgoing messages mean?

What happens if I turn on “Automatic message deletion”?

Instant message delivery and Push Notifications

What are Push Notifications? How can I get instant message delivery?

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.

Are Push notifications enabled / needed on Android devices?

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.

How private are Push Notifications?

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.

Why does Cheogram integrate with centralized proprietary push services?

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.

Encryption and Security

What are DNSSEC and DANE?

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.

Which standards are used for end-to-end encryption?

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 .

How can i know if messages are end-to-end encrypted?

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.

How can I get guaranteed end-to-end encryption and shield checkmarks?

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.

Showing a QR code to invite a contact
Showing a QR code to invite a contact

What does the shield checkmark and “guaranteed end-to-end encryption” mean?

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.

A contact sent a message “not encrypted for this device”, what can i do?

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.

Are attachments (pictures, files, audio etc.) end-to-end encrypted?

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.

Is a message exposed in cleartext if end-to-end encryption is not available?

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.

How can I check the encryption status of 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.

Does Cheogram support Perfect Forward Secrecy?

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.

Is end-to-end encryption of Cheogram as safe as Signal?

Yes. OMEMO is based on the same cryptographic protocol as signal and the implementation uses the same code.

Can I reuse my existing private key?

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.

Multi-client

Can I use Cheogram on multiple devices at the same time?

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.

Are there any plans for introducing a Cheogram Web Client?

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.

How do I restore a backup?

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.

Widgets

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.

How private are widgets?

Where can I get widgets?

How can I create my own widget?

What are extensions?

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.

Miscellaneous

How can I use audio/video calls with Cheogram?

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.

How can I share my location with my chat partners?

Which permissions does Cheogram need?

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:

I want to manage my own server for Cheogram. What do you recommend?

Most Jabber compatible servers will work well. We suggest Snikket for beginners or Prosody for more flexible setups.

Does Cheogram app support rich text?

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:

You can disable composing messages with rich text in the settings.

How can I send emoji or stickers?

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.

How can I differentiate topics of conversation in one chat?

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.

Can I set a subject with Cheogram?

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.

How is Cheogram development funded?

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.