From the project, in plain language
What bitchat can do
This page sticks to behavior described by the Android repository and the v2.0.1 release notes. It is a reading guide, not a second manual hidden inside the app.
Two ways a message can travel
The app picks a path. Offline, that path is local radio. Online, it can be the Nostr protocol. If neither path is usable, the project says messages can wait and retry. You do not flip a “server mode” switch. You move between a room of nearby phones and a room that exists because relays on the internet are reachable.
Bluetooth mesh
Phones discover each other and relay packets without a central server. The documented cap is seven hops. Packets are small, fragmented when needed, and dropped when they have been seen before, which keeps a loop from flooding the room. A foreground service is how Android lets this continue when you leave the chat screen. Phone makers still apply their own battery limits, so a mesh that works on a table can go quiet in a pocket.
Wi-Fi Aware
On phones that support it, Wi-Fi Aware is a second local transport with more room for larger payloads than Bluetooth Low Energy. It is not a home Wi-Fi network and it does not require a router. Phones without the hardware stay on Bluetooth. You do not need to know which radio fired in order to read the message.
Channels and commands
Public conversation is organized in channels. The local mesh has its own shared chat. Topic channels can be protected with a password. The project documents that protection as Argon2id plus AES-256-GCM. The command style is deliberately familiar to IRC: join, message, and see who is around, using slash commands. If you have never used IRC, the on-screen controls cover the same jobs. The commands are there for people who want them.
Private messages
Direct messages on the mesh use the Noise Protocol, XX handshake, with X25519 and ChaCha20-Poly1305. That is a specific, published construction, not a slogan. It is there so the content of a private message is not readable by the phones that only relay it. When the mesh cannot reach a mutual favorite, the project says private messages can fall back to Nostr.
Geohash rooms
When you are online, a geohash turns a coarse area into a channel name. A short code covers a wide region. A longer code covers a smaller patch of map. People in that room are people who chose the same code, not a contact list. The v2.0.1 app can browse those codes on an animated globe even while drawing the globe itself offline. Joining the live room still needs the network.
Tor
The Android app includes Tor through Arti for internet connectivity. That is a privacy feature for the online path. It does not make Bluetooth traffic look like something else. Radios nearby still see radio traffic.
Emergency wipe
The project documents an emergency wipe, described as a triple-tap, that clears local data. Gestures can change between versions, so confirm the control on the version you installed. A wipe clears the phone in your hand. It does not reach into other phones that already accepted a copy of a message.
Added in 2.0.1
- Wear OS app for the nearby mesh, public chat, encrypted direct messages, people, favorites, notifications, voice notes, images, and files.
- A classic layout or peer-colored bubbles, with timestamps and delivery marks that fit the bubble style.
- Live push-to-talk in public channels and direct messages, including on the watch, with slide-to-cancel.
- Cashu token recognition, a
/paycommand, and redemption through an external wallet. Tokens are bearer instruments. - Private threads that keep history, unread counts, aliases, and favorites across restarts.
- In-app language picker.
- Sharing an installed APK nearby, and update downloads that check a signature and can resume.