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.

View on GitHub Run it locally
A room in Chirkle: the room list with unread counts on the left; messages with avatars, a reply, a photo and emoji reactions on the right
~47 KB
JavaScript, gzipped
~7 KB
CSS, gzipped
1 binary
PocketBase + SQLite
3 MB
native Android app

Everything a chat needs. Nothing it doesn't.

Rooms and DMs

Private, public or Open Air rooms anyone can read. Direct messages between any two people.

Live everything

Messages, edits, reactions and unread counts update instantly across tabs and devices.

Full history and search

Scroll back to the first message of any room. Search jumps to a result, however far back.

Files and media

Up to 10 files per message, a full-size image viewer and a media grid for every room.

Telegram bridge

Link rooms to Telegram groups through a bot — messages, replies and files flow both ways.

Linked instances

Pair two servers to share rooms and DMs across them, chosen by both admins.

Installable PWA

Add it to your home screen. Notifications come from the open tab — no push service involved.

Collections

Save any image or video to your own collections, public or private, and attach from them. Subscribe to others’ to use theirs too.

Light and dark

Both themes, optimistic sending with safe retries, and it works well on phones.

Up in three commands

Needs Node.js 22+ on Linux or macOS. Then open http://127.0.0.1:8090 and sign up.

git clone https://github.com/border-radius/chirkle
cd chirkle && npm ci
npm run setup   # fetches the pinned PocketBase
npm run dev     # http://127.0.0.1:8090

Deploying? Copy one binary and three folders to a server — or push to Dokku with the included Dockerfile.