BitChat FAQ

Everything you need to know about decentralized messaging with Bluetooth mesh and Nostr protocol

Frequently Asked Questions

Comprehensive answers about BitChat's features, technology, and usage

General Questions

  • What is BitChat?
    BitChat is a decentralized peer-to-peer messaging app that combines Bluetooth mesh networks for offline communication with Nostr protocol for global reach. It requires no accounts, phone numbers, or central servers, making it the ultimate side-groupchat solution for private, resilient communication.
  • How does BitChat work without servers?
    BitChat uses a dual transport architecture: Bluetooth mesh for local offline communication and Nostr protocol for internet-based messaging. Messages are routed peer-to-peer through nearby devices in mesh mode or through distributed Nostr relays for global communication. All encryption happens directly between devices.
  • Is BitChat really private?
    Yes, BitChat is privacy-first by design. It uses Noise Protocol for Bluetooth mesh encryption and BitChat's proprietary private-envelope encryption for Nostr messages. No personal information is required, and metadata is minimized. However, the mesh does use a persistent device identifier for routing purposes.

Technical Architecture

  • What is the dual transport architecture?
    BitChat uses two complementary transport layers: 1) Bluetooth Low Energy mesh network for local, offline communication with multi-hop relay capabilities, and 2) Nostr protocol over internet for global reach with geographic channels. The app intelligently routes messages between these transports based on availability.
  • How does the Bluetooth mesh work?
    The Bluetooth mesh creates a local network where devices can communicate directly within range or relay messages through nearby devices (up to 7 hops). It uses a compact binary protocol optimized for Bluetooth LE constraints with automatic peer discovery, connection management, and battery-optimized duty cycling.
  • How is Nostr integration different from other clients?
    BitChat uses Nostr as a relay transport but implements its own proprietary private-envelope format (kind-1059 events with XChaCha20-Poly1305 encryption) rather than standard NIPs. This means private messages only work between BitChat clients but provides enhanced security for the app's use case.

Privacy & Security

  • What data does BitChat collect?
    BitChat collects minimal data: a persistent per-device identifier derived from your identity key for mesh routing purposes. No personal information, location data, or message content is stored on servers. Messages are end-to-end encrypted and never stored permanently.
  • How is metadata handled?
    Metadata is minimized but unavoidable in any communication system. The mesh reveals device proximity and routing paths. Nostr usage reveals connection to specific relays and geohash-based channel subscriptions. For detailed analysis of what metadata is exposed, see the technical whitepaper.
  • What is the emergency wipe feature?
    The emergency wipe feature allows you to instantly delete all app data with a triple-tap gesture. This is designed for situations where privacy is critical and you need to ensure no traces of your communication remain on the device.

Installation & Setup

  • How do I verify a build is authentic?
    Always install from the official App Store for the most secure build. For builds from source, verify against the per-release hash manifest as described in the Verifying BitChat documentation. This is crucial because mirrors may appear that cannot be verified when repositories are taken down.
  • What are the installation options?
    You can install via App Store or build from source using Xcode or the Swift package manager with `just`. For Xcode builds, you'll need to configure your Apple Developer Team ID. The SwiftPM approach uses pre-configured schemes and never patches source files.
  • What are the system requirements?
    BitChat is a universal app supporting iOS 15+ and macOS Monterey (12.5+). It requires devices with Bluetooth Low Energy capabilities and works best with modern Apple silicon for optimal performance. The app is optimized for both iPhone and Mac experiences.

Usage & Features

  • How do location-based channels work?
    Location channels use geohash coordinates to create geographic chat rooms. Different precision levels define channel scopes: 7 characters (city block), 6 (neighborhood), 5 (city), 4 (province), and 2 (region). You join channels based on your location and communicate with others in the same geographic area.
  • What are the IRC-style commands?
    BitChat supports familiar IRC commands including /slap (playful interaction), /msg (private message), /who (list online users), /join (enter channel), /part (leave channel), and /quit (exit app). These commands work across both mesh and Nostr transports for consistent experience.
  • How does message routing work?
    BitChat intelligently selects transport based on availability: 1) Bluetooth direct connection when available (fastest), 2) Nostr fallback when Bluetooth is unavailable, and 3) Smart queuing when neither transport is available. Messages are automatically delivered when connections are established.

Community & Support

  • Where can I get technical support?
    Technical support is available through the GitHub repository issues tracker. For community discussions, join the Nostr network or participate in relevant technical forums. The project also maintains technical documentation at deepwiki.com/permissionlesstech/bitchat.
  • How can I contribute to BitChat?
    Contributions are welcome via GitHub! You can submit bug reports, feature requests, code improvements, documentation updates, or translations. Check the issues page for open tasks and follow the contribution guidelines in the repository README.
  • What's the license for BitChat?
    BitChat is released into the public domain under The Unlicense. This means you can use, modify, distribute, and sublicense the software for any purpose without restrictions. The LICENSE file contains the full legal text.
31,829
GitHub Stars
5,002
Forks
69
Open Issues
288
Subscribers
Swift
Language
Unlicense
License