chat README

The project's README from github.com/tinode/chat. As one markdown file: README.md.

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

Helping out

Public service

A public Tinode service is available. You can use it just like any other instant messenger. Keep in mind that demo accounts present in sandbox are not available in the public service. You must register an account using valid email in order to use the service.

Web

TinodeWeb, a single page web app, is available at https://web.tinode.co/ (source). See screenshots below.

Android

Tinode for Android a.k.a Tindroid is stable and functional (source). See the screenshots below. A debug APK is also provided for convenience.

iOS

Tinode for iOS a.k.a. Tinodios is stable and functional (source). See the screenshots below.

Demo/Sandbox

A sandboxed demo service is available at https://sandbox.tinode.co/.

Log in as one of alice, bob, carol, dave, frank. Password is <login>123, e.g. login for alice is alice123. You can discover other users by email or phone by prefixing them with email: or tel: respectively. Emails are <login>@example.com, e.g. [email protected], phones are +17025550001 through +17025550009.

When you register a new account you are asked for an email address to send validation code to. For demo purposes you may use 123456 as a universal validation code. The code you get in the email is also valid.

Sandbox Notes

Features

Supported

Planned

Translations

All client software has support for internationalization. The following translations are provided:

Language Server Webapp Android iOS
English ✓ ✓ ✓ ✓
Arabic ✓
Chinese simplified ✓ ✓ ✓ ✓
Chinese traditional ✓ ✓ ✓ ✓
French ✓ ✓ ✓
German ✓ ✓
Hindi ✓
Indonesian ✓ ✓
Italian ✓ ✓ ✓
Korean ✓ ✓
Portuguese ✓ ✓ ✓
Romanian ✓ ✓
Russian ✓ ✓ ✓ ✓
Spanish ✓ ✓ ✓ ✓
Thai ✓
Ukrainian ✓ ✓ ✓ ✓
Vietnamese ✓ ✓

More translations are welcome. In addition to languages listed above, particularly interested in Bengali, Urdu, Japanese, Turkish, Persian.

Third-Party

Projects

Licenses

Screenshots

Android

Android screenshot: list of chats Android screenshot: one conversation Android screenshot: video call

iOS

iOS screenshot: list of chats iOS screenshot: one conversation iOS screenshot: video call

Desktop Web

Desktop web: full app

Mobile Web

Mobile web: contacts Mobile web: chat Mobile web: topic info

SEO Strings

Words 'chat' and 'instant messaging' in Chinese, Russian, Persian and a few other languages.

chat (tinode/chat)

Searching Database…

13.5K ·GitHub
What is this?Tinode is an open-source instant messaging platform: a chat server written in Go with native clients for Android, iOS, web and a scriptable command line — like a self-hosted WhatsApp or Telegram, and explicitly not another Slack replacement.
Is it a single app or a server with separate clients?A server with separate clients: TinodeWeb (React single-page app), Tindroid for Android, Tinodios for iOS, a Python command-line client, plus gRPC bindings for C++, C#, Go, Java, Node, PHP, Python, Ruby and more.
How do I try it before self-hosting?Use the public service or the sandbox demo: log in to the web app as alice (login alice123, password 123) and chat with other demo users or the Tino bot. For your own instance, follow the install instructions or run the Docker image.
What do I need to run my own server?Just the Go backend plus one supported database: MySQL (or MariaDB/Percona), PostgreSQL or MongoDB. RethinkDB also works, but its support is deprecated and will be dropped in 2027.
Is it production-ready?It is beta-quality: feature-complete and stable, but expect occasional bugs or missing features. Federation, end-to-end encryption and full-text search are still listed as planned, not shipped.
Does it work with XMPP servers like Jabber?No — Tinode is not XMPP-compatible. It is meant as a replacement for XMPP, aiming to deliver the original XMPP vision of a modern open messaging platform with an emphasis on mobile communication.
Does it support end-to-end encryption?Not yet. End-to-end encryption with OTR for one-on-one chats and message encryption at rest are on the roadmap under Planned, so today security relies on transport-level encryption.
Which languages are the apps translated into?All clients are internationalized, with translations covering English, Arabic, Chinese (simplified and traditional), French, German, Hindi, Indonesian, Italian, Korean, Portuguese, Romanian, Russian, Spanish, Thai, Ukrainian and Vietnamese; the authors especially want Bengali, Urdu, Japanese, Turkish and Persian.
Where are shared images and files stored?Large objects like images and documents are transferred and stored out of band on the local file system or Amazon S3, and other storage systems can be plugged in via media handlers.
Does it scale beyond a single server?Yes — the backend supports sharded clustering with failover, so you can run a cluster of servers instead of one monolithic instance.
Creator
tinode
Size
69.9 MB
Stars
13.5K
Age
11y
Commits · 90 Days