permissionlesstech/bitchat
bluetooth mesh chat, IRC vibes
這是什麼
bitchat 是一款用 Swift 寫成的去中心化訊息 App,定位很清楚:在沒有帳號、電話號碼與中央伺服器的前提下,讓使用者可以建立像 IRC 一樣的「旁支群聊」。它的核心不是單一通訊協定,而是 雙傳輸架構:近距離時走 Bluetooth LE mesh,支援自動發現、點對點與多跳轉發;需要跨地域時,則把 Nostr 當作網際網路 relay 層,提供全球可達與基於 geohash 的地理頻道。README 也特別提醒,雖然它強調隱私,但 mesh 仍會使用由身份金鑰衍生的持久裝置識別,附近無線電可觀察到的 metadata 需要參考 whitepaper 理解。
為什麼上榜
這個專案今日以 30,254 stars、單日新增 1,166 stars 衝上日榜,熱點來自兩個方向。第一,它把「離線 mesh」與「網際網路 relay」放進同一個聊天體驗,當 Bluetooth 可用時優先走本地連線,不可用時再 fallback 到 Nostr,這比單純離線聊天或單純去中心化社群工具更完整。第二,README 對「可信安裝」講得很重:建議從 App Store 安裝,或自行驗證 source 與 release hash manifest;並明說此 repo 曾遭遇 takedown demands,因此不可驗證的 mirror 風險更高。這讓它不只是酷炫的通訊 App,也帶有一點抗審查與供應鏈信任議題。
適合誰,可以拿來做什麼
bitchat 適合想研究 Bluetooth mesh 訊息路由、Nostr relay 應用、或隱私通訊 UX 的開發者;一般使用者若只想要帳號制聊天,未必是它的目標族群。README 明列 mesh #bluetooth 可用於離線通訊、抗災、偏遠地區、抗議現場等情境;location channels 則可把 geohash 精度對應到 block、neighborhood、city、province、region 等地理範圍,用於在地活動與社群討論。若你在做 iOS/macOS 原生 App、低功耗藍牙、或去中心化 relay 的產品原型,它提供了相當完整的技術參考。
上手
README 建議優先從 App Store 安裝;若要從原始碼建立可信版本,可用 Xcode 或 just。簽名的裝置 build 需要建立本機設定並換成自己的 Apple Developer Team ID:
open bitchat.xcodeproj
cp Configs/Local.xcconfig.example Configs/Local.xcconfig
常用檢查包括 macOS debug build、SwiftPM 測試與 iOS simulator 測試:
xcodebuild -project bitchat.xcodeproj -scheme "bitchat (macOS)" \
-configuration Debug CODE_SIGNING_ALLOWED=NO build
swift test
若使用 just,README 提供:
brew install just
just check
just run
README 重點摘要
- 採用 Bluetooth mesh + Nostr 的雙傳輸設計,私訊會優先 Bluetooth,必要時 fallback 到 Nostr。
- mesh 支援自動 peer discovery、多跳轉發,README 標示最多 7 hops,並針對 Bluetooth LE 做 binary protocol 與省電最佳化。
- Nostr 用於全球 relay 與地理頻道;private envelope 是 BitChat 專用格式,README 明確說 不相容 NIP-17 / NIP-44 / NIP-59。
- 隱私功能包含 Noise Protocol、BitChat private envelopes、無帳號與 emergency wipe,但 metadata 與持久裝置識別仍需閱讀 whitepaper。
- 專案提供 iOS/macOS universal app、localization 說明,以及 Xcode、SwiftPM、
just的開發檢查流程。