Skip to content
@PocketChat

PocketChat

Small things coming soon

PocketChat Ecosystem

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.

Overview

PocketChat consists of three main components that work together to provide secure messaging:

  1. Drive Backend - Local API server handling encryption and storage
  2. Drive Frontend - React/Next.js user interface
  3. Relay Server - Zero-knowledge message relay service

If you haven't yet figured it out, one for each dot in our logo.

Quick Start

For Users

  1. Visit the PocketChat website: pocketchat.joebroughton.tech
  2. Follow the setup guide: Complete step-by-step instructions for all platforms
  3. 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:  PocketChat-Hosted Relay Status

For Developers

Each repository contains developer-focused documentation. Check out the READMEs in the appropriate repositories.

Architecture

Security Model

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

Component Interaction

                       ┌─────────────────┐
                       │   Drive Linker  │
                       │   (Setup Tool)  │
                       └─────────────────┘
                          │           │
                          ▼           ▼
        ┌─────────────────┐           ┌─────────────────┐
        │  Drive Frontend │──────────▶│  Drive Backend  │
        │   (Next.js UI)  │◀──────────│  (FastAPI Local)│
        └─────────────────┘           └─────────────────┘
                ▲ │
                │ ▼
        ┌─────────────────┐
        │  Relay Server   │
        │ (Message Relay) │
        └─────────────────┘

(Simplified) Data Flow

  1. Message Creation: User types message in Frontend
  2. Local Encryption: Backend encrypts with recipient's public key
  3. Relay Transmission: Encrypted message sent to Relay Server
  4. Message Retrieval: When online, recipient's backend polls Relay Server
  5. Local Decryption: Backend decrypts with recipient's private key and saves locally
  6. Display: Frontend displays decrypted message

Repository Structure

  • 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

Version Compatibility

All repositories use coordinated versioning:

Version Backend Frontend Relay Status
0.1.x ✅ 0.1.0 ✅ 0.1.0 ✅ 0.1.0 Current

Contributing

We welcome contributions! Each repository has detailed contributing guidelines:

Coordinated Development

When contributing across repositories:

  1. Version Sync: Major.minor versions must match across repos
  2. Testing: Test integration between all three components
  3. Documentation: Update relevant documentation in all affected repos
  4. Security: Follow our security guidelines for cryptographic changes

Security

Security is our top priority. Please review:

Reporting Security Issues

Do not report security vulnerabilities through public issues.

Email: joe@moored.to

License

All PocketChat components are licensed under the Apache License 2.0, which requires attribution and preserves copyright notices.

Community

  • Issues: Report bugs and request features in individual repositories
  • Discussions: General questions and community chat
  • Documentation: User guides at pocketchat.joebroughton.tech

Roadmap

  • Lets see where things go

PocketChat - Privacy is right in your pocket.

Pinned Loading

  1. .github .github Public

Repositories

Showing 1 of 1 repositories

Top languages

Loading…

Most used topics

Loading…