v0.7.0-phase6 — self-hosted encrypted sync
Pre-release
Pre-release
Phase 6: self-hostable, zero-knowledge encrypted sync.
sync/is a dumb encrypted blob store the user runs themselves; nothing hosted by the project. All key derivation and encryption are client-side (passphrase → PBKDF2 → HKDF → Kenc/Kmac/Kauth/group_id); the server only holds opaque ciphertext and a hash of the group auth token.- Pure stdlib (http.server + sqlite3): server, reference client, and 15-test suite pass on Python 3.9 with no third-party packages. Live pair→push→pull round-trip verified; DB inspection confirms only ciphertext at rest.
- Endpoints authenticated with request-binding HMAC proofs + constant-time compare; last-writer-wins with tombstones. Dockerfile/compose included (TLS is the operator's job).
- Shipped AEAD is a documented encrypt-then-MAC construction (stdlib has no AES-GCM); PROTOCOL.md specifies the production upgrade path. Browser-side client integration deferred (ADR-0006).