TopGit
GitHub Repo Review

BitChat Mesh Chat App: Review and Verdict

permissionlesstech/bitchat
BTopGit review image for permissionlesstech/bitchat
Review by Topgit.dev for permissionlesstech/bitchat, with GitHub repository stats and README context.
Quick verdict

Reach for BitChat if you want a mesh chat app that keeps working when Bluetooth is your only option — mesh routing across up to 7 hops, no sign-up, no server to subpoena for message content. Skip it if you need airtight anonymity: the mesh layer ties your messages to a persistent per-device identifier, and its private messages over Nostr use a proprietary encryption scheme that only talks to other BitChat clients, not any other Nostr app.

Stars
★ 33.5k
Forks
⑂ 5.3k
Language
Swift
License
Unlicense
Topic
Mobile
Updated
Jul 2026
Homepage
GitHub

When Cell Signal Isn't There — or Isn't Trusted

Cell towers and Wi-Fi go down or aren't trusted — at protests, in disaster zones, in venues with dead spots — and most chat apps just stop working without them, or work fine but tie your identity to a phone number and a company's servers.

Bluetooth Mesh Chat With a Nostr Fallback

BitChat (permissionlesstech/bitchat) is a mesh chat app built in Swift for iOS and macOS, combining two transports: Bluetooth LE mesh networking for offline, local-range chat, and the Nostr protocol for reach when you're online. Messages relay peer-to-peer across up to 7 hops on the mesh side, encrypted with the Noise Protocol; there's no account creation, no phone number, and no company server sitting in the middle.

7-Hop Mesh Relay and Noise Protocol Encryption

  • Dual transport routing: tries Bluetooth LE mesh first, falls back to Nostr automatically, with smart queuing so messages aren't dropped mid-handoff
  • Multi-hop mesh relay up to 7 hops, letting messages travel node-to-node past direct Bluetooth range
  • Noise Protocol encryption on the mesh with forward secrecy for live sessions; store-and-forward "mail" is sealed but explicitly without forward secrecy, per the whitepaper
  • Location-based geohash channels over Nostr relays (block/neighborhood/city/province/region granularity) instead of raw GPS coordinates
  • Custom private-message encryption over Nostr — kind-1059 events with a BitChat-specific v2-prefixed XChaCha20-Poly1305 construction, not NIP-44, so it only interoperates with other BitChat clients
  • IRC-style slash commands (/slap, /msg, /who), LZ4 compression, adaptive battery modes, and a triple-tap emergency wipe

Takedown Demands and a Hash-Verified Build

BitChat picked up real traction (30,106 GitHub stars, nearly 4,700 forks) partly for what it does — no-account Bluetooth mesh chat with a Nostr fallback — and partly for what's happened to it: the README says outright that the repo has faced takedown demands, and that unverified mirrors show up whenever it goes dark. That's pushed the project to document build verification (a per-release hash manifest in docs/VERIFYING-A-BUILD.md) more carefully than most single-platform apps bother to.

How this repository's GitHub stars have grown over time. Source: star-history.com.View the star history

Protests, Disaster Zones, and Signal-Free Coordination

  • Coordinating with people nearby when cell service is down or intentionally avoided — protests, festivals, disaster response
  • Location-scoped public channels for a neighborhood or city without broadcasting exact GPS coordinates
  • Ephemeral, no-signup group chat where you don't want a phone number tied to your identity
  • Messages that keep relaying across a mesh of phones instead of needing one continuous connection to a server

App Store Build or Compiling From Source

Two paths per the README: grab it from the App Store (bitchat.free) for a signed build, or build from source. For source builds, either open bitchat.xcodeproj directly in Xcode (copy Configs/Local.xcconfig.example first if you need a signed build), or install `just` (brew install just) and run `just check` then `just run` — the repo notes `just` deliberately never patches your source, project, or config files. If you're building from anything other than the official repo or the App Store, the README pushes you to verify the binary against the per-release hash manifest in docs/VERIFYING-A-BUILD.md before trusting it.

IRC-Style Commands and Geohash Channels

Once it's running, BitChat behaves like an IRC client: /msg and /who work as expected, /slap is there for the memes, and channels can be scoped to a geohash-based location radius instead of a topic name. Messages route to nearby peers over Bluetooth automatically and hop through up to 7 devices to extend range; when no mesh peer is reachable, it drops to Nostr over one of 290+ relays. A triple-tap gesture wipes local data on the spot. For development, tests run via `swift test` or `just test-ios`, and UI strings live in `.xcstrings` files for anyone adding a translation.

What Actually Works Offline

  • No account, phone number, or central server — messages route peer-to-peer or through Nostr relays you don't have to trust
  • Actually functions offline: Bluetooth mesh with 7-hop relay covers real coverage gaps, not just a bullet point
  • Forward secrecy on live mesh sessions via the Noise Protocol
  • Takes build integrity seriously — per-release hash verification docs exist because the project has had to deal with takedown-driven mirrors
  • Native Swift app for iOS/macOS rather than a cross-platform wrapper, so it behaves like a normal iOS app instead of a webview

Not as Anonymous as 'No Sign-Up' Sounds

  • iOS/macOS only — Swift codebase, no Android or desktop Linux/Windows build, so mesh chat only works if everyone in the group is on Apple hardware
  • Store-and-forward "mail" messages don't get forward secrecy, only live mesh sessions do, per BitChat's own whitepaper
  • Mesh identity isn't anonymous: the whitepaper acknowledges a persistent per-device identifier derived from your identity key, even though geohash keys rotate
  • Private messages over Nostr use a proprietary v2 XChaCha20-Poly1305 construction instead of NIP-44, so they don't interoperate with any other Nostr client — you're locked into BitChat on both ends
  • The repo has faced takedown demands, and the README's own warning about unverifiable mirrors means you need to actually check the hash manifest rather than grabbing any bitchat build you find online

SimpleX Chat, Briar, Meshtastic

simplex-chatBriarMeshtastic

Who BitChat Is Really For

Developers and privacy-conscious users on iPhone or Mac who want a working example of a Bluetooth mesh chat app with a Nostr fallback, and who are willing to read the whitepaper's privacy caveats instead of assuming "no accounts" means "fully anonymous." Skip it if your group isn't all on Apple devices, or if you need messages that interoperate with the wider Nostr ecosystem rather than just other BitChat installs.

BitChat Questions, Answered

Is BitChat safe to use for private messages?

The mesh side gets Noise Protocol encryption with forward secrecy while you're in a live session, but store-and-forward messages are only sealed, not forward-secret, and the whitepaper flags a persistent per-device identifier as a real, if narrow, de-anonymization risk.

Does BitChat require a Bluetooth connection at all times?

No. It tries Bluetooth LE mesh first and automatically falls back to the Nostr protocol over one of 290+ relays when no mesh peer is in range, so it still works with a normal internet connection.

Can BitChat talk to other Nostr apps?

Only for its public geohash channels, which ride on standard Nostr relays. Private messages use a BitChat-specific encryption scheme rather than NIP-44, so they only work between BitChat clients.

Is BitChat available for Android?

Not based on this repo — it's a Swift codebase targeting iOS and macOS only, with no Android build mentioned.

How do I know a BitChat build isn't a fake?

Install from the App Store (bitchat.free) or build from the verified source repo, then check the binary against the per-release hash manifest in docs/VERIFYING-A-BUILD.md — the project added this specifically because it has faced takedown demands and unverifiable mirrors have appeared claiming to be BitChat.

Related repositories

Source & attribution

Based on the permissionlesstech/bitchat GitHub repository (30,106 stars, 4,681 forks, Unlicense/public domain).

GitHub data · last synced Jul 27, 2026Reviewed by Henry
Back to TopGit