Zemzeme User Guide
Everything you need to install, configure, and use Zemzeme effectively.
Getting Started
Zemzeme is a decentralized messenger that requires no account, no phone number, and no central server. It works across four transport layers - Bluetooth mesh offline, peer-to-peer over the internet, peer-to-peer over the internet, and the online relay network - automatically selecting the best available path.
This guide covers installation, initial setup, and day-to-day use. For a technical deep-dive into the cryptography and architecture, see the Security Model section.
Installation
Option A - GitHub APK (Recommended)
Download the latest APK directly from the GitHub releases page. This is the fastest way to get the most recent version.
Visit the Releases page
Go to github.com/whisperbit-labs/zemzeme-android/releases and download the latest .apk file.
Allow unknown sources
On Android, go to Settings → Security → Install unknown apps and allow your browser or file manager to install APKs.
Install and launch
Tap the downloaded APK to install. No Google account required. Launch Zemzeme - no sign-up screen will appear.
Option B - F-Droid
F-Droid is a free, open-source app repository for Android. Zemzeme will be listed once the F-Droid submission is reviewed.
Option C - Google Play Store
Search for "Zemzeme" in the Play Store. Note that Google Play builds may include slightly older versions due to review cycles.
System Requirements
- Android 8.0 (API level 26) or higher
- Bluetooth 4.0 for nearby messaging
- Internet connection optional (internet connections transport only)
- ~55 MB storage
First Use
When you launch Zemzeme for the first time, it generates a Curve25519 keypair locally on your device. This keypair is your identity - there is no registration step.
You will be prompted to grant Bluetooth and (optionally) location permissions. Please confirm all permissions to ensure smooth operation of the app. Bluetooth permission is required for the Bluetooth transport. Location permission is required by Android to scan for Bluetooth devices (this is an Android system requirement, not a Zemzeme requirement - no location data is ever transmitted).
Make sure your Bluetooth is always on - the app works instantly as soon as you connect.
Your Username
Next you need to enter your username. This is the name you can share freely with others so they can find and message you.
Your Identity
Your identity is displayed as a Nostr public key (npub1...) and a QR code.
Share your QR code with contacts to let them add you. Your private key never leaves your device.
Sending Messages
In the "Nearby" section (users in my area), there are two ways to send messages:
Nearby Messaging
Bluetooth messaging (works even with no internet) - Enter the Bluetooth section and send a message to all users in range. Or, in the upper right-hand corner, see the list of users in Bluetooth range and select a user to open a private chat with them. That user will then appear in your contacts list.
Location-Based Messaging
Enter your location (for example "Tehran") and send a message to all users in your area. Or, in the upper right-hand corner, see the list of users in your location and select a user to open a private chat with them. That user will then appear in your contacts list.
In the lower right-hand corner, you can tap the "+" icon to either choose a different location, join an existing group, or create a new group.
Choosing a City
Select "Choose City" and move the map in any direction and/or zoom in or out. The green rectangle shows the selected area. Press "Select" to confirm your choice.
All messages are end-to-end encrypted regardless of the transport layer used. A relay operator cannot read the content of your messages.
Groups
Groups let you communicate with multiple people at once. Use the "+" menu in the lower right corner to create or join groups.
Create a Group
Select "Create Group" and enter the desired group name. Enter the group - the Group ID appears under the group name. Share this Group ID with friends you want to add to the group. (Private groups coming soon!)
Join a Group
Select "Join Group" and enter the Group ID you received from a friend.
To leave a group: long-press on the group name and press "Delete Chat".
Safety & Privacy
Disguise the App
You can change Zemzeme's icon and name on your phone to avoid detection. Go to Settings → Refresh App Icon & Name → Apply.
Destroy Your Account
You can easily destroy your account at any time by tapping the trash bin icon at the top of the screen. This permanently deletes your account and all data.
Transport Layers
Zemzeme uses four transport layers in priority order:
1. Bluetooth (Offline)
Bluetooth Low Energy creates a mesh network between nearby devices. Range per hop is approximately 30 meters. Messages are relayed automatically through the mesh. Works with no internet, no cell service, no infrastructure of any kind.
2. WiFi Direct (Offline) Coming Soon
WiFi Direct creates a high-speed device-to-device WiFi connection without a router or internet. Range up to 200 meters with higher bandwidth than Bluetooth - ideal for larger areas or groups. Works completely offline.
3. Direct Connection
When internet is available and a direct connection to the recipient is possible, Zemzeme uses peer-to-peer technology for device discovery. This is a direct device-to-device connection - no relay server is involved.
4. Online Relay
As a fallback, messages are published to the online relay network. You can configure your preferred relays in Settings → Online Relays. The default relay list includes several well-known public relays.
Security Model
Key Exchange - Noise Protocol XX Pattern
Zemzeme uses the Noise Protocol Framework XX handshake pattern. This provides:
- Mutual authentication - both parties verify each other's identity
- Forward secrecy - ephemeral keys ensure past sessions can't be decrypted
- Identity hiding - identities are protected from passive observers
Cryptographic Primitives
- Key exchange: Curve25519 (X25519 ECDH)
- Symmetric encryption: ChaCha20-Poly1305 (256-bit key)
- Hash function: BLAKE2b
- Local storage: AES-256-GCM via Android Keystore
Threat Model
Zemzeme protects against:
- Network eavesdroppers reading message content
- Relay operators accessing plaintext messages
- Retroactive decryption (perfect forward secrecy)
- Physical device seizure (encrypted local storage + emergency wipe)
- IP-based identity linking (Tor integration)
- Man-in-the-middle attacks when QR verification is used
Zemzeme does not protect against:
- Compromised device (malware, physical access without wipe)
- Traffic analysis of message timing/volume (metadata)
- Social engineering of your contacts
Emergency Data Wipe
The emergency wipe feature permanently deletes all Zemzeme data from your device. To trigger it: triple-tap the panic button in Settings → Security.
The following data is securely deleted:
- All messages and conversation history
- Your Curve25519 private key
- All contacts and public keys
- Application settings and preferences
- Cached relay data
Tor Integration
Tor routing hides your IP address from relay operators, DHT peers, and network observers. To enable Tor: Settings → Privacy → Route via Tor.
Tor support requires Orbot (the official Tor app for Android) to be installed and active, or uses Zemzeme's built-in Tor client if enabled in settings. Note that Tor routing adds latency - Bluetooth is unaffected.
FAQ
Does Zemzeme collect any data?
No. Zemzeme has no analytics, no telemetry, and no servers. There is no data to collect. The app operates entirely on your device and communicates only with your chosen peers and relays.
Can I use Zemzeme without Bluetooth?
Yes. Bluetooth is one of four transport layers. If Bluetooth is disabled, Zemzeme falls back to Direct Connection or online relay automatically.
What happens if a online relay goes down?
Zemzeme automatically tries the next relay in your list. You can configure multiple relays in Settings → Online Relays. If all relays fail, Zemzeme falls back to internet or Bluetooth.
Is Zemzeme compatible with other Nostr clients?
Zemzeme uses the relay protocol for transport, but applies additional encryption on top of standard Nostr events. Messages are not readable by generic Nostr clients - Zemzeme peers only.
Can I verify that the app hasn't been tampered with?
Yes. All GitHub releases include SHA-256 checksums. F-Droid builds are independently compiled from source. The repository is fully open source - anyone can build from source and compare.
What's the difference between Zemzeme and Bitchat?
Zemzeme is a fork of Bitchat Android v1.7.0. It adds the libp2p internet transport layer, extended language support, Tor integration, and UI improvements. Full attribution to the Bitchat project is maintained.
Contributing
Zemzeme is open source and welcomes contributions. The repository is on GitHub.
How to contribute
Fork the repository
Fork whisperbit-labs/zemzeme-android and clone it locally.
Build the project
Open in Android Studio (Hedgehog or later). Sync Gradle and build. Requires JDK 17.
Make your changes
Follow the existing Kotlin code style. Write tests for new functionality.
Submit a pull request
Open a PR against the main branch. Describe what you changed and why.
Areas where help is wanted
- iOS port (Swift / SwiftUI)
- Desktop client (Kotlin Multiplatform or Electron)
- Additional language translations
- Security audit of the Noise Protocol implementation
- libp2p transport improvements and testing
- Accessibility improvements
Changelog
v2.0.0 - March 2026
- Major update with new features and improvements
- Bug fixes and stability enhancements
v1.1.9 - March 2026
- Major update with new features and improvements
- Bug fixes and stability enhancements
v1.0.2 - February 2026
- Initial public release
- Bluetooth transport (from Bitchat v1.7.0)
- direct internet transport via peer-to-peer (new)
- online relay transport with E2E encryption
- Noise Protocol XX key exchange
- Emergency triple-tap wipe
- Tor routing via Orbot
- QR code identity verification
- AES-256-GCM local storage
- 35+ language localizations
- Jetpack Compose UI, Material 3 dark theme
راهنمای فارسی (Farsi Guide)
راهنمای کامل فارسی Zemzeme — برای مشاهده کلیک کنید ▸
زمزمه
پیام رسان رمزنگاری شده که حتی بدون اینترنت کار میکند
زمزمه امن است
زمزمه کاملاً ناشناس است
بدون صفحه ثبت نام
بدون ایمیل
بدون شماره تلفن
چگونه به زمزمه متصل شویم؟
اولین راهاندازی
وقتی اپلیکیشن را باز میکنید
لطفاً تمام مجوزها رو تأیید کن تا اپلیکیشن بدون مشکل کار کنه
اپلیکیشن بلافاصله پس از اتصال کار میکند
مطمئن شوید بلوتوث همیشه روشن باشد
حالا باید نام کاربری (username) خودت رو وارد کنی.
این نام رو میتونی آزادانه با دیگران به اشتراک بگذاری.
چگونه پیام بفرستیم؟
در بخش «نزدیک من» (کاربران اطراف من)
دو راه برای ارسال پیام وجود دارد:
۱. بلوتوث (حتی وقتی اینترنت در دسترس نیست)
بلوتوث را روشن کنید و پیام را به همه کاربرانی که در محدوده هستند بفرستید.
یا در گوشه بالا سمت راست، لیست کاربرانی که با بلوتوث در دسترس هستند را ببینید و روی یکی کلیک کنید تا چت خصوصی با او باز شود (آن کاربر به لیست مخاطبان شما اضافه میشود).
۲. مکان (از طریق اینترنت محلی)
در بخش «نزدیک من» (کاربران اطراف من)
مکان خود را وارد کنید (مثلاً «تهران»)
پیام بنویسید و به همه کاربرانی که در همان منطقه هستند بفرستید
یا
در گوشه بالا سمت راست، لیست کاربرانی که در همان مکان هستند را ببینید
روی یکی کلیک کنید تا چت خصوصی باز شود
آن کاربر به لیست مخاطبان شما اضافه میشود
علاوه بر این:
پایین سمت راست صفحه
روی علامت «+» کلیک کنید
بعد میتونی یکی از این کارها رو بکنی:
یا جای دیگه انتخاب کن یابه یه گروه که هست بپیوند یا یه گروه جدید بساز
برای انتخاب شهر:
روی «انتخاب شهر» کلیک کنید
نقشه رو به هر طرف بکش (حرکت بده)
یا زوم کن (بزرگنمایی یا کوچکنمایی)
مستطیل سبز نشون میده کدوم منطقه انتخاب شده
وقتی آماده بودی، روی «انتخاب» کلیک کنید تا تأیید بشه
گروهها
برای ساخت گروه:
روی «ساخت گروه» کلیک کنید و اسم گروهی که میخوای رو وارد کن.
وارد گروه شوید (شناسه گروه یا Group ID زیر نام گروه نمایش داده میشود).
شناسه گروه را با دوستانی که میخواهید به گروه اضافه کنید و به اشتراک بگذارید.
(گروههای خصوصی به زودی اضافه میشوند!)
برای پیوستن به گروه موجود:
روی «پیوستن به گروه» کلیک کنید و شناسه گروه (Group ID) که از دوستت گرفتی رو وارد کن.
برای ترک گروه:
روی اسم گروه طولانی فشار بده و بعد «حذف چت» رو کلیک کنید.
برای ایمنی و ناشناس بودن شما
تغییر آیکون و نام اپلیکیشن
میتوانید آیکون و نام زمزمه را روی گوشی خود تغییر دهید
تنظیمات → تازه سازی آیکون و نام اپلیکیشن → تأیید کن
حذف حساب کاربری
میتونی خیلی راحت حسابت رو حذف کنی: همیشه بالای صفحه، روی آیکون «سطل آشغال» کلیک کنید