protestchat 是一款离线网格通信应用,专为网络中断和受干扰的抗议活动设计,通过蓝牙直接连接手机,无需服务器、基站或账户。

Stars

220

7 天增长

+56

Fork 数

35

开放 Issue

34

开源协议

MIT

最近更新

2026-07-26

AI 仓库情报摘要
FR-AI / ANALYSIS

为什么值得关注

它针对警察在抗议中干扰通信的实际需求,采用流行病路由防止流量分析,提供四种消息模式且无特权操作,采用 MIT 许可鼓励广泛使用。

适合谁使用

  • 面临网络中断地区的抗议者和活动人士
  • 评估离线通信安全性的安全研究人员
  • 开发抗审查通信工具的开发者
  • 在限制区域协调工作的非政府组织

典型使用场景

  • 通过「附近所有人」发送群体警告,如「4号出口被封锁」
  • 使用口令频道与志同道合的小组协调
  • 通过加密群组(扇出模式,无共享密钥)进行私密通信
  • 走出干扰区域后使用存储转发功能传递消息

项目优势

  • 完全不依赖蜂窝网络、互联网或任何服务器
  • 流行病路由隐藏通信模式——无路由表可供泄露
  • 安全关键代码为共享 TypeScript(约85%),只有一个可审计的实现
  • 包含 72 项测试,覆盖加密、有线格式和网格逻辑

使用前须知

  • iOS 构建因 BLE GATT 问题受阻,且后台 BLE 在两大平台上均未解决
  • 缺失多项功能:图片、双棘轮、口令强度校验、女巫/洪水防护
  • 网格只能在两台实体手机上测试,模拟器无法模拟

README 快速开始

protestchat

connected to a nearby phone — no internet, no tower, no server required.

Off-grid messaging for internet shutdowns and jammed protests. Phones talk directly to each other over Bluetooth — no cell tower, no ISP, no server, no account.

Using the app? Start with the plain-language guide in website/ (Astro Starlight). Hosting the public URL is tracked in #61.

Built after Delhi Police deployed portable cellular jammers at Jantar Mantar on 20 July 2026 alongside an unpublished mobile internet restriction. Those jammers target 3G/4G/5G only. 2.4 GHz is untouched, so two phones standing next to each other were still perfectly capable of talking — there was just no user-friendly & acessible app to do it.

How it works

┌──────────────── shared TypeScript (~85%) ────────────────┐
│  UI · SQLite · sealing · dedup · relay · expiry          │
├──────────────────────────┬───────────────────────────────┤
│  Swift (iOS)             │  Kotlin (Android)             │
│  CoreBluetooth           │  BLE GATT                     │
└──────────────────────────┴───────────────────────────────┘
              BLE / Wi-Fi Direct — no tower, no ISP

The native layer is a dumb byte pipe: advertise, discover, connect, send bytes, receive bytes. It contains no chat logic, no storage, and no crypto, so there is exactly one implementation of the security-critical code to audit rather than three that drift apart.

Routing is epidemic, not addressed. There are no routing tables, because a routing table is a map of who talks to whom. Every phone carries every unexpired envelope it has seen and offers it to every peer it meets; the recipient is simply whoever can decrypt it. This costs battery and bandwidth and buys the property that a captured phone reveals nothing about who was talking to whom.

It also means a phone is a courier. Someone who walks out of a jammed zone carries queued messages with them and delivers them on the other side.

Four ways to send

Who reads itUse it for
Everyone nearbyAnyone in range, including police running this appCrowd warnings: "exit blocked at gate 4"
ChannelAnyone with the passphraseAn affinity group that needs to grow by word of mouth
GroupOnly the people you addedYour a

项目描述

Encrypted messaging with no internet, no cell tower, and no server. Phones relay for each other over Bluetooth mesh, so it keeps working during internet shutdowns and inside cellular jammers

相关仓库与替代方案

根据分类、Topic 和编程语言匹配的相似项目。

TanStack
精选
TanStack GitHub avatar

router

TanStack Router is a type-safe, data-driven React router with built-in caching, prefetching, and nested layouts, while TanStack Start extends it into a full-stack SSR framework.

Web 开发前端框架
14,861
vercel-labs
精选
vercel-labs GitHub avatar

scriptc

scriptc compiles ordinary TypeScript into small, fast native executables without needing Node.js, V8, or any JavaScript runtime in the binary.

开发者工具代码质量与构建
1,985
Jakubantalik
精选
Jakubantalik GitHub avatar

thinking-orbs

A React component library that renders six hand-tuned animated thought orb loading indicators on a plain 2D canvas, with two purpose-tuned sizes and automatic theme detection for AI and agent UIs.

AI 与机器学习AI 智能体
1,191