Files
quicproquo/docs/sdk/index.md
Christian Nennemann 2e081ead8e chore: rename quicproquo → quicprochat in docs, Docker, CI, and packaging
Rename all project references from quicproquo/qpq to quicprochat/qpc
across documentation, Docker configuration, CI workflows, packaging
scripts, operational configs, and build tooling.

- Docker: crate paths, binary names, user/group, data dirs, env vars
- CI: workflow crate references, binary names, artifact names
- Docs: all markdown files under docs/, SDK READMEs, book.toml
- Packaging: OpenWrt Makefile, init script, UCI config (file renames)
- Scripts: justfile, dev-shell, screenshot, cross-compile, ai_team
- Operations: Prometheus config, alert rules, Grafana dashboard
- Config: .env.example (QPQ_* → QPC_*), CODEOWNERS paths
- Top-level: README, CONTRIBUTING, ROADMAP, CLAUDE.md
2026-03-21 19:14:06 +01:00

2.9 KiB

quicprochat SDK Documentation

This guide covers how to build clients for the quicprochat E2E encrypted messenger using the official SDKs or by implementing your own.

Official SDKs

Language Location Transport Status
Rust crates/quicprochat-client QUIC + Cap'n Proto Production
Go sdks/go/ QUIC + Cap'n Proto Production
TypeScript sdks/typescript/ WebSocket bridge + WASM crypto Production
Python sdks/python/ QUIC + Protobuf (v2) / Rust FFI Production
C crates/quicprochat-ffi/ Rust FFI (synchronous) Production
Swift sdks/swift/ C FFI wrapper In progress
Kotlin sdks/kotlin/ JNI + C FFI In progress
Java sdks/java/ JNI + C FFI In progress
Ruby sdks/ruby/ FFI gem In progress

Documentation

Architecture Overview

  Client SDK                     Server
  ─────────                     ──────
  ┌──────────┐   QUIC/TLS 1.3   ┌──────────┐
  │ App code │ ◄──────────────► │ RPC      │
  │          │   v2 wire frames  │ dispatch │
  │ SDK API  │                   │          │
  │          │   [method_id:u16] │ handlers │
  │ Proto    │   [req_id:u32]    │          │
  │ encode/  │   [len:u32]       │ storage  │
  │ decode   │   [protobuf]      │          │
  │          │                   │          │
  │ QUIC     │                   │ QUIC     │
  │ transport│                   │ listener │
  └──────────┘                   └──────────┘

Each RPC call opens a new QUIC bidirectional stream. The request and response use the same 10-byte framing header followed by a protobuf payload.

Quick Start

  1. Choose an SDK for your language
  2. Connect to the server over QUIC (or WebSocket bridge for browsers)
  3. Authenticate with OPAQUE (register or login)
  4. Upload MLS key packages for E2E encryption
  5. Send and receive encrypted messages

Canonical Schemas

  • Protobuf (v2): proto/qpc/v1/*.proto -- 14 service definitions
  • Cap'n Proto (v1): schemas/*.capnp -- legacy RPC interface

The protobuf schemas in proto/qpc/v1/ are the canonical API contract for the v2 protocol. New SDKs should implement against these definitions.