Tinode Instant Messaging Server
Instant messaging full stack. Backend in pure Go (license GPL 3.0), clients for Android (Java), iOS (Swift), and web (ReactJS), as well as gRPC client support for C++, C#, Go, Java, Node, PHP, Python, Ruby, Objective-C, etc (all clients licensed under Apache 2.0). Wire transport is JSON over websocket (long polling is also available) or protobuf with gRPC.
This is beta-quality software: feature-complete and stable but probably with a few bugs or missing features. Follow instructions to install and run or use one of the cloud services below. Read API documentation.
Tinode is not XMPP/Jabber. It is not compatible with XMPP. It's meant as a replacement for XMPP. On the surface, it's a lot like open source WhatsApp or Telegram.

Why?
The promise of XMPP was to deliver federated instant messaging: anyone would be able to spin up an IM server capable of exchanging messages with any other XMPP server in the world. Unfortunately, XMPP never delivered on this promise. Instant messengers are still a bunch of incompatible walled gardens, similar to what AoL of the late 1990s was to the open Internet.
The goal of this project is to deliver on XMPP's original vision: create a modern open platform for federated instant messaging with an emphasis on mobile communication. A secondary goal is to create a decentralized IM platform that is much harder to track and block by the governments.
An explicit NON-goal: we are not building yet another Slack replacement.
Installing and running
See general instructions or docker-specific instructions.
Getting support
- Read API documentation and FAQ. Read configuration instructions contained in the
tinode.conf file.
- For support, general questions, discussions post to https://groups.google.com/d/forum/tinode.
- For bugs and feature requests open an issue.
- Use https://tinode.co/contact for commercial inquiries.
Helping out