open source · GPL-3.0 · self-hosted

An ultralight messenger, batteries included.

Run your own server in minutes, even on the cheapest VPS. Link it with other servers, bridge your Telegram groups, and keep your conversations yours.

~49 KB
JavaScript, gzipped
~11 KB
CSS, gzipped
1 binary
PocketBase + SQLite
3 MB
native Android app

features

Everything a chat needs. Nothing it doesn't.

Messages, edits, reactions and unread counts update live on every tab and device. Nothing is missing, and nothing gets in the way.

Rooms and DMs

Public rooms anyone can create, private ones for a chosen few, and direct messages between any two people.

Files and media

Up to 10 files of 20 MB per message, with a full-size viewer for images and videos and a media grid for every room.

Replies, forwards, reactions

Quote any message and jump back to it. Forward up to 50 messages at once. React with as many emoji as you like.

Full history and search

Scroll back to the first message of any room. Search every word, in any case, and land on the result however far back it is.

collections

Keep the good stuff in one place.

Save any image or video from a chat into your own collections, then attach it to a message in a couple of taps.

  • Public or private. A moodboard to share, or a stash of reaction GIFs just for you.
  • Subscribe to other people's. Use their collections as your own, with a count of what's new and the new items highlighted.
  • Nothing is copied. Media attached from a collection links back to where it came from.

self-hosting

Your server, up in one command.

Chirkle is an npm package. It brings the web app with it and fetches PocketBase on the first run, so there is nothing to clone and nothing to build.

  • One binary, one SQLite file. No database server and no message queue, so it fits on the cheapest VPS.
  • HTTPS out of the box. Give it a domain and it gets a Let's Encrypt certificate by itself.
  • Backups from the admin UI. Put them on a schedule and, if you like, send them to S3-compatible storage.
  • Make it yours. Use your own title and logo, and open signups or keep them invite-only.

Needs Node.js 22+ and npm 11+ on Linux or macOS. Prefer containers? Push to Dokku with the included Dockerfile.

# try it on your machine
$ npx chirkle
  → http://127.0.0.1:8090

# on a server, with HTTPS
$ npx chirkle chat.example.com

# the admin account
$ npx chirkle superuser upsert \
    you@example.com <password>

android · pwa

In your pocket, without the bloat.

A native Android app with the same features as the web, and a web app you can install on any device.

  • A 3 MB native app. It's written in Kotlin and Jetpack Compose, with no WebView.
  • Many accounts, many servers. Sign in to as many Chirkle servers as you like, side by side.
  • Notifications without Google. Both apps notify you of DMs and replies with no push service involved.
  • Installable PWA. Add it to your home screen or desktop. It opens offline to its shell.
Download the APK →

linked instances · telegram

Talk beyond your own server.

Your server doesn't have to be an island. Pair it with other Chirkle servers, and bring your Telegram groups along.

  • Linked instances. Two servers share the rooms both admins choose. Messages, edits, replies, reactions and files flow both ways.
  • DMs across servers. Write to ann@b.example as you would to anyone at home.
  • Telegram bridge. A bot links rooms to Telegram groups. Messages, replies, edits and files go both ways, with names and pictures intact.

room access · moderation

Open where you want it, closed where you don't.

Each room's creator decides who can read it and who can post in it. Moderators keep the whole server tidy.

  • Private, Public or Open Air. Open Air rooms can be read by anyone, with no account needed.
  • Choose who posts. Let everyone talk, or just a few people while the rest read and react. Archive a room to keep its history read-only.
  • Anonymous rooms. Messages show the room's name instead of their author's.
  • Moderators. They can delete any message, change any room's access, archive rooms and ban accounts. Bans take effect at once.

See it for yourself.

Jump into the demo server and send a message. When you like it, run your own.

or start your own: npx chirkle