chitchatter is a free, open source collaboration & communication project written in TypeScript and released under GPL-2.0. It has 2,330 GitHub stars, 434 forks and 53 open issues, and was last pushed 12 hours ago. On this registry it ranks #28 of 41 tracked projects in Collaboration & Communication, with 5 head-to-head comparisons available. It gained 1 stars over the last 3 tracked days.

What is chitchatter?

What it is

Chitchatter is a TypeScript web chat application released under GPL-2.0 that provides secure peer-to-peer communication without a required central API server. It lives in the decentralized web-mesh ecosystem, using React, WebRTC, Trystero, WebTorrent, and TURN relays to connect browsers directly. The project is a free, open-source collaboration tool for private conversations, video and audio chats, screen sharing, and file transfer.

The concrete problem it addresses is reliance on central chat services where message content is stored and transmitted through infrastructure controlled by a provider. Chitchatter avoids that model by keeping message content ephemeral and never persisting it to disk on client or server. Basic functionality works without an API server, requiring only GitHub for static assets and public WebTorrent and TURN relay servers.

Key capabilities

  • End-to-end encrypted chat uses WebRTC, while public-key cryptography supports automatic peer verification.
  • Peer-to-peer rooms support multiple peers, limited only by browser peer connection capacity.
  • Public and private rooms use client-side random UUID names, and users can share room URLs through a secure medium.
  • Video and audio chatting, screen sharing, and direct messaging are available inside rooms.
  • File sharing supports unlimited file size transfers, with files encrypted before sending and decrypted by the receiver using the room name as the key.
  • Markdown messages include syntax highlighting, multiline input, and conversation backfilling from peers when a new participant joins.
  • The interface supports dark and light themes and can be embedded into other web applications via an iframe.

Who uses it and how

  • Private two-party or small-group conversations can use a randomly generated room URL shared through a secure medium.
  • Teams that need browser-based audio, video, screen sharing, and direct messaging can use Chitchatter without deploying an API server.
  • Users who want temporary file transfer can send encrypted files directly between browsers, with no server-side storage of message content.
  • Developers or operators can self-host the client-side application with Vite and rely on public WebTorrent and TURN relay servers for basic peer connection.
  • Web applications can embed Chitchatter in an iframe to add ephemeral peer-to-peer chat to an existing interface.

Getting started

Users can open the homepage and join a room to start chatting. Self-hosting is possible with Vite, while basic peer connectivity relies on public WebTorrent and TURN relay servers, with an optional API server for enhanced connectivity.

When to use it — and when not to

Chitchatter is useful when privacy, ephemerality, and serverless browser-to-browser operation matter more than persistent history or managed infrastructure. A self-hoster must provide static assets and accept dependence on public WebTorrent and TURN relay servers, while an optional API server can provide enhanced connectivity. Messages disappear when a peer leaves, room capacity depends on browser connection limits, and reliability can depend on external relay services when direct peer connections are unavailable.

project readme (upstream, from github) — read inline

Chitchatter

Chitchatter logo

Logo provided by @ramyashreeshetty

Chitchatter is a free (as in both price and freedom) communication tool. Designed to be the simplest way to connect with others privately and securely, it is:

  • Fully open source (licensed under GPL v2)
  • Peer-to-peer
    • Whenever possible, otherwise a TURN server is used to ensure reliable peer connection
  • End-to-end encrypted (via WebRTC)
  • Ephemeral
    • Message content is never persisted to disk on either the client or server
  • Decentralized
    • No API server required. Chitchatter works completely without an API server - all that's required for basic functionality is availability of GitHub for static assets, and public WebTorrent and TURN relay servers for establishing peer-to-peer communication. An optional API server is available to provide enhanced connectivity features, but users can always choose to use Chitchatter without it.
  • Embeddable
  • Self-hostable

Chitchatter uses Vite. The secure networking and streaming magic would not be possible without Trystero. File transfer functionality is powered by secure-file-transfer.

Status

  • Known Vulnerabilities

How to use it

Open and join a room to start chatting with anyone else who is in the room. By default, room names are random UUIDs that are generated client-side. To privately communicate with someone, it is recommended to join one of these randomly-generated rooms and share the URL (via the "🔗" button at the top of the page) to whomever you wish to communicate with via a secure medium of your choosing (such as Burner Note or Yopass). Your user name will be presented to you, and it would be good to share that with who you will be chatting with beforehand so they know they're talking to you.

No API server required: Chitchatter works completely without any API server or backend infrastructure. All communication happens directly between your browser and other users' browsers. While an optional API server is available for enhanced connectivity features, you can always use Chitchatter without it.

Features

  • Multiple peers per room (limited only by the number of peer connections your browser supports).
  • Public and private rooms.
  • Video and audio chatting.
  • Screen sharing.
  • Direct messaging.
  • File sharing:
    • Unlimited file size transfers.
    • Files are encrypted prior to sending and decrypted by the receiver (the key is the room name).
  • Embedding into other web apps via iframe.
  • Markdown support via react-markdown.
    • Includes support for syntax highlighting of code.
  • Conversation backfilling from peers when a new participant joins.
  • Multiline message support (hold shift and press enter).
  • Dark and light themes.
  • Automatic peer verification via client-side public-key cryptography.

Anti-features

  • Messages are never persisted to disk. When you leave a peer room, messages are cleared from memory and cannot be retrieved.
  • Chitchatter is an entirely client-side communication app. It uses public WebTorrent servers to establish peer connections and TURN relay servers when direct peer-to-peer connections cannot be established, but there is no Chitchatter API server.
  • No analytics, tracking, or telemetry of any kind.
  • This is a community-driven and unfunded project that makes no money. The users come first and there is no corporate influence or financial interest involved.

Why another chat app?

There is no shortage of user-friendly chat apps available, but they rely on a central service to facilitate communication. It is difficult to trust these central services, as commercial interests and government pressure can compel service operators to work against the best interest of the users. Even when user data is handled in good faith by service operators, the possibility remains that encrypted data held at rest may be decrypted against the user's will.

Chitchatter designs around these risks with a web mesh architecture. There is no central service operator that stores or potentially mishandles communication data. Some services are required to establish an initial connection between peers, but otherwise the app uses direct peer-to-peer communication for everything. Any services that are used by Chitchatter have no association with the project and are publicly available for all to use.

Use cases

Chitchatter offers a private and secure solution for:

  • Organizing groups of people, such as unions or political movements
  • Conveniently moving text or data from one device to another
  • Video chatting with friends and family across operating systems (such as Android and iOS)
  • IT troubleshooting via screen sharing
  • Livestreaming
  • Sharing sensitive information such as passwords
  • Much more!

Note from the developer

💻️ Project status

I consider Chitchatter feature-complete inasmuch it does all the things I personally need it to do. I don't have specific plans to add significant functionality in the future, but I may do so if it seems fun to me at the time. I am committed to fixing any significant bugs that are reported, so please open an issue if you discover one! Aside from that, Chitchatter is effectively in maintenance mode for the foreseeable future.

If you would like a feature to be implemented and are willing to pay a development cost to ensure it gets done, please file a GitHub issue describing the feature and indicate that you are willing to compensate for the work. If you are not willing to pay, please open a GitHub issue regardless. I may implement it if it seems fun to do so, but other members of the community may also step up to implement it via Pull Requests.

I will always make time support Pull Requests from others. If you're willing to put in the work to improve Chitchatter, I am willing to help shepherd that work along and get it shipped.

If you don't agree with the direction of the project, you are welcome to fork Chitchatter and take it in another one.

🏗️ Support and custom development

I'm willing to do paid installations and customizations of Chitchatter for your needs. If you'd like to contract me to make a version of Chitchatter that is custom built for you, please email me at and let me know what you have in mind to get started.


Veracity

The core of Chitchatter's security model is the fact that it is fully open source. You are free (and encouraged) to fully audit the project source code and infrastructure. Not only is the source code available under the terms of the GPL, but all build logs are publicly accessible as well.

If you would like to verify that the app hosted at is the one that is hosted on GitHub, you can use dig:

$ dig chitchatter.im

; <<>> DiG 9.18.1-1ubuntu1.1-Ubuntu <<>> chitchatter.im
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 61332
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;chitchatter.im.                        IN      A

;; ANSWER SECTION:
chitchatter.im.         231     IN      CNAME   jeremyckahn.github.io.
jeremyckahn.github.io.  231     IN      A       185.199.111.153
jeremyckahn.github.io.  231     IN      A       185.199.110.153
jeremyckahn.github.io.  231     IN      A       185.199.109.153
jeremyckahn.github.io.  231     IN      A       185.199.108.153

To examine the static assets that are served to end users, you can audit the gh-pages branch.

Project roadmap

See the full ticket backlog here.

Environments

  • Production environment:
    • Mirror: (note that peers cannot connect acro

readme truncated — read the full docs on github

Frequently asked questions

Is chitchatter free to use?

chitchatter is open source under the GPL-2.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does chitchatter do?

Secure peer-to-peer chat that is serverless, decentralized, and ephemeral

What is chitchatter written in?

chitchatter is primarily written in TypeScript. Its source is publicly available at https://github.com/jeremyckahn/chitchatter, and it has 2,330 GitHub stars.