Repolode
tinode

tinode/chat

Self-hostable instant messaging server in Go with native Android, iOS and web clients, plus JSON/websocket and gRPC APIs.

Open-source alternative to:WhatsAppTelegram

Stars
13,555
Forks
2,092
Open issues
42
Last commit
13 days ago

What is it?

Tinode is a full-stack instant messaging system. The backend is written in pure Go and ships with clients for Android (Java), iOS (Swift) and the web (React.js), along with a scriptable command-line client. Clients talk to the server over JSON via websocket or long polling, or over protobuf with gRPC, and bindings exist for many languages.

The project aims to be an open alternative to closed messengers in the style of WhatsApp or Telegram, with federation listed as a planned feature rather than something currently available. Supported features include one-on-one and group chats, voice and video calls, read-only channels, message editing, replies and forwarding, and synchronization of chats across devices.

Operators can choose among MySQL, PostgreSQL and MongoDB for storage, store large files on the local file system or Amazon S3, and add custom authentication backends and server-side plugins. The project is described as beta-quality software.

Key features

  • 01Native Android, iOS and web clients, plus a scriptable command-line client.
  • 02One-on-one and group chats, voice and video calls, and read-only channels.
  • 03Message editing, replies, forwarding, pinned chats and cross-device sync.
  • 04JSON over websocket or protobuf with gRPC, with bindings for many languages.
  • 05Choice of MySQL, PostgreSQL or MongoDB storage, with large files on local disk or S3.
  • 06Custom authentication backends and server-side plugins for moderation or chatbots.

Use cases

  • Running a private, self-hosted messenger for a team, family or community.
  • Building a chat product on top of a server with well-documented client APIs.
  • Creating chatbots that use forms and templated responses.
  • Integrating messaging into an existing system through gRPC bindings.

Quick start

  1. 1

    Read the general install instructions in INSTALL.md

  2. 2

    Or follow the Docker-specific instructions in docker/README.md

Things to know

  • The README describes this as beta-quality software that may have bugs or missing features.
  • The server is licensed under GPL 3.0, a copyleft license that may restrict some commercial uses.
  • RethinkDB database support is deprecated and will be dropped in 2027.

In collections

Topics

FAQ

What is chat?
Self-hostable instant messaging server in Go with native Android, iOS and web clients, plus JSON/websocket and gRPC APIs. Tinode is a full-stack instant messaging system. The backend is written in pure Go and ships with clients for Android (Java), iOS (Swift) and the web (React.js), along with a scriptable command-line client. Clients talk to the server over JSON via websocket or long polling, or over protobuf with gRPC, and bindings exist for many languages.
Is chat free to use? What license does it have?
chat is open source under the GPL-3.0 license. Check the license terms before using it in commercial products.
Is chat still maintained?
Actively maintained. The last commit to chat was on Oct 25, 2026.
What can I use chat for?
Running a private, self-hosted messenger for a team, family or community. Building a chat product on top of a server with well-documented client APIs. Creating chatbots that use forms and templated responses. Integrating messaging into an existing system through gRPC bindings.
How do I install chat?
Read the general install instructions in INSTALL.md Or follow the Docker-specific instructions in docker/README.md
Where can I get chat?
The source code and installation instructions are on GitHub: https://github.com/tinode/chat

Summary generated by AI from the project's README. GitHub stats refresh daily.

Related projects