reference

Cloud security and data boundary

Understand Docmancer Cloud encryption, metadata exposure, browser decryption, and verification controls.

Updated

The cloud service is an authenticated append-only mailbox for encrypted memory revisions. Clients own canonical serialization, encryption, signatures, durable application, merge semantics, and local indexing.

Encryption construction

  • RFC 8785 JCS canonicalizes payloads.
  • XChaCha20-Poly1305 IETF encrypts revisions.
  • Ed25519 signs each envelope with a device key.
  • X25519 sealed boxes wrap the workspace key for approved devices.
  • HKDF-SHA256 derives the workspace-scoped HMAC key used for opaque references.

Python and TypeScript implementations share checked fixtures for JCS bytes, revision identifiers, associated data, signature input, ciphertext, and signatures.

Observable metadata

The service can observe account, workspace, membership, device, IP, user agent, subscription, timing, ciphertext sizes, transfer volume, revision-graph shape, and the social graph of membership. It cannot decrypt memory without key material held by approved devices or the recovery flow.

Browser unlock

The dashboard generates browser device keys locally and registers only public keys. After an existing device approves the browser, it fetches that device's wrapped workspace key and encrypted stream. Unwrapping and envelope decryption run in the browser session. Plaintext is not sent back to the API.

The design has not yet received an independent external cryptographic review, so Docmancer does not make a zero-knowledge assurance claim.

Encrypted local relay

The browser cannot read local files, rebuild SQLite indexes, inspect hooks, use operating-system credentials, or run local audit and documentation workflows by itself. An approved device can explicitly start docmancer cloud relay to execute those operations through the real local backend.

The browser encrypts the action name and arguments with the workspace key and signs the request. The selected device verifies and decrypts it, checks a fixed Docmancer action allowlist, runs it locally, then encrypts and signs the result. The service can observe source and target device IDs, timing, expiry, state, and ciphertext size, but not the action, arguments, result, query text, memory text, or local path.

The relay makes outbound HTTPS requests only. It opens no local listening port, blocks mutations unless started with --allow-writes, and never accepts shell commands. Requests expire after two minutes by default, the API caps expiry at five minutes, and the worker removes expired relay ciphertext after 24 hours.