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
2.9 KiB
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
- Wire Format -- v2 QUIC + Protobuf wire protocol
- Rust SDK -- Native Rust client
- Go SDK -- Go client with QUIC transport
- Python SDK -- Python client (async QUIC + sync FFI)
- TypeScript SDK -- Browser/Node.js client with WASM crypto
- C FFI -- C bindings for language integrations
- Build Your Own SDK -- Guide for implementing a new language SDK
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
- Choose an SDK for your language
- Connect to the server over QUIC (or WebSocket bridge for browsers)
- Authenticate with OPAQUE (register or login)
- Upload MLS key packages for E2E encryption
- 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.