Real-time messaging for your team, your friends, or your homelab — DMs, groups, voice messages, reactions, and end-to-end encrypted secret chats. One container, one SQLite file, zero build step.
No email. No phone number. Pick a username, set a password, start typing.
Real-time delivery over WebSockets, typing indicators, read receipts, presence, and unread management that respects where you actually are.
End-to-end encrypted DMs with WebCrypto — ECDH key agreement, AES-GCM messages. The server only ever stores ciphertext.
Hold-free recording with a Telegram-style inline player — progress bar, durations, one tap to play.
Paperclip, paste, or drag-and-drop. Photos open in a fullscreen lightbox; files arrive as tidy download cards.
Six-emoji reactions, threaded replies with jump-to-quote, message editing, deletes, and forwarding with provenance.
Full-message search across your chats that jumps straight to the result, plus one pinned message per chat.
The full Telegram night palette, one click away, remembered per device. Drafts, mutes, and formatting included.
One Node process, one SQLite file, no build step, no external services. Your data never leaves your machine.
Secret chats are real, working end-to-end encryption — and we document exactly where the demo-grade line is: no key-fingerprint verification UI, no forward-secrecy ratchet, keys live in your browser. Great against a nosy server admin; not marketed as protection against a motivated nation-state. The README spells it out.
# clone, then: docker compose up -d # → http://localhost:3000, data in a named volume