bitchat logo

bitchat

bluetooth mesh chat, IRC vibes

GitHub

What is it?

What it is

A decentralized, peer-to-peer messaging application for iOS and macOS that operates without accounts, phone numbers, or central servers.

Why it exists

To provide a privacy-first communication tool capable of functioning in offline scenarios (disasters, protests, remote areas) via Bluetooth mesh, while offering global reach through the Nostr protocol.

Who should use it

Privacy advocatesDecentralized tech enthusiastsUsers needing offline communicationActivists in restricted areas

Who should avoid it

Non-technical usersThose preferring centralized servicesUsers without Bluetooth/internet access

How it works

A quick walkthrough in plain English

How bitchat works

Step 1 of 3

You interact with it

Open bitchat, send a request, or connect it to your stack.

Features

Dual transport architecture (Bluetooth mesh and Nostr protocol)
Offline communication via Bluetooth Low Energy mesh network
Global reach via Nostr relay network
Location-based channels using geohash coordinates
Intelligent message routing with automatic transport fallback
End-to-end encryption using Noise Protocol and BitChat private envelopes
Decentralized peer-to-peer architecture with no central servers
Multi-hop message relay (up to 7 hops)
IRC-style command interface
Emergency data wipe (triple-tap)
Native support for iOS and macOS
LZ4 message compression and adaptive battery modes

Advantages

  • Works without internet in disaster scenarios or remote areas
  • High privacy with no requirement for phone numbers or accounts
  • Resilient to takedown demands due to decentralized nature
  • Seamless transition between local and global connectivity
  • Scalable geographic chat rooms from block to region level
  • Optimized for mobile performance and battery life

Disadvantages

  • Mesh network uses a persistent per-device identifier that can be observed by nearby radios
  • Nostr private envelopes are proprietary and lack NIP-17/44/59 compatibility
  • Bluetooth mesh is limited to a maximum of 7 hops
  • Requires source code verification to ensure build integrity against malicious mirrors

Installation

native

Option 1: Using Xcode

```bash
open bitchat.xcodeproj
```

For a signed device build, create your ignored local configuration and replace
the example team ID with your Apple Developer Team ID:

```bash
cp Configs/Local.xcconfig.example Configs/Local.xcconfig
```

Option 2: Using `just`

```bash
brew install just
just check
just run
```

FAQ

How do I install or build BitChat safely?

You can download the pre‑built app from the App Store or build it yourself from the verified source. If you build from source, follow the "Getting a copy you can trust" section: verify the release hash manifest in docs/VERIFYING-A-BUILD.md before installing. This protects against tampered binaries, especially since the repo has faced takedown requests.

How does BitChat decide which transport to use for a message?

BitChat first attempts a direct Bluetooth Low Energy connection. If a local peer is reachable, it uses the Noise protocol for end‑to‑end encryption. If Bluetooth is unavailable, it falls back to the Nostr protocol, encrypting the payload with BitChat’s private‑envelope scheme and sending it via global Nostr relays. If neither is available, the message is queued until a transport becomes available.

What are the location‑based channels and how are they defined?

Location channels use geohash prefixes to create geographic chat rooms: `block` (7 chars) for city block, `neighborhood` (6 chars), `city` (5 chars), `province` (4 chars), and `region` (2 chars). Each channel uses the Nostr protocol over the internet and requires a connection to Nostr relays.

How can I build and test BitChat on macOS or iOS?

With Xcode, open `bitchat.xcodeproj` and run the desired scheme. For a signed device build, copy `Configs/Local.xcconfig.example` to `Configs/Local.xcconfig` and replace the team ID. Useful commands: `xcodebuild -project bitchat.xcodeproj -scheme "bitchat (macOS)" -configuration Debug CODE_SIGNING_ALLOWED=NO build` for a macOS debug build, and `xcodebuild -project bitchat.xcodeproj -scheme "bitchat (iOS)" -sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 17' test` for iOS simulator tests. Alternatively, install `just` via Homebrew and run `just build`, `just run`, `just test`, or `just test-ios`.

How do I perform an emergency wipe of my data?

BitChat includes a triple‑tap gesture that instantly clears all local data, including message history and cached keys. This is useful in high‑risk situations where you need to remove all traces of your activity.

Loading documentation…
View on GitHub

Featured in Videos

YouTube tutorials and walkthroughs for bitchat

Alternatives

Similar projects ranked by category, topics, and text overlap.

Compare
bitchat | MushyBook