explaingit

tinode/chat

13,297GoAudience · ops devopsComplexity · 4/5LicenseSetup · moderate

TLDR

A self-hostable instant messaging platform similar to WhatsApp or Telegram, with mobile and web clients, group chats, video calls, and full control over your own server.

Mindmap

mindmap
  root((repo))
    What it does
      Self-hosted messaging
      Group and 1-on-1 chats
      Video and voice calls
      Broadcast channels
    Client Apps
      Android app
      iOS app
      Web React app
      Command-line tool
    Tech Stack
      Go server
      gRPC API
      Docker support
    Use Cases
      Private messaging server
      Chatbot platform
      Anti-censorship comms
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Host your own private messaging server that you fully control, as an open-source alternative to WhatsApp or Telegram.

USE CASE 2

Build a chat feature into your app using the gRPC API, with client libraries available in Python, Node, C++, and Java.

USE CASE 3

Create broadcast channels for one-to-many announcements with unlimited read-only subscribers.

USE CASE 4

Integrate chatbot interactions using rich messages that include inline images, file attachments, and embedded forms.

Tech stack

GoJavaSwiftReactgRPCDocker

Getting it running

Difficulty · moderate Time to first run · 1h+

Docker images are provided, requires configuring a database and running the Go server before any client can connect.

Free to use and modify, but any changes you distribute must also be released under the GPL 3.0 open-source license.

In plain English

Tinode is a self-hosted instant messaging platform. The server is written in Go and licensed under GPL 3.0. Client apps are available for Android (written in Java), iOS (written in Swift), and the web (React.js), as well as a scriptable command-line tool. The README describes it as similar to an open-source version of WhatsApp or Telegram. The project was built in response to the shortcomings of XMPP, an older messaging standard that was supposed to allow any server to exchange messages with any other server but never worked reliably in practice. Tinode aims to deliver that same goal: a modern federated messaging platform where anyone can run their own server. A stated secondary goal is to make it harder for governments to monitor or block communications. The README is explicit that this is not meant to be a workplace tool or Slack replacement. Core features include one-on-one and group messaging, video and voice calls, voice messages, and broadcast channels with unlimited read-only subscribers. Messages can contain rich formatting (similar to Markdown), inline images, file attachments, and embedded forms for chatbot interactions. Chats sync across all a user's devices, message delivery and read receipts are shown, and typing notifications are supported. Users can forward and reply to messages, edit sent messages, and pin conversations. Access control is described as granular, allowing different permissions for different actions within a group or channel. The server supports third-party clients via gRPC, which is a communication protocol with support for many languages including Python, Node, C++, and Java. A live public service is available at web.tinode.co, and a sandbox environment with test accounts is at sandbox.tinode.co. Docker images are provided for self-hosting. Installation instructions and API documentation are in separate files within the repository.

Copy-paste prompts

Prompt 1
I want to self-host Tinode on a Linux server using Docker. Walk me through pulling the Docker image, configuring the server, and connecting the web client.
Prompt 2
How do I create a Tinode group chat with different permission levels for admins versus regular members?
Prompt 3
I want to build a Python chatbot for Tinode that automatically replies to messages using the gRPC API. Show me how to connect and send a reply.
Prompt 4
How do I set up a Tinode broadcast channel that lets me send announcements to unlimited subscribers who can read but not reply?
Open on GitHub → Explain another repo

← tinode on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.