Bitchat logo

Bitchat

Decentralized peer-to-peer chat using Bluetooth mesh and Nostr

BitChat delivers offline Bluetooth mesh messaging and global Nostr-based chat without accounts or servers, offering end-to-end encryption, location-based channels, and familiar IRC-style commands for iOS and macOS.

Overview

BitChat is built for privacy-focused users, community organizers, and disaster responders who need reliable communication without relying on cellular networks or central servers. It combines a local Bluetooth Low Energy mesh for offline, multi-hop messaging with the internet-scale Nostr protocol, enabling both neighborhood-level chats and worldwide conversations.

How it works

When devices are within Bluetooth range, messages travel through an automatic mesh, using the Noise protocol for forward-secret encryption. If the mesh cannot reach a recipient, BitChat seamlessly falls back to Nostr relays, encrypting payloads with NIP-17 and routing them via geohash-based location channels. Smart queuing stores outbound messages until a suitable transport becomes available. The app runs natively on iOS and macOS, requires no user accounts, and supports IRC-style commands, emergency data wipes, and battery-optimized operation.

Getting started

Developers can compile the Swift code via Xcode or the just command-line tool. After configuring a developer team ID, the app can be installed on any compatible Apple device, ready to join local mesh networks or connect to the global Nostr relay pool.

Highlights

Dual transport: Bluetooth mesh for offline, Nostr for global reach
Geohash-based location channels for neighborhood and regional chats
End-to-end encryption (Noise on mesh, NIP-17 on Nostr)
IRC-style commands and instant emergency wipe

Pros

  • No accounts or phone numbers required
  • Works completely offline via Bluetooth mesh
  • Global connectivity through Nostr relays
  • Strong privacy with forward-secret encryption

Considerations

  • Limited to iOS and macOS platforms
  • Bluetooth range and mesh hops constrain coverage
  • Reliance on public Nostr relays for internet mode
  • No built-in voice or video support

Fit guide

Great for

  • Community organizers in low-connectivity or protest scenarios
  • Privacy-conscious individuals who avoid centralized services
  • Local event coordination using geographic channels
  • Disaster response teams needing offline communication

Not ideal when

  • Users requiring Android or Windows compatibility
  • High-throughput enterprise messaging workloads
  • Applications that need real-time video or voice calls
  • Large-scale broadcast without sufficient Nostr relay coverage

How teams use it

Protest coordination

Activists maintain secure, offline chat during network shutdowns.

Neighborhood watch

Residents receive instant alerts through a block-level geohash channel.

Disaster relief

First responders exchange status updates when internet is unavailable.

Campus group chat

Students join a city-level channel for class discussions without exposing personal data.

Tech snapshot

Swift98%
Rust1%
Shell1%
Just1%
C1%

Frequently asked questions

Do I need to create an account to use BitChat?

No. BitChat generates temporary cryptographic keys per location and stores no personal identifiers.

Is BitChat available on Android devices?

Currently the app is only released for iOS and macOS.

How does BitChat protect my privacy?

Bluetooth mesh messages use the Noise protocol, while internet messages are encrypted with NIP-17 gift-wrapping and ephemeral keys.

What happens if both Bluetooth and Nostr are unavailable?

Messages are queued locally and automatically delivered when a suitable transport becomes reachable.

Can the app run in the background to receive messages?

Yes, it uses adaptive battery modes and background Bluetooth permissions to stay reachable while conserving power.

Project at a glance

Active
Stars
25,314
Watchers
25,314
Forks
2,374
LicenseUnlicense
Repo age8 months old
Last commit7 days ago
Primary languageSwift

Last synced yesterday