bluetooth mesh chat, IRC vibes

★ 37,114⑂ 5,889👁 300⑃ 1,022● 439▤ 21◈ 130
SwiftUnlicenseCreated 2025-07-04
37,114
stars
+9+55+690
5,889
forks
300
watchers
1,022
prs
439
issues
21
releases
130
discussions

README

bitchat

A decentralized peer-to-peer messaging app with dual transport architecture: local Bluetooth mesh networks for offline communication and internet-based Nostr protocol for global reach. No accounts, no phone numbers, no central servers. It's the side-groupchat.

bitchat.free

📲 App Store

📲 Play Store

 Getting a copy you can trust

Install from the App Store, or build from source you have verified. A compiled build from anywhere else cannot be verified — see Verifying bitchat for how to check source against the per-release hash manifest, and for what to do if that is the only build you can get.

This matters more than it usually would: this repository has been the target of takedown demands, and when a repository or releases page disappears, mirrors appear that nobody can check.

 License

This project is released into the public domain. See the LICENSE file for details.

 Features

- Dual Transport Architecture: Bluetooth mesh for offline + Nostr protocol for internet-based messaging
- Location-Based Channels: Geographic chat rooms using geohash coordinates over global Nostr relays
- Intelligent Message Routing: Automatically chooses best transport (Bluetooth → Nostr fallback)
- Decentralized Mesh Network: Automatic peer discovery and multi-hop message relay over Bluetooth LE
- Privacy First: No accounts, no phone numbers, no servers. Note that the mesh does use a persistent per-device identifier derived from your identity key — see the whitepaper on identity and metadata for what a nearby radio can observe
- Private Message End-to-End Encryption: Noise Protocol for mesh, BitChat private envelopes for Nostr fallback
- IRC-Style Commands: Familiar /slap, /msg, /who style interface
- Universal App: Native support for iOS and macOS
- Emergency Wipe: Triple-tap to instantly clear all data
- Performance Optimizations: LZ4 message compression, adaptive battery modes, and optimized networking

 Technical Architecture

BitChat uses a hybrid messaging architecture with two complementary transport layers:

 Bluetooth Mesh Network (Offline)

- Local Communication: Direct peer-to-peer within Bluetooth range
- Multi-hop Relay: Messages route through nearby devices (max 7 hops)
- No Internet Required: Works completely offline in disaster scenarios
- Noise Protocol Encryption: End-to-end encryption, with forward secrecy for live sessions (store-and-forward mail is sealed without it — see the whitepaper)
- Binary Protocol: Compact packet format optimized for Bluetooth LE constraints
- Automatic Discovery: Peer discovery and connection management
- Adaptive Power: Battery-optimized duty cycling

 Nostr Protocol (Internet)

- Global Reach: Connect with users worldwide via internet relays
- Location Channels: Geographic chat rooms using geohash coordinates
- 440+ Relay Network: Distributed across the globe for reliability
- BitChat Private Envelopes: App-specific encrypted private messages over Nostr relays
- Ephemeral Keys: Fresh cryptographic identity p

Top issues

Discussions

Latest release

v1.8.0 v1.8.0 2026-10-23
bitchat 1.8.0 makes busy location channels fast. It also collects the features and security hardening that landed since 1.7.1.

 Performance

- Busy geochats are fast again. In a room of 100 people, the people list opens in about 60 ms (it took 1.5 s) and stays at 60 fps. At 300 people it opens in about 180 ms (it took 4–12 s) (1788).
- Presence traffic no longer rebuilds the roster on every event. The timeline at 300 people goes from 3.5–7 dropped frames per second to none (1789).
- The timeline no longer fights you.
  - It no longer snaps back while you scroll during a burst.
  - It 

Snapshot: 2026-11-10T09:35:25Z · Data license Apache-2.0 · JSON