An end-to-end encrypted messenger that needs no phone number or email. · dialog.pm
- Anonymous account: the server gives you a random 16-digit number; you choose a password and get a 24-word recovery phrase. A phone number is optional, only so contacts can find you.
- Signal Protocol through libsignal, with post-quantum key exchange (PQXDH, Kyber), sealed sender and a public key transparency log.
- Messages, voice and video calls, files, 1:1 and in groups; disappearing messages, view-once photos and voice messages, voice effects including an anonymized voice.
- Up to 6 devices per account, several accounts on one device; local data encrypted with your password, not the OS key store.
- Open source (AGPL-3.0), server in Germany (EU), and you can run your own server.
Download: Google Play · Microsoft Store · Windows, macOS, Linux · Android APK · iPhone coming soon
This repository holds the mobile app (Android, iOS) and the Rust core it is built on:
mobile/— the Flutter app;mobile/rustis the bridge to the core (flutter_rust_bridge)crates/chat-core— the client core: Signal protocol sessions (libsignal), sealed sender, private groups (zkgroup), key transparency, the encrypted local database (SQLCipher)crates/voice-fx— on-device voice effects and noise suppressiondocs/— architecture, server API and protocol notes
The desktop app is at DialogPM/desktop.
Requirements: Flutter (stable), Rust (stable) with the Android/iOS targets, and the Android SDK
- NDK or Xcode. See mobile/README.md for details, release signing and push setup.
cd mobile
flutter pub get
flutter runThe app connects to https://chat.dialog.pm by default. To build it for another server:
flutter build apk --dart-define=CHATAPP_DEFAULT_SERVER=https://chat.example.orgPush notifications need your own Firebase configuration (android/app/google-services.json,
ios/Runner/GoogleService-Info.plist); without it the app works and notifies while running.
