This repository is a linux rust bitchat
client using the bluer
library and snow
for noise. Vibes also came from bitchat_tui
Warning
This project has not been audited for security and was generated entirely by chatting with claude code.

Shout out to Jack Dorsey, Vaibhav Mattoo & Anthropic for making this possible
This was coded entirely by chat, built & tested on a Raspberry Pi CM5 SPR Router. It uses the bluer bluez-based library for publishing & consuming GATT services.
To build & run, docker compose build && docker compose run bitchat
- Runs on Linux in the terminal
- Handles Noise XX E2E encryption
- Relays Packets
- Plugin can be run on linux systems but is also tailored to work for SPR with docker-compose-spr.yml and plugin.json
- This plugin enables SPR to join the Bitchat mesh and relay messages
- An operator can also attach to the container and interact in the UI
- Can be provisioned with an API key for https://github.com/spr-networks/super to hand out unique wifi passwords to bitchat clients
- The plugin can be installed in SPR from the URL https://github.com/spr-networks/bitchat-plugin
Users can dm "wifi?" to get a unique password. The algorithm is as follows:
- secret is generated securely with 32 random bytes (/dev/urandom) and persisted
- when a user DMs the plugin, it computes a new password as follows: HMAC_SHA256(secret, peer key fingerprint) | 16 bytes -> hex 32 bytes
- the password is transmitted over the noise e2e channel with this peer
- this is provisioned as a wifi password for a new device to connect

To use the client on spr, attach to the plugin:
docker exec -it bitchat /bin/tmux attach
- Add support for https://github.com/seemoo-lab/openwifipass
- Add wireguard provisioning support
- Relay BT over UDP/wg
- Nostr support