Welcome to PocketChat - a three-part stack for secure, end-to-end encrypted messaging that prioritises privacy, user control and coolness.
WARNING - This software has not received external security reviewd and may contain vulnerabilities and may not necessarily meet its stated security goals. Do not use it for sensitive use cases, and do not rely on its security until it has been reviewed. Work in progress.
PocketChat consists of three main components that work together to provide secure messaging:
- Drive Backend - Local API server handling encryption and storage
- Drive Frontend - React/Next.js user interface
- Relay Server - Zero-knowledge message relay service
If you haven't yet figured it out, one for each dot in our logo.
- Visit the PocketChat website: pocketchat.joebroughton.tech
- Follow the setup guide: Complete step-by-step instructions for all platforms
- Use the Drive Linker: Automated setup script that coordinates all components
We host an optional default Relay Server instance for you, but feel free to set up your own!
Current relay status and version:
Each repository contains developer-focused documentation. Check out the READMEs in the appropriate repositories.
Checkout SECURITY_MODEL.MD for the real detail.
PocketChat implements a zero-knowledge architecture:
- End-to-End Encryption: Messages encrypted client-side before transmission
- Multi-Layer Security: AES + RSA for message transmission, and passkey-based local storage encryption
- Digital Signatures: Cryptographic message authentication
- Local-First: Sensitive data never leaves your device unencrypted
┌─────────────────┐
│ Drive Linker │
│ (Setup Tool) │
└─────────────────┘
│ │
▼ ▼
┌─────────────────┐ ┌─────────────────┐
│ Drive Frontend │──────────▶│ Drive Backend │
│ (Next.js UI) │◀──────────│ (FastAPI Local)│
└─────────────────┘ └─────────────────┘
▲ │
│ ▼
┌─────────────────┐
│ Relay Server │
│ (Message Relay) │
└─────────────────┘
- Message Creation: User types message in Frontend
- Local Encryption: Backend encrypts with recipient's public key
- Relay Transmission: Encrypted message sent to Relay Server
- Message Retrieval: When online, recipient's backend polls Relay Server
- Local Decryption: Backend decrypts with recipient's private key and saves locally
- Display: Frontend displays decrypted message
- Language: Python (FastAPI)
- Purpose: Local encryption, key management, and storage
- Key Features: Triple-layer encryption, digital signatures, local storage
- Language: TypeScript (Next.js/React)
- Purpose: User interface and client-side operations
- Key Features: Chat interface, enrollment wizard, responsive design
- Language: Python (FastAPI + PostgreSQL)
- Purpose: Zero-knowledge message relay
- Key Features: Identity authentication, automatic cleanup, rate limiting
- Language: System scripts + submodules
- Purpose: Quick single repo pull and command for running Drive-Frontend and Drive-Backend
- Key Features: One liner start command
- Language: TypeScript (Next.js)
- Purpose: Documentation and setup guides
- Key Features: Interactive guides, multi-platform instructions
All repositories use coordinated versioning:
| Version | Backend | Frontend | Relay | Status |
|---|---|---|---|---|
| 0.1.x | ✅ 0.1.0 | ✅ 0.1.0 | ✅ 0.1.0 | Current |
We welcome contributions! Each repository has detailed contributing guidelines:
When contributing across repositories:
- Version Sync: Major.minor versions must match across repos
- Testing: Test integration between all three components
- Documentation: Update relevant documentation in all affected repos
- Security: Follow our security guidelines for cryptographic changes
Security is our top priority. Please review:
Do not report security vulnerabilities through public issues.
Email: joe@moored.to
All PocketChat components are licensed under the Apache License 2.0, which requires attribution and preserves copyright notices.
- Issues: Report bugs and request features in individual repositories
- Discussions: General questions and community chat
- Documentation: User guides at pocketchat.joebroughton.tech
- Lets see where things go
PocketChat - Privacy is right in your pocket.