A real-time chat platform with end-to-end encrypted DMs, voice, and media - Android, web, and Windows clients on a self-hostable Rust backend.
No ads, no tracking, fully open source.
- End-to-end encrypted DMs and group DMs: per-device identity keys, QR safety-code verification, and one-tap device transfer.
- Servers with channels, roles, invites, member management, and a moderation audit log.
- Reactions, replies, message search, fullscreen media viewer, and voice messages.
- Video calls over your own LiveKit server, with screen sharing on Windows.
- QR sign-in, TOTP two-factor authentication, and passkey sign-in.
- Bots (TypeScript or Python) and a marketplace of community plugins and themes.
- Eleven bundled languages, with translation fixes and new locales served live from the server - no app update needed.
- Native clients: Android (Kotlin + Jetpack Compose), web (React), and a Windows desktop shell.
Important
OrangChat is a full client-server platform - the clients need an OrangChat server to talk to. Use the public instance at chat.oranges.lt, or host your own in minutes with docker-compose (see deploy/DEPLOY.md).
- Open the web client at chat.oranges.lt, or install the Android APK from chat.oranges.lt/download/android.
- Create an account - or sign in on another device by scanning the QR under Settings > Encryption > Add another device.
- Create or join a server and start a DM. DMs and group DMs are end-to-end encrypted; every device pair shows a safety code you can verify out of band.
Supported platforms
- Android 12+ - Kotlin + Jetpack Compose, Material 3. Signed APK with updates delivered over HTTPS from your server.
- Web - modern Chrome, Firefox, Safari, and Edge (React + Vite).
- Windows - desktop shell (Electron) that loads the web client with a tray icon, calls, screen sharing, and auto-updates.
Repository layout
| Path | What it is |
|---|---|
android/ |
Native Android client |
packages/client |
React web client |
packages/desktop |
Windows desktop shell |
packages/server-rs |
Rust backend (axum + Socket.IO) |
packages/bot, packages/bot-python |
Bot SDKs |
packages/marketplace |
Plugin and theme marketplace (submodule) |
packages/shared |
Shared client code and scripts |
prisma/ |
Postgres schema and migrations |
deploy/ |
docker-compose, nginx, LiveKit, and systemd units |
docs/ |
E2EE design, bots, and passkey notes |
OrangChat does not include:
- Advertisements
- Analytics
- User tracking
- Paid features
- A third-party cloud
Caution
End-to-end encryption protects message content, not metadata - who talks to whom, and when, remains visible to the server operator. The design and its limits are documented in docs/E2EE.md. Run your own server if you want that trust boundary to end at your own machine.
OrangChat is not affiliated with, endorsed by, or associated with Discord, Meta, or any other platform.
- docs/E2EE.md - end-to-end encryption design
- docs/BOTS.md - writing bots
- docs/PASSKEYS.md - passkey sign-in
- deploy/DEPLOY.md - self-hosting guide
- Community translations - Weblate translation project
- GitHub Issues - bugs and feature requests
- Wiki - additional documentation
- Platforms: Linux/GNU; Windows; Android
- Official Source Stores: Github; chat.oranges.lt; Gplay
- Translate to other languages with Weeblate
- Made by human bugfixed by AI 🧡