[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-4945":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":23,"hasPages":23,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":45,"readmeContent":46,"aiSummary":47,"trendingCount":16,"starSnapshotCount":16,"syncStatus":48,"lastSyncTime":49,"discoverSource":50},4945,"chat","tinode\u002Fchat","tinode","Instant messaging platform. Backend in Go. Clients: Swift iOS, Java Android, JS webapp, scriptable command line; chatbots","",null,"Go",13351,2057,301,36,0,3,19,58,16,44.94,"GNU General Public License v3.0",false,"master",[5,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44],"chat-application","chatapp","chatbots","chatserver","collaboration","go","golang","instant-messaging","messaging","messaging-api","messenger","telegram","video-call","video-chat","video-conferencing","webchat-server","webrtc","whatsapp","xmpp","2026-06-12 02:01:06","# Tinode Instant Messaging Server\n\n\u003Cimg src=\"docs\u002Flogo.svg\" align=\"left\" width=128 height=128> Instant messaging full stack. Backend in pure [Go](http:\u002F\u002Fgolang.org) (license [GPL 3.0](http:\u002F\u002Fwww.gnu.org\u002Flicenses\u002Fgpl-3.0.en.html)), clients for Android (Java), iOS (Swift), and web (ReactJS), as well as [gRPC](https:\u002F\u002Fgrpc.io\u002F) client support for C++, C#, Go, Java, Node, PHP, Python, Ruby, Objective-C, etc (all clients licensed under [Apache 2.0](http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0)). Wire transport is JSON over websocket (long polling is also available) or [protobuf](https:\u002F\u002Fdevelopers.google.com\u002Fprotocol-buffers\u002F) with gRPC.\n\nThis is beta-quality software: feature-complete and stable but probably with a few bugs or missing features. Follow [instructions](INSTALL.md) to install and run or use one of the cloud services below. Read [API documentation](docs\u002FAPI.md).\n\nTinode is *not* XMPP\u002FJabber. 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.\n\n\u003Ca href=\"https:\u002F\u002Fapps.apple.com\u002Fus\u002Fapp\u002Ftinode\u002Fid1483763538\">\u003Cimg src=\"docs\u002Fapp-store.svg\" height=36>\u003C\u002Fa> \u003Ca href=\"https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=co.tinode.tindroidx\">\u003Cimg src=\"docs\u002Fplay-store.svg\" height=36>\u003C\u002Fa> \u003Ca href=\"https:\u002F\u002Fweb.tinode.co\u002F\">\u003Cimg src=\"docs\u002Fweb-app.svg\" height=36>\u003C\u002Fa>\n\n## Why?\n\nThe promise of [XMPP](http:\u002F\u002Fxmpp.org\u002F) 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.\n\nThe 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.\n\nAn explicit NON-goal: we are not building yet another Slack replacement.\n\n## Installing and running\n\nSee [general instructions](.\u002FINSTALL.md) or [docker-specific instructions](.\u002Fdocker\u002FREADME.md).\n\n## Getting support\n\n* Read [API documentation](docs\u002FAPI.md) and [FAQ](docs\u002Ffaq.md). Read configuration instructions contained in the [`tinode.conf`](.\u002Fserver\u002Ftinode.conf) file.\n* For support, general questions, discussions post to [https:\u002F\u002Fgroups.google.com\u002Fd\u002Fforum\u002Ftinode](https:\u002F\u002Fgroups.google.com\u002Fd\u002Fforum\u002Ftinode).\n* For bugs and feature requests [open an issue](https:\u002F\u002Fgithub.com\u002Ftinode\u002Fchat\u002Fissues\u002Fnew\u002Fchoose).\n* Use https:\u002F\u002Ftinode.co\u002Fcontact for commercial inquiries.\n\n## Helping out\n\n* If you appreciate our work, please help spread the word! Sharing on Reddit, HN, and other communities helps more than you think.\n* Consider buying paid support: https:\u002F\u002Ftinode.co\u002Fsupport.html\n* If you are a software developer, send us your pull requests with bug fixes and new features.\n* If you use the app and discover bugs or missing features, let us know by filing bug reports and feature requests. Vote for existing [feature requests](https:\u002F\u002Fgithub.com\u002Ftinode\u002Fchat\u002Fissues?q=is%3Aissue+is%3Aopen+sort%3Areactions-%2B1-desc+label%3A%22feature+request%22) you find most valuable.\n* If you speak a language other than English, [translate](docs\u002Ftranslations.md) the apps into your language. You may also review and improve existing translations.\n* If you are a UI\u002FUX expert, help us polish the app UI.\n* Use it: install it for your colleagues or friends at work or at home.\n\n## Public service\n\nA [public Tinode service](https:\u002F\u002Fweb.tinode.co\u002F) is available. You can use it just like any other instant messenger. Keep in mind that demo accounts present in [sandbox](https:\u002F\u002Fsandbox.tinode.co\u002F) are not available in the public service. You must register an account using valid email in order to use the service.\n\n### Web\n\nTinodeWeb, a single page web app, is available at https:\u002F\u002Fweb.tinode.co\u002F ([source](https:\u002F\u002Fgithub.com\u002Ftinode\u002Fwebapp\u002F)). See screenshots below.\n\n### Android\n\n[Tinode for Android](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=co.tinode.tindroidx) a.k.a Tindroid is stable and functional ([source](https:\u002F\u002Fgithub.com\u002Ftinode\u002Ftindroid)). See the screenshots below. A [debug APK](https:\u002F\u002Fgithub.com\u002Ftinode\u002Ftindroid\u002Freleases\u002Flatest) is also provided for convenience.\n\n### iOS\n\n[Tinode for iOS](https:\u002F\u002Fapps.apple.com\u002Fus\u002Fapp\u002Ftinode\u002Fid1483763538) a.k.a. Tinodios is stable and functional ([source](https:\u002F\u002Fgithub.com\u002Ftinode\u002Fios)). See the screenshots below.\n\n\n## Demo\u002FSandbox\n\nA sandboxed demo service is available at https:\u002F\u002Fsandbox.tinode.co\u002F.\n\nLog in as one of `alice`, `bob`, `carol`, `dave`, `frank`. Password is `\u003Clogin>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 `\u003Clogin>@example.com`, e.g. `alice@example.com`, phones are `+17025550001` through `+17025550009`.\n\nWhen 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.\n\n### Sandbox Notes\n\n* The sandbox server is reset (all data wiped) every night at 3:15am Pacific time. An error message `User not found or offline` means the server was reset while you were connected. If you see it on the web, reload and relogin. On Android log out and re-login. If the database was changed, delete the app then reinstall.\n* Sandbox user `Tino` is a [basic chatbot](.\u002Fchatbot) which responds with a [random quote](http:\u002F\u002Ffortunes.cat-v.org\u002F) to any message.\n* As generally accepted, when you register a new account you are asked for an email address. The server will send an email with a verification code to that address and you can use it to validate the account. To make things easier for testing, the server will also accept `123456` as a verification code. Remove line `\"debug_response\": \"123456\"` from `tinode.conf` to disable this option.\n* The sandbox server is configured to use [ACME](https:\u002F\u002Fletsencrypt.org\u002F) TLS [implementation](https:\u002F\u002Fgodoc.org\u002Fgolang.org\u002Fx\u002Fcrypto\u002Facme) with hard-coded requirement for [SNI](https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FServer_Name_Indication). If you are unable to connect then the most likely reason is your TLS client's missing support for SNI. Use a different client.\n* The default web app loads a single minified javascript bundle and minified CSS. The un-minified version is also available at https:\u002F\u002Fsandbox.tinode.co\u002Findex-dev.html\n* [Docker images](https:\u002F\u002Fhub.docker.com\u002Fu\u002Ftinode\u002F) with the same demo are available.\n* You are welcome to test your client software against the sandbox, hack it, etc. No DDoS-ing though please.\n\n## Features\n\n### Supported\n\n* Multiple native platforms:\n  * [Android](https:\u002F\u002Fgithub.com\u002Ftinode\u002Ftindroid\u002F) (Java)\n  * [iOS](https:\u002F\u002Fgithub.com\u002Ftinode\u002Fios) (Swift)\n  * [Web](https:\u002F\u002Fgithub.com\u002Ftinode\u002Fwebapp\u002F) (React.js)\n  * Scriptable [command line](tn-cli\u002F) (Python)\n* User features:\n  * One-on-one and group messaging.\n  * Video and voice calls. Voice messages.\n  * Channels with unlimited number of read-only subscribers.\n  * All chats are synchronized across all devices.\n  * Granular access control with permissions for various actions.\n  * User search\u002Fdiscovery.\n  * Rich formatting of messages markdown-style: \\*style\\* &rarr; **style**, with inline images, videos, file attachments.\n  * Forms and templated responses suitable for chatbots.\n  * Verified\u002Fstaff\u002Funtrusted account markers.\n  * Leave notes to self, bookmark (save) messages.\n  * Message status notifications: message delivery to server; received and read notifications; typing notifications.\n  * Most recent message preview in contact list.\n  * Server-generated presence notifications for people, group chats.\n  * Forwarding and replying to messages.\n  * Editing sent messages.\n  * Pinned chats and messages.\n  * Customizable message backgrounds (wallpapers).\n  * Light\u002Fdark\u002Fsystem UI themes.\n* Administration:\n  * Granular access control with permissions for various actions.\n  * Support for custom authentication backends.\n  * Ability to block unwanted communication server-side.\n  * Anonymous users (important for use cases related to tech support over chat).\n  * Plugins to extend functionality, for example, to support moderation or chatbots.\n  * Scriptable [command-line tool](tn-cli\u002F) for server administration.\n* Performance, reliability and development:\n  * Sharded clustering with failover.\n  * Storage and out of band transfer of large objects like images or document files using local file system or Amazon S3 (other storage systems can be supported with [media handlers](https:\u002F\u002Fgithub.com\u002Ftinode\u002Fchat\u002Fblob\u002Fmaster\u002Fserver\u002Fmedia\u002Fmedia.go#L21)).\n  * JSON or [protobuf version 3](https:\u002F\u002Fdevelopers.google.com\u002Fprotocol-buffers\u002F) wire protocols.\n  * Bindings for various programming languages:\n    * Javascript with no external dependencies.\n    * Java with dependencies on [Jackson](https:\u002F\u002Fgithub.com\u002FFasterXML\u002Fjackson), [Java-Websocket](https:\u002F\u002Fgithub.com\u002FTooTallNate\u002FJava-WebSocket), [ICU4J](https:\u002F\u002Fgithub.com\u002Funicode-org\u002Ficu). Suitable for Android but with no Android SDK dependencies.\n    * Swift with no external dependencies.\n    * C\u002FC++, C#, Go, Python, PHP, Ruby and many other languages using [gRPC](https:\u002F\u002Fgrpc.io\u002Fdocs\u002Flanguages\u002F).\n  * Choice of a database backend. Other databases can be added by writing [adapters](server\u002Fdb\u002Fadapter.go).\n    * MySQL (and MariaDB, Percona as long as they remain SQL and wire protocol compatible)\n    * PostgreSQL\n    * MongoDB\n    * [RethinkDB](http:\u002F\u002Frethinkdb.com\u002F). Support is deprecated and will be dropped in 2027 because RethinkDB is no longer being developed (unless its development resumes).\n\n### Planned\n\n* [Federation](https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FFederation_(information_technology)).\n* Location and contacts sharing.\n* Previews of attached documents, links.\n* Recording video messages.\n* Video\u002Faudio broadcasting.\n* Group video\u002Faudio calls.\n* Attaching music\u002Faudio other than voice messages.\n* Different levels of message persistence (from strict persistence to \"store until delivered\" to purely ephemeral messaging).\n* Message encryption at rest.\n* End to end encryption with [OTR](https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FOff-the-Record_Messaging) for one-on-one messaging and undecided method for group messaging.\n* Full text search in messages.\n\n### Translations\n\nAll client software has support for [internationalization](docs\u002Ftranslations.md). The following translations are provided:\n\n| Language | Server | Webapp | Android | iOS |\n| --- | :---: | :---: | :---: | :---: |\n| English | &check; | &check; | &check; | &check; |\n| Arabic |   | &check; |   |   |\n| Chinese simplified | &check; | &check; | &check; | &check; |\n| Chinese traditional | &check; | &check; | &check; | &check; |\n| French | &check; | &check; | &check; |   |\n| German |   | &check; | &check; |   |\n| Hindi |   |   | &check; |   |\n| Italian |   | &check; | &check; | &check; |\n| Korean |   | &check; | &check; |   |\n| Portuguese | &check; |   | &check; |   |\n| Romanian |   | &check; | &check; |   |\n| Russian | &check; | &check; | &check; | &check; |\n| Spanish | &check; | &check; | &check; | &check; |\n| Thai |   | &check; |   |   |\n| Ukrainian | &check; | &check; | &check; | &check; |\n| Vietnamese | &check; | &check; |   |   |\n\nMore translations are [welcome](docs\u002Ftranslations.md). In addition to languages listed above, particularly interested in Bengali, Indonesian, Urdu, Japanese, Turkish, Persian.\n\n## Third-Party\n\n### Projects\n\n* [Arango DB adapter](https:\u002F\u002Fgithub.com\u002Fgfxlabs\u002Fchat\u002Ftree\u002Fmaster\u002Fserver\u002Fdb\u002Farango) (outdated)\n* [DynamoDB adapter](https:\u002F\u002Fgithub.com\u002Friandyrn\u002Fchat\u002Ftree\u002Fmaster\u002Fserver\u002Fdb\u002Fdynamodb) (outdated)\n\n### Licenses\n\n* Demo avatars and some other graphics are from https:\u002F\u002Fwww.pexels.com\u002F under [CC0 license](https:\u002F\u002Fwww.pexels.com\u002Fphoto-license\u002F) and https:\u002F\u002Fpixabay.com\u002F under their [license](https:\u002F\u002Fpixabay.com\u002Fservice\u002Flicense\u002F).\n* Web and Android background patterns are from http:\u002F\u002Fsubtlepatterns.com\u002F under [CC BY-SA 3.0](https:\u002F\u002Fcreativecommons.org\u002Flicenses\u002Fby-sa\u002F3.0\u002F) license.\n* Android icons are from https:\u002F\u002Fmaterial.io\u002Ftools\u002Ficons\u002F under [Apache 2.0](https:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0.html) license.\n\n## Screenshots\n\n### [Android](https:\u002F\u002Fgithub.com\u002Ftinode\u002Ftindroid\u002F)\n\n\u003Cp align=\"center\">\n\u003Cimg src=\"docs\u002Fandroid-contacts.png\" alt=\"Android screenshot: list of chats\" width=250 \u002F>\n\u003Cimg src=\"docs\u002Fandroid-chat.png\" alt=\"Android screenshot: one conversation\" width=250 \u002F>\n\u003Cimg src=\"docs\u002Fandroid-video-call.png\" alt=\"Android screenshot: video call\" width=250 \u002F>\n\u003C\u002Fp>\n\n### [iOS](https:\u002F\u002Fgithub.com\u002Ftinode\u002Fios)\n\n\u003Cp align=\"center\">\n\u003Cimg src=\"docs\u002Fios-contacts.png\" alt=\"iOS screenshot: list of chats\" width=250 \u002F> \u003Cimg src=\"docs\u002Fios-chat.png\" alt=\"iOS screenshot: one conversation\" width=250 \u002F> \u003Cimg src=\"docs\u002Fios-video-call.png\" alt=\"iOS screenshot: video call\" width=\"250\" \u002F>\n\u003C\u002Fp>\n\n### [Desktop Web](https:\u002F\u002Fgithub.com\u002Ftinode\u002Fwebapp\u002F)\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"docs\u002Fweb-desktop.jpg\" alt=\"Desktop web: full app\" width=810 \u002F>\n\u003C\u002Fp>\n\n### [Mobile Web](https:\u002F\u002Fgithub.com\u002Ftinode\u002Fwebapp\u002F)\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"docs\u002Fweb-mob-contacts.png\" alt=\"Mobile web: contacts\" width=250 \u002F> \u003Cimg src=\"docs\u002Fweb-mob-chat.png\" alt=\"Mobile web: chat\" width=250 \u002F> \u003Cimg src=\"docs\u002Fweb-mob-video-call.png\" alt=\"Mobile web: topic info\" width=250 \u002F>\n\u003C\u002Fp>\n\n\n#### SEO Strings\n\nWords 'chat' and 'instant messaging' in Chinese, Russian, Persian and a few other languages.\n\n* 聊天室 即時通訊\n* чат мессенджер\n* インスタントメッセージ\n* 인스턴트 메신저\n* پیام رسان فوری\n* تراسل فوري\n* فوری پیغام رسانی\n* Nhắn tin tức thời\n* anlık mesajlaşma sohbet\n* mensageiro instantâneo\n* pesan instan\n* mensajería instantánea\n* চ্যাট ইন্সট্যান্ট মেসেজিং\n* चैट त्वरित संदेश\n* তাৎক্ষণিক বার্তা আদান প্রদান\n","Tinode 是一个即时通讯平台，后端使用 Go 语言开发。该项目提供多种客户端支持，包括 iOS（Swift）、Android（Java）和 Web 应用（ReactJS），以及支持 gRPC 的 C++、C#、Go、Java 等多语言客户端。Tinode 使用 JSON over WebSocket 或 Protobuf 与 gRPC 作为数据传输协议，具备视频通话功能。它旨在创建一个现代化的、开放的联邦即时通讯平台，强调移动端通信，并且设计为难以被政府追踪和封锁的去中心化 IM 平台。适用于需要构建自定义即时通讯解决方案或寻求替代 XMPP\u002FJabber 方案的场景。",2,"2026-06-11 03:01:40","top_language"]