A chat server built on uWebSockets.js that offers an alternative to XMPP, with a Node.js backend, MongoDB and Redis.
- 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
Read the general install instructions in INSTALL.md
- 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
Open-source instant messaging server in Go that developers integrate into their own apps, with SDK, REST API and webhooks.
Go backend for OCTO, an open workplace where humans and AI agents collaborate, with REST and WebSocket APIs and WuKongIM-based real-time messaging.
Self-hosted team chat running on Cloudflare Workers, with realtime messaging, a two-way Telegram bridge, and server-side encrypted messages and files.
A lightweight instant messaging backend written in pure Go, supporting private and room broadcast messages over WebSocket and TCP.
A Java XMPP real-time collaboration server for instant messaging, licensed under Apache 2.0.