open source · GPL-3.0 · self-hosted

An ultralight messenger, batteries included.

One command puts rooms, DMs, files and search on your own $5 VPS. Link it with other servers and bridge your Telegram groups when you're ready.

web client

60KB

~49 KB JavaScript ~11 KB CSS, gzipped. Less-used screens load when you open them.

server

1binary

PocketBase and one SQLite file. No database server, no queue.

android

3MB

Native Kotlin and Jetpack Compose. No WebView.

features

Small footprint. Full-size chat.

Messages, edits, reactions and unread counts update live across every tab and device you're signed in on.

Rooms and DMs

Public rooms anyone can create, private rooms for the people you add, and direct messages between any two people.

Files and media

Send up to 10 files per message, 20 MB each. Open images and videos full-size, or browse everything a room has shared in its media grid.

Replies, forwards, reactions

Reply with a quote that jumps back to the original. Forward up to 50 messages at once. Add as many reactions as you like.

Full history and search

Scroll back to the first message of any room. Search ignores case and takes you straight to the message, however old it is.

on a $5 vps

100+

people chatting nonstop
on one CPU and 1 GB of RAM.

  • $5/mo
  • 1 vCPU
  • 1 GB RAM
  • ~40 ms per send
How it was measured

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. Their collections work like your own, and new items are counted and highlighted.
  • No duplicates. Attaching from a collection points to the original file instead of uploading a copy.

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.

  • Nothing else to run. One process and one SQLite file, so a $5 VPS is plenty.
  • HTTPS out of the box. Give it a domain and it fetches a Let's Encrypt certificate on its own.
  • Backups from the admin UI. Schedule them and, optionally, send them to S3-compatible storage.
  • Make it yours. Set your own title and logo, and choose open signups or invite-only.

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

Read the getting-started guide →
# 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 that does everything the web app does, and a web app you can install everywhere else.

  • Actually native. Kotlin and Jetpack Compose instead of a wrapped web page, which is how it stays at 3 MB.
  • Many accounts, many servers. Sign in to as many Chirkle servers as you like, side by side.
  • Notifications without Google. The Android app and the PWA both notify you of DMs and replies, with no third-party push service.
  • Installable PWA. Add it to your home screen or desktop. The app itself loads even when you're offline.

linked servers · 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 servers. Two servers share the rooms both admins agree on. Everyone stays signed in at home, and messages, edits, reactions and files sync both ways.
  • DMs across servers. Message ann@b.example just like someone on your own server.
  • Telegram bridge. Your own bot links a room to one or more Telegram groups. The conversation carries over in both directions, with names and pictures intact.
How to link servers and bridge Telegram →

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 immediately.

Try it before you host it.

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

or start your own: npx chirkle