Introduction

XMPP is a protocol for instant messaging. It stands for Extensible Messaging and Presence Protocol. It supports most things you'd expect from an instant messaging software, like: chat (duh?), sending images/videos/other files, chatrooms (group chats), and even calling (both voice and video). It also supports another great thing: encryption.

The biggest problem with XMPP is that many of the clients (apps/programs you use to chat with people) could be better. To some extent, all clients lack features or are buggy or even poorly designed - although, for the most part, it will be fine.

Usage

To use XMPP you will need a client. Below you can see our recommendations of clients for different platforms.

Clients

Linux

Windows

macOS

Android

iOS

There might be other XMPP clients that we have missed, but this covers the main ones we know about. We primarily use gajim and blabber.im.

* F-Droid is a repository containing free and open source Android apps.

Registration

To register you would need a server to register on. Kind of in the same way you can register an email at different domains. (@gmail.com, @outlook.com, @protonmail.com, etc.) XMPP works in a similar manner where your JID (Jabber ID) is formatted as username@server.com. You can choose between thousands of server, but we'd be happy if you joined our server.

If you want to use our server, you'll have the register an account. This can be done through the qwik account manager (qam). Once you've registred your JID would become username@qwik.space (assuming you used our server). Your friends will use this address to contact you.

Encryption

XMPP supports two types of encryption: OMEMO and OTR. We personally recommend using OMEMO as it is the easiest to use and all previously mentioned clients support it*. Even though OTR is supported by some clients, we don't recommend using it as it doesn't support support encryption of calls or MUCs.

If you are more of an "advanced" user, we recommend turning of blind trusting in your client and manually trust OMEMO fingerprints.

* If you are using gajim on linux you might need to install an external package to get support for OMEMO: gajim-omemo

Chat rooms (group chats)

XMPP allows you to create chat rooms with multiple participants, they are called MUCs (Multi-User Chats). You can create one through most clients. If you are prompted for a room address when creating a room, simply input name@muc.qwik.space where name is the name of the chat room.

You might be prompted to choose between a public and a private room. The difference is that private rooms supports encryption and you must be invited to enter it. Public rooms, on the other hand, only requires you to know the address to join, although you can also be invited to a public room. Public rooms do not support encryption.

Once you have created a room you should be able to invite your friends through the client, otherwise you could try giving them the address. You can also create invite links with the following format: xmpp:qwik@muc.qwik.space?join. You would replace qwik with the name of your room.

Calls

To use calls (audio or video) your client must support it. Not all clients support calls, but if your client supports calls you should see a call-button somewhere on the screen. For your recipient to recieve the call their client must also support calls. The last requirement is that the server must support calls as well (our server does support calls).

If you use OMEMO, the calls will be encrypted.

Tor and I2P

You can use the following hostnames to connect over a darknet:

Darknet Port Hostname
Tor 5222 qwikoouqore6hxczat3gwbe2ixjpllh3yuhaecixyenprbn6r54mglqd.onion
I2P 5222 a4rmtevnz6mgfdt7jxwuejcuztlhdaavr3wjlat2twhsgfkboxpa.b32.i2p