Kaidan is a user-friendly and modern chat app for every device. It uses the open communication protocol XMPP (Jabber). Unlike other chat apps, you are not dependent on one specific service provider.

Kaidan does not have all basic features yet and has still some stability issues. But we do our best to improve it!

  • Mo chevron_right

    Chat picture resolver and Telegram stickers

    Timothée Jaussoin · / Movim · Friday, 15 May - 07:50 edit · 3 minutes

Movim 0.18 is planned to be released soon.

In the meantime, let's have a look at one specific feature that is really useful when you integrate Movim with the Spectrum2 - Telegram bridge.

For those that are not aware, XMPP can connect to other chat networks using tools called "transport". One of the most used is called Spectrum2 and can connect to many other networks thanks to its libpurple support.

Telegram transport setup

What will we do here is:

  • Setup telegram-purple in Spectrum2 on Debian
  • Connect it to a XMPP server (here ejabberd)
  • Adapt the transport to integrate with Movim

Setup Spectrum2 and telegram-purple

Here I will not detail the basic installation, the official Spectrum2 documentation is pretty complete.

Once the repository is setup, please install the base package and the libpurple module:

apt install spectrum2 spectrum2-backend-libpurple

For telegram-purple the README is also quite complete

Create a Telegram transport

Once all the packages are setup, we will create a transport configuration file. You can reuse the spectrum.cfg.example located in the /etc/spectrum2/transports/ as a base.

# nano /etc/spectrum2/transports/spectrum_telegram.cfg

This is basically the config file that I used for my own transport:

server_mode = 0

jid =
password = spectrumpassword
server =
port = 5347
backend_host =




name=Telegram Transport

config = /etc/spectrum2/logging.cfg
backend_config = /etc/spectrum2/backend-logging.cfg

type = sqlite3


When Spectrum2 will connect to the Telegram network, the stickers will be downloaded as files on the server. By default an ugly path is simply sent to the XMPP clients. We will turn it to a proper URL and let Movim to its magic.

To do that we need to configure the Web Storage module. You can also find more documentation about it there.


It's pretty self explanatory. The downloaded stickers will be put in the web_directory directory. The second parameter, web_url, is basically telling Spectrum2 how to general its URL before sending them in the messages.

Configure ejabberd

Then we need to add a new service in our ejabberd.yml configuration file.

    port: 5347
    module: ejabberd_service
    access: all
    ip: ""
    global_routes: false
        password: "spectrumpassword"

Once everything is setup, restart Spectrum2 and ejabberd. For Spectrum2 you can do it using spectrum2_manager or a dedicated systemd configuration file.

Configure our web server

We then need to expose those files to the web. A simple nginx configuration will handle it.

server {

    listen 443 ssl http2;
    listen [::]:443 ssl http2;


    root /home/movim/upload;

    location /spectrum {
        alias /home/movim/movim/spectrum;

Fix the nasty file rights with Incron

If you start to use your Telegram transport at this point you'll notice that the stickers URLs are returning a 403 Forbidden error.

Indeed, Spectrum2 is writting the files in the directory using it's own rights. And this can't be configured.

We will then use another useful tool called Incron. This tool works like CRON but instead of working on time events, it works on file events.

You can find a pretty complete documentation there.

apt install incron 
nano /etc/incron.allow # add your spectrum user there
sudo -su spectrum
incrontab -e

In the incrontab file well then change dynamicaly the rights of the files once they are wrote in the directory (check the documentation for more details).

/home/movim/upload/spectrum   IN_CLOSE_WRITE          chmod 664 $@/$#

Enjoy your nice Telegram stickers in Movim

In Movim, nothing more to do. With the version 0.18, Movim will try to resolve the incoming messages that contains a URL and see if it's a valid picture. Which is the case for Telegram stickers.

Telegram stickers displayed in the Movim chat

You can also note that it works for any other incoming picture URL, including those sent using Conversations or other XMPP clients.

That's all folks!

#telegram #xmpp #movim #transport #stickers #ejabberd #admin

  • image
  • favorite

    5 Like

    Felipe , Slavko , debacle , Marzanna , U


  • 15 May ThurahT

    Fantastic that libpurpl is still useful : ) I hope the bridge works out, not that I have any telegram contacts.

  • chevron_right

    y sin embargo se mueve,

    xikufrancesc · Wednesday, 13 May - 02:59

Nada que envidiar este modelo de Movim sobre los demás.

La agradable sorpresa de como el protocolo #xmpp puede dar mucho mas que la mensajería por si sola. Y sin descartar que todavía se le puede extender y añadir mas funciones por que así lo permite el propio protocolo.

Muy de primera mano quiero seguir este modelo de red, suscripción y participación.

  • chevron_right

    Update Errol: the XMPP Automatic file sender

    jnanar · Sunday, 10 May - 15:00 · 2 minutes

Errol is a file sender that can be used to watch a directory and automatically transfers the new files (or modified ones) with XMPP.

You can find the previous description here .

I recently updated it to V2.0.1. This articles describes the changes since last article.


  • Replaced all the yield from syntax to async/await syntax for asyncio calls
  • Added some options to enable or not the muc/pubsub features. If your XMPP account does not have a proper pubsub service or if you don't want to advertise your file transfer, these functionalities are not mandatory anymore.
  • Moving from aionotify to watchdog . aionotify was not actively developed since 2 years. Even if is not asynchronous, watchdog can be used with hachiko .

Errol should now be usable on Linux, Windows, Mac OS X and FreeBSD because watchdog supports all these operating systems. Note: only Linux has been tested so far.

I also performed small improvements, refactoring and bug fixes.

Getting started

The list of dependencies has been updated but remains quite small.


You can easily install errol with pip.

$ pip install errol

On Archlinux, a PKGBUILD is available in AUR .


The complete list of options is available in the template config file.

  • jid : the jabber account
  • password: the xmpp password
  • pubsub: the pubsub server (publish activity)
  • room: the MUC (chatroom) where errol display information.
  • presence_file: a writable file used to keep track of presences. I use it in a Django Application. 1

The files will be sent by and received by The nicks are the usernames used on the MUC.

Use it

Errol should now be usable with only a simple XMPP account and a directory to watch. If you are interested by the Pubsub feature, don't hesitate to read the previous article . It contains a section to setup a pubsub node, configure it and access it with several tools.


  1. When receiver is online, the file contains '1' and '0' otherwise. It is not super clean but I did not wanted to bring XMPP features in a Django app.
  • Xm chevron_right

    eagle Prototyp

    DebXWoody · / xmpp-messenger · Sunday, 10 May - 06:07 edit

Ich habe gestern einen ersten Prototyp von eagle auf codeberg hochgeladen.

Der Prototyp hat aktuell eine sehr einfache Implementierung von

  • Lesen der Adressen von abook
  • Lesen von VCard Dateien aus einem Verzeichnis
  • Lesen der Informationen aus einem GnuPG Keyring
  • Lesen der Kontakte aus einem XMPP Roster
  • Schreiben einer signierten und verschlüsselten Nachricht via XEP-0373: OpenPGP for XMPP

Mehr Informationen und Screenshots sind im Wiki:

#XMPP #eagle #OpenPGP #gnupg

  • eagle

    Das XMPP eagle Projekt (XEP-0374: OpenPGP for XMPP Instant Messaging (OX) )

  • favorite

    1 Like



  • 11 May debacle

    Eagle oder egale? Egal!

  • 11 May DebXWoody

    Ich habe mich beim programmieren auch schon 2x vertippt :-D

  • Be chevron_right

    # XMPP helping businesses & MIX in Kaidan / berlin-xmpp-meetup · Wednesday, 6 May - 15:34 edit

XMPP helping businesses

This time, we will enjoy a remote talk of Sonny who is a long-time XMPP user and developer about how the XMPP ecosystem (ejabberd, PubSub, xmpp.js, ...) is helping businesses and why as well as how to write XMPP applications with JavaScript.

MIX in Kaidan

We will also have the pleasure to see the implementation of the new MIX group-chat functionality in the cross-platform client Kaidan.

Furthermore we would like to mention, that there was a meet up in April, but we haven't been able to announce it here.

When? Wednesday, 2020-05-13 18:00 CEST (always 2ⁿᵈ Wednesday of every month)

Where? this time online at

See you then!

Or join our non-physical room!

#xmpp #community #freesoftware #berlin #meetup #xmppjs #xmppecosystem #MIX #Kaidan

  • favorite

    2 Like

    Timothée Jaussoin , debacle

  • Lw chevron_right

    Issues with XMPP Server restarts

    Marco Cirillo · / lw-org · Sunday, 3 May - 22:22

We have been finalizing a few fixes, to even long standing bugs, which will also go into the new Metronome release (3.14.0). We're experimenting with the JSON serialization storage, and the new RAM storage backend. Our benchmarks show the server performance has improved quite a bit, right now Movim for example has almost no hiccups.

We apologize for the small downtimes.

#XMPP #Server #Metronome

  • Xm chevron_right

    XMPP eagle

    DebXWoody · / xmpp-messenger · Sunday, 3 May - 17:50 edit

Ich habe dieses Wochenende etwas mit gtk programmiert. Für die UI habe ich glade verwendet. Das lief eigentlich ganz gut.

Ich bin am überlegen, ob man eine Anwendung programmiert die Microblog via XMPP unterstützt, wie es auch bei Movim zum Einsatz kommt, aber auch OpenPGP integriert.

Die Nachrichten könnte man wie eine "E-Mail" aufbauen. Es ist somit mehr etwas für längere Texte anstatt viele kurze Nachrichten wie man es von IMs kennt.

Die GUI könnte auch gleich die Verwendung von OpenPGP etwas erleichtern.

#OpenPGP #XMPP #Movim #GTK #glade

  • favorite

    1 Like