{{Header}}
{{Title|title=
SimpleX
}}
{{#seo:
|description=SimpleX in {{project_name_short}}.
|image=SimpleX_Logo_Small.png
}}
{{chat_mininav}}
[[File:SimpleX_Logo_Small.png|thumb]]
{{intro|
SimpleX in {{project_name_short}}.
}}
== Overview ==
[https://simplex.chat/ Simplex] is a general-purpose instant messaging client. Both the client and server are Freedom Software, licensed under the GNU AGPLv3 license.[Client license: https://github.com/simplex-chat/simplex-chat/blob/stable/LICENSE
Server license: https://github.com/simplex-chat/simplexmq/blob/stable/LICENSE] Most of the features one would expect from a major chat messenger are present, including text chats, image sharing, file sharing, and one-on-one audio and video calls.[https://simplex.chat/docs/guide/send-messages.html][https://simplex.chat/docs/guide/audio-video-calls.html] It provides a number of interesting security- and privacy-related features:
* End-to-end encryption for messages is mandatory and pervasive. Unencrypted one-on-one chats and unencrypted chatrooms simply do not exist. [https://simplex.chat/#privacy]
* Messages are encrypted using double-ratchet encryption, providing perfect forward secrecy and break-in recovery, similar to OMEMO.[https://github.com/simplex-chat/simplexmq/blob/stable/protocol/overview-tjr.md#encryption-primitives-used]
* Quantum-resistent encryption is used by default in one-on-one chats when possible.[This feature's introduction is documented at https://simplex.chat/blog/20240314-simplex-chat-v5-6-quantum-resistance-signal-double-ratchet-algorithm.html. With SimpleX Chat 6.3.3 (the latest version at the time of this writing), quantum-resistent encryption is enabled by default in one-on-one chats when it is supported by both users' chat clients. Group chats are still secured using non-quantun-resistent end-to-end encryption.]
* Messages are stored locally in an encrypted database, which can be optionally passphrase-protected for additional security.[https://simplex.chat/docs/guide/managing-data.html#chat-database]
* Incognito mode — unique to SimpleX Chat. Creating a random name for entering a chat or creating a group. The number of random incognito chats is unlimited. [https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode]
* No user IDs or accounts are used. Instead using a persistently used pair of servers and contact-specific routing and encryption data allow messages to be sent between users.[https://simplex.chat/#how-simplex-works]
* Message integrity - to guarantee integrity the messages are sequentially numbered and include the hash of the previous message. If any message is added, removed or changed the recipient will be alerted.[https://github.com/simplex-chat/simplex-chat/blob/stable/docs/GLOSSARY.md#blockchain]
* Message mixing to reduce correlation. SimpleX servers act as low latency mix nodes — the incoming and outgoing messages have different order.[https://simplex.chat/faq/]
* Unidirectional message queues. Each message queue passes messages in one direction, with the different send and receive addresses. It reduces the attack vectors, compared with traditional message brokers, and available meta-data.[https://simplex.chat/blog/20240604-simplex-chat-v5.8-private-message-routing-chat-themes.html#private-message-routing]
* Multiple layers of Content padding. SimpleX uses Content padding for each encryption layer to frustrate message size attacks. It makes messages of different sizes look the same to the servers and network observers.[https://github.com/simplex-chat/simplex-chat/blob/stable/docs/GLOSSARY.md#message-padding]
* Both the client and the server are mostly implemented in memory-safe programming languages, primarily Haskell and Kotlin.[https://github.com/simplex-chat/simplexmq indicates that the server is implemented almost entirely in Haskell. https://github.com/simplex-chat/simplex-chat shows that the client consists of about equal parts Kotlin and Haskell, with a significant amount of Swift code for their iOS app.]
* SimpleX Chat has had its cryptography implementation and design audited by Trail of Bits.[simplexmq library implementation review: https://simplex.chat/blog/20221108-simplex-chat-v4.2-security-audit-new-website.html, https://github.com/trailofbits/publications/blob/master/reviews/SimpleXChat.pdf][SimpleX Chat cryptographic design review: https://simplex.chat/blog/20241014-simplex-network-v6-1-security-review-better-calls-user-experience.html, https://github.com/simplex-chat/simplex-chat/blob/stable/docs/SimpleX_Design_Review_2024_Summary_Report_12_08_2024.pdf]
Unlike XMPP and Matrix (which have server-local accounts that can communicate with each other via federation), SimpleX Chat's servers work as unidirectional pipes between client devices.[https://github.com/simplex-chat/simplexmq/blob/stable/protocol/overview-tjr.md#what-is-simplex] Chatrooms and user profiles are implemented entirely client-side, without the servers storing any persistent data about users or chatrooms.
SimpleX is intended to function as a decentralized chat system, but requires manual setup to actually acheive decentralization.
Disadvantages include:
* As of the time of writing, calls in desktop version work only through browser WebRTC.
Whonix forum discussion: [https://forums.whonix.org/t/using-simplex-over-xmpp-omemo/20396 SimpleX over XMPP (OMEMO)]
{{mbox
| image = [[File:Ambox_warning_pn.svg.png|40px]]
| text =
The database and all accounts and chats are stored locally. To maintain access to chats in live mode, you must export the database before shutting down!
Settings - Database - Export Chat Archive.
If you lose your device or remove the software from the device, you will not be able to recover the lost data, unless you made a back up. To protect the data you need to make regular backups, as using old backups may disrupt your communication with some of the contacts.
}}
== Installation ==
SimpleX Chat's desktop client can be installed via the official Flatpak package. Ensure that the Flatpak package manager is installed and the Flathub repository is enabled:
{{Flatpak Install|package=
chat.simplex.simplex
}}
You may have to log out and log back in before SimpleX Chat appears in the application menu.
Other ways to install and run SimpleX (AppImage, deb package, cli-version) and current installation guides can be found here:
* [https://simplex.chat/downloads/#desktop-app Desktop app]
* [https://simplex.chat/docs/cli.html SimpleX Terminal (console) app]
* [https://github.com/simplex-chat/simplex-chat/releases GitHub releases]
== Configuration ==
=== User Profiles ===
SimpleX Chat does not have user accounts in the traditional sense. Rather than having accounts stored on servers, SimpleX uses user profiles which are stored entirely on the client device. Each user profile can communicate with the profiles of other users on the network via contact-specific routing data and encryption keys.
To create your first user profile in SimpleX Chat:
{{Box|text=
'''1.''' Open SimpleX Chat from Start Menu
→ Accessories
→ SimpleX Chat
.
'''2.''' Click Create your profile
'''3.''' Enter any desired name for your profile, and click Create
.
'''4.''' Enter a passphrase to protect the database used by SimpleX for local storage. If you trust your existing security measures (i.e. LUKS disk encryption) to protect the chat database without an additional passphrase, you can skip this step by clicking "Use random passphrase".
'''5.''' Review the [https://simplex.chat/privacy/ privacy policy and conditions of use]. Do not click Accept
yet.
'''6.''' Click Configure server operators
and enable the use of Flux's servers. This will increase the set of servers SimpleX Chat can use for receiving messages from other users, and avoid using servers operated entirely by SimpleX Chat Ltd., providing better decentralization. Click OK
to proceed.
'''7.''' If you agree with the terms and conditions, click Accept
.
'''8.''' '''Done.''' The setup of SimpleX Chat is now complete.
}}
You can add contacts via [https://simplex.chat/docs/guide/readme.html#connect-to-friends one-time links, QR codes], or a [https://simplex.chat/docs/guide/app-settings.html#your-simplex-contact-address persistent SimpleX address]. You can search for and join communities on the SimpleX network using the [https://simplex.chat/docs/directory.html SimpleX directory service].
=== Non-default servers ===
By default, SimpleX Chat will use servers hosted by SimpleX Chat Ltd, with an option to use servers hosted by InFlux Technologies Limited as well.[https://simplex.chat/blog/20241210-simplex-network-v6-2-servers-by-flux-business-chats.html] Other servers exist but must be added to the chat client manually to make use of them.
The SimpleX Chat developers do not maintain a list of publicly accessible servers, however some people have created [https://discuss.privacyguides.net/t/simplex-community-servers-list/21443 lists of public SimpleX servers]. You can add a public server to the group of servers SimpleX Chat will use by following [https://simplex.chat/docs/guide/app-settings.html#network-and-servers the official documentation]. Note that manually added servers are profile-specific - adding a server to one of your profiles will not automatically enable the use of that server with your other profiles.
= Footnotes / References =
{{reflist|close=1}}
{{Footer}}
[[Category:Documentation]]