End-to-end encrypted, cross-device sync for files, messages, and clipboard. The server is a zero-knowledge relay β it never sees your plaintext.
Pocketbridge is split into three repositories that move together:
| Repo | Role | Stack |
|---|---|---|
| π₯οΈ pocketbridge-backend | Zero-knowledge relay + device pairing | Node, Express, WebSocket, Redis, PostgreSQL |
| π pocketbridge-frontend | Web client (offline-capable PWA) | Next.js, TypeScript |
| π± pocketbridge-mobile | Mobile app | Expo / React Native, TypeScript |
π± mobile βββ βββ π web
(RN/Expo) β pair via QR, then exchange only β (Next.js PWA)
β ENCRYPTED blobs β
βΌ βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββ
β pocketbridge-backend (zero-knowledge relay) β
β Node + Express + WebSocket + Redis pub/sub β
β βΊ pairs devices, routes ciphertext β
β βΊ NEVER holds keys, NEVER sees plaintext β
βββββββββββββββββββββββββββββββββββββββββββββββββ
- MTProto 2.0-style protocol, implemented on NaCl / tweetnacl primitives.
- Ed25519 signatures (device identity), ECDH key agreement, HKDF key derivation.
- All encryption happens on-device; the relay only ever forwards ciphertext.
- Yjs CRDTs keep multi-device state conflict-free.
Each client (web, mobile) and the relay deploy independently and have different runtimes,
so they live in separate repos β grouped by the pocketbridge topic.
Built by Bishwas Khanal.