permissionlesstech/bitchat
bluetooth mesh chat, IRC vibes
Kết luận: partial · Công nghệ: bluetooth-le · mesh-network · e2e-encryption · ios · messaging
bitchat là ứng dụng chat mesh qua Bluetooth LE cho iOS/macOS, thiên về giao tiếp cục bộ không phụ thuộc Internet, có thêm E2E encryption và cảm hứng trải nghiệm kiểu IRC. Với ~31k sao, đây là một dự án công cụ/ứng dụng rất đáng chú ý để tham khảo cho các bài toán nhắn tin offline, discovery ngang hàng và mạng phi tập trung tầm ngắn.
📖 Giới thiệu chi tiết
🧩 Nó là gì?
permissionlesstech/bitchat là một ứng dụng chat phi tập trung cho iOS/macOS: bạn có thể nhắn tin qua Bluetooth LE mesh khi không có Internet, hoặc dùng Nostr khi cần vươn ra xa hơn. Hiểu đơn giản: đây là “side-groupchat” kiểu IRC, không cần tài khoản, không cần số điện thoại, không cần server trung tâm.
🎯 Giải quyết vấn đề gì? Dành cho ai?
bitchat giải quyết bài toán nhắn tin khi bạn không muốn — hoặc không thể — phụ thuộc vào hạ tầng quen thuộc như Internet, tài khoản, số điện thoại hay server của một công ty nào đó.
Dự án này phù hợp với:
- Người muốn chat cục bộ trong phạm vi gần, ví dụ sự kiện, khu vực đông người, vùng mất mạng, thiên tai, đi rừng, đi xa.
- Developer muốn học cách làm peer-to-peer messaging: các thiết bị tự tìm nhau và nói chuyện trực tiếp.
- Người quan tâm đến mạng phi tập trung, nhắn tin offline, discovery ngang hàng và truyền tin qua nhiều thiết bị trung gian.
- Người thích trải nghiệm chat nhanh, gọn, có hơi hướng IRC với các lệnh như
/msg,/who,/slap.
Điểm quan trọng: bitchat không cố trở thành “WhatsApp mới”. Nó giống một công cụ chat linh hoạt cho các tình huống cần riêng tư hơn, cục bộ hơn, và ít phụ thuộc hơn.
⚙️ Hoạt động ra sao?
- Không cần tài khoản: không đăng ký, không số điện thoại, không server trung tâm để “giữ danh bạ” cho bạn.
- Bluetooth mesh khi offline: các thiết bị gần nhau kết nối bằng Bluetooth LE. Nếu A không ở gần C nhưng cả hai đều gần B, tin nhắn có thể đi qua B để tới C.
- Multi-hop relay: tin nhắn có thể được chuyển tiếp qua nhiều thiết bị gần đó, tối đa khoảng 7 “bước nhảy”.
- Tự tìm thiết bị gần đó: app tự discovery peer, tức là tự phát hiện người dùng
bitchatkhác trong vùng Bluetooth. - Ưu tiên Bluetooth trước: khi gửi tin nhắn riêng, app sẽ ưu tiên đường Bluetooth nếu có thể vì nhanh và cục bộ hơn.
- Fallback sang Nostr nếu cần Internet: nếu Bluetooth không khả dụng, app có thể dùng Nostr relay để gửi tin qua Internet.
- Location-Based Channels: có các phòng chat theo vị trí địa lý, dùng geohash để chia khu vực như block, neighborhood, city, region.
- Mã hóa đầu cuối cho tin nhắn riêng: dùng Noise Protocol cho mesh và định dạng private envelope riêng của BitChat khi đi qua Nostr.
- Giao diện kiểu IRC: có các lệnh quen thuộc như
/msg,/who,/slap, giúp chat nhanh bằng command. - Emergency Wipe: có cơ chế xóa dữ liệu nhanh bằng triple-tap.
Một ví dụ dễ hình dung:
Bạn và vài người đang ở một khu vực không có Internet.
Mỗi người mở bitchat trên iPhone/macOS.
Thiết bị tự tìm nhau qua Bluetooth.
Tin nhắn có thể đi trực tiếp tới người gần bạn,
hoặc đi qua thiết bị của người khác để tới người ở xa hơn một chút.
Với kênh vị trí qua Nostr:
Bạn có Internet.
Bạn vào một location channel như block/neighborhood/city.
Tin nhắn được gửi qua các Nostr relay,
giúp trò chuyện với người trong khu vực địa lý rộng hơn.
🆚 Khi nào nên dùng / không nên
Nên dùng bitchat khi:
- Bạn cần chat cục bộ, đặc biệt khi Internet yếu, bị chặn hoặc không có.
- Bạn muốn thử mô hình không tài khoản, không số điện thoại, không server trung tâm.
- Bạn cần một app tham khảo để học Bluetooth LE mesh, Nostr relay, mã hóa tin nhắn riêng và routing thông minh.
- Bạn thích trải nghiệm chat gọn, có command, gần với phong cách IRC.
Không nên dùng bitchat khi:
- Bạn cần nhắn tin phổ thông ổn định như iMessage, Signal, WhatsApp cho gia đình/công việc hằng ngày.
- Bạn cần đồng bộ đa thiết bị, backup cloud, gửi file lớn, gọi thoại/video hoặc các tính năng mạng xã hội đầy đủ.
- Bạn cần tương thích chuẩn Nostr private message phổ biến: private envelope của BitChat là định dạng riêng, không tương thích NIP-17, NIP-44 hoặc NIP-59.
- Bạn kỳ vọng Bluetooth mesh hoạt động xa như Internet: Bluetooth vẫn bị giới hạn bởi khoảng cách, vật cản, pin và số lượng thiết bị xung quanh.
So sánh ngắn:
Signal / WhatsApp:
- Dễ dùng, ổn định, phổ biến
- Cần Internet và tài khoản/số điện thoại
IRC:
- Nhanh, gọn, command-based
- Thường cần server
bitchat:
- Không cần tài khoản, có thể offline qua Bluetooth mesh
- Phù hợp tình huống cục bộ/phi tập trung hơn là chat đại chúng hằng ngày
🚀 Bắt đầu nhanh
Cách dễ nhất là cài từ App Store:
Mở App Store
Tìm "bitchat mesh"
Cài ứng dụng "bitchat mesh"
Mở app và bắt đầu tìm người dùng gần đó
Nếu bạn là developer và muốn chạy từ source:
git clone https://github.com/permissionlesstech/bitchat.git
cd bitchat
open bitchat.xcodeproj
Nếu muốn build bản macOS Debug không cần ký app:
xcodebuild -project bitchat.xcodeproj -scheme "bitchat (macOS)" \
-configuration Debug CODE_SIGNING_ALLOWED=NO build
Nếu muốn chạy test SwiftPM:
swift test
Nếu muốn dùng just để thao tác gọn hơn:
brew install just
just check
just run
Nếu muốn build cho thiết bị thật bằng Xcode, tạo cấu hình local trước:
cp Configs/Local.xcconfig.example Configs/Local.xcconfig
open bitchat.xcodeproj
Sau đó mở Configs/Local.xcconfig và thay Team ID mẫu bằng Apple Developer Team ID của bạn.
Ví dụ tối thiểu khi dùng app:
1. Cài bitchat trên 2 thiết bị iOS/macOS.
2. Bật Bluetooth.
3. Mở app trên cả hai thiết bị.
4. Đợi app tự tìm peer gần đó.
5. Gửi tin nhắn trong mesh #bluetooth.
6. Thử lệnh /who để xem ai đang ở gần.
7. Thử /msg <tên-người-dùng> <nội-dung> để gửi tin nhắn riêng.
Ví dụ một vài lệnh kiểu IRC:
/who
/msg alice xin chào
/slap bob
✅ Điểm mạnh & ⚠️ Hạn chế
✅ Điểm mạnh:
- Hoạt động offline qua Bluetooth mesh: hữu ích khi không có Internet hoặc hạ tầng mạng không đáng tin cậy.
- Không cần tài khoản/số điện thoại/server trung tâm: giảm phụ thuộc vào nền tảng tập trung.
- Có mã hóa đầu cuối cho tin nhắn riêng: tăng mức riêng tư khi trò chuyện trực tiếp.
- Có Nostr fallback: khi cần phạm vi rộng hơn Bluetooth, app có thể dùng Internet qua Nostr relay.
- Trải nghiệm gọn kiểu IRC: command nhanh, dễ dùng với người thích chat dạng text.
- Dự án đáng tham khảo: phù hợp để học về Bluetooth LE, mesh network, routing, encryption và app native iOS/macOS.
⚠️ Hạn chế:
- Bluetooth có giới hạn vật lý: khoảng cách, tường, nhiễu sóng, pin và mật độ thiết bị đều ảnh hưởng chất lượng kết nối.
- Không thay thế hoàn toàn app chat phổ thông: thiếu nhiều tiện ích quen thuộc như gọi điện, video, backup cloud hoặc hệ sinh thái lớn.
- Nostr private envelope là định dạng riêng: dùng Nostr làm lớp truyền tải nhưng không tương thích chuẩn private message Nostr phổ biến như NIP-17, NIP-44, NIP-59.
- Vẫn có metadata cục bộ: mesh dùng một định danh thiết bị bền vững dẫn xuất từ identity key, nên thiết bị radio gần đó có thể quan sát một số dấu vết kết nối.
- Cần cẩn thận nguồn cài đặt: nên cài từ App Store hoặc tự build từ source đã kiểm tra; bản build trôi nổi bên ngoài có thể không đáng tin.