A performant Rust implementation of the Bitchat protocol with WebAssembly support for browsers.
Decentralized, peer-to-peer messaging protocol designed for secure, private, and censorship-resistant communication over ephemeral mesh networks.
Core Features:
- End-to-end encryption using Noise Protocol Framework (XX pattern)
- BLE mesh networking with Nostr relay fallback
- Location-based channels using geohash precision levels
- Message fragmentation, compression, and deduplication
- Binary wire protocol with full canonical compatibility
Advanced Features (opt-in via --features experimental):
- File transfer with chunked uploads and SHA-256 integrity verification
- Group messaging with role-based permissions
- Multi-device session synchronization
- Capability negotiation with graceful degradation
CSP-based multi-task orchestrator with channel communication
bitchat-core- Protocol, cryptography, and data structuresbitchat-runtime- Task orchestration and lifecycle managementbitchat-ble/bitchat-nostr- Transport implementationsbitchat-cli/bitchat-web- Application frontends
Cryptography: Noise_XX_25519_ChaChaPoly_SHA256
Identity: Ed25519 signatures, Curve25519 keys
Sync: GCS filter-based gossip with Bloom deduplication
See docs/protocol-architecture.md for complete specification.
nix develop # Enter development environment (optional)
just build # Build all crates
just test # Run tests
just demo # Run CLI demo (BLE + Nostr)cargo build --features experimental
cargo test --features experimentaljust build-wasm # Build WASM module for web
just serve-web # Serve demo at http://localhost:8000The project includes comprehensive integration testing:
- Canonical compatibility tests verify wire format compatibility
- Property-based tests for message store integrity
- Integration tests for transport and runtime behavior
- Simulator for cross-implementation testing (see
simulator/)
- bitchat - iOS/macOS (main implementation)
- bitchat-android - Android (production)
- deepwiki - generative docs
Licensed under Apache 2.0, see LICENSE.