@chinglen2080 on Enclave Messenger
What it is
A fully offline, peer-to-peer encrypted messenger that runs over Bluetooth (RFCOMM) and local network — zero internet required, zero servers. Messages are end-to-end encrypted, and the UI runs as a local web app in your browser.
What was built
Bluetooth node — discovers peers via SDP UUID, connects via RFCOMM
Web UI — a polished chat interface with dark/light mode, animated splash screen, message bubbles, peer list with live scan
End-to-end encryption — passphrase-based, messages show enc/decrypted badges
Multi-transport system — send messages to phone numbers when Bluetooth and LAN isn't available
Plugin system — extensible architecture with manifest-based permissions, security watchdog
Signed update system — RSA-4096 signed manifests + SHA-256 file hashes so updates can be verified without internet
What was challenging
Bluetooth peer discovery without internet — SDP/RFCOMM is finicky, BlueZ on Linux requires careful pairing/trust setup
Coordinating encryption across peers who may be offline — tokens stored locally, decrypted on-demand when passphrase is entered
Plugin security in CPython — no real sandbox exists, so the security model relies on scoped PluginCore objects.
What to be proud of
The UI is genuinely polished — smooth animations, staggered reveals, real-time WebSocket updates
The update system is cryptographically sound for an offline-first app
To test it
Requirements:
Linux (BlueZ), Python 3.11+, Bluetooth adapter
pip install -r requirements.txt
Setup:
python set.py — configure identity + passphrase
python main.py — starts the node + web UI (visit localhost:5000)
Enter your passphrase in the unlock modal to start the Bluetooth node
Click scan network in the peers panel to find other Enclave instances nearby
Open a chat, send a message — it'll show enc if stored encrypted, decrypted once unlocked
Two-device test: Run on two Linux machines with Bluetooth, make sure they're paired, both run main.py — they should discover each other automatically.
- 3 devlogs
- 10h