Kryptovox

Truly private chat.
Truly yours.

Kryptovox is a self-hosted, end-to-end encrypted chat app with the feel of iMessage — bubbles, tapbacks, replies, and read receipts. Messages are encrypted on your device, and your server only ever stores ciphertext.

Get it on GitHub Explore features
Self-hosted End-to-end encrypted Open source Installable PWA
Why Kryptovox

Private means the server can't read it

Most "private" chat apps still decrypt your messages on their servers. Kryptovox encrypts on your device with keys that never leave it — and then runs the whole thing on hardware you own.

True end-to-end encryption

X25519 key agreement with AES-256-GCM, per message and per recipient device — using the browser's Web Crypto, with private keys non-extractable. The server stores only ciphertext.

Runs on your hardware

FastAPI, PostgreSQL, and Redis in Docker Compose — built to live on a Synology NAS behind a Cloudflare Tunnel, with no inbound ports.

Feels like iMessage

Familiar bubbles, tapback reactions, quoted replies, read receipts, and typing indicators — realtime over WebSockets, smooth even in long conversations.

Invite-only by design

Public registration works only to create the very first admin — after that, the admin provisions every account. Your server, your people, nobody else.

Everything inside

A modern messenger, minus the surveillance

Everything you expect from a polished chat app — encrypted end to end.

1:1 & group chats

Direct messages and named groups with admin controls — add, remove, rename, leave.

Tapbacks & replies

React to any message with tapback emoji, and reply with a quoted preview — iMessage-style.

Read receipts & typing

See delivery, reads, and live typing indicators across every conversation.

Web push

Real notifications on desktop and installed mobile PWAs, with keys generated on your server.

Safety numbers

Verify any conversation with a fingerprint of every member device's keys — spot key changes instantly.

Linked devices

Sign in on multiple devices, see them all in Settings, and revoke any one of them.

Cmd+K switcher

A Spotlight-style jump box to fly between conversations without touching the mouse.

Hardened by default

Rate limiting, CSRF defenses, strict input validation, CSP/HSTS, and nightly backups in the stack.

Profiles & privacy toggles

Display names, plus per-user control over read receipts and typing indicators.

Encrypted before it ever leaves your device

Every message gets a random AES-256-GCM key, wrapped for each recipient device via X25519 key agreement — all in the browser's Web Crypto engine, with identity keys marked non-extractable. What travels the wire and lands in your database is ciphertext.

Even the person running the server — you — can't read anyone else's messages. That's the point.

Run it yourself

Self-host in three steps

You need Docker with Compose. Built for a Synology NAS behind a Cloudflare Tunnel — no inbound ports.

1

Configure

Copy the example env — the defaults work for a local trial.

2

Launch

One compose command brings up the app, Postgres, and Redis.

3

Create the admin

The first account registered becomes the admin, who invites everyone else.

# 1 · configure
cp .env.example .env

# 2 · launch
docker compose up --build

# 3 · open the app and create the admin

Open https://localhost:5173, register — that first account is the admin. For production, point a Cloudflare Tunnel at your NAS and use your HTTPS domain.

FastAPIPostgreSQLRedisReactWebSocketsDockerPWA
FAQ

Questions, answered

Can the server operator read my messages?
No. Messages are encrypted on your device before they're sent — each with a fresh AES-256-GCM key wrapped for every recipient device via X25519. The server relays and stores ciphertext only. Not even the admin running the box can read them.
Do I need my own server?
Yes. Kryptovox is self-hosted — Docker Compose with FastAPI, PostgreSQL, and Redis, designed to live on a Synology NAS behind a Cloudflare Tunnel with no open inbound ports.
Who can join my server?
Only people you invite. Public registration works exactly once — to create the first admin account on a fresh instance. After that, the admin provisions every account.
Does it work on my phone?
Yes. Kryptovox is an installable PWA — add it to your home screen over HTTPS and you get the full app with web-push notifications, on iOS and Android alike.
How do I know a conversation is secure?
Open the chat's info panel and compare safety numbers — a fingerprint computed from every member device's public keys. If a device is added or a key changes, the number changes, and you'll know to re-verify.