For the curious engineer.

Technicals.

The splash sells the values. This page sells the stack. Everything Engram does, named honestly.

01 — SYNC

Sync architecture.

Real-time bidirectional sync over WebSocket via Phoenix Channels. Cluster distribution rides Erlang OTP — no Redis, no external broker. PubSub fan-out happens in-process, no network hop.

WEBSOCKET: PHOENIX CHANNELS
DISTRIBUTION: ERLANG OTP
REDIS: NONE
FAN-OUT: IN-PROCESS PUBSUB
02 — SEMANTIC RECALL

Semantic recall.

RAG-style retrieval over your vault. Voyage AI voyage-4-large for documents (1024d), voyage-4-lite for queries — asymmetric retrieval cuts query cost without losing recall. Qdrant Cloud with binary quantization plus rescore.

> notes about cognitive bandwidth
/research/2026-05/cognitive-load.md  · 0.94
/inbox/working-memory-limits.md    · 0.89
/zettel/0042-attention-budget.md  · 0.87
03 — CONFLICT RESOLUTION

Conflict resolution.

Disjoint edits auto-merge via diff-match-patch 3-way merge. Real conflicts open a side-by-side modal. Offline edits queue and replay on reconnect, deduplicated by path.

MERGE_TYPE: 3-WAY
DIFF: MATCH-PATCH
ON_CONFLICT: SIDE-BY-SIDE
OFFLINE: QUEUED
04 — ENCRYPTION + ISOLATION

Encryption + isolation.

AES-GCM envelope encryption. Note bodies and attachments encrypted with per-user DEK/KEK. PostgreSQL Row Level Security enforces tenant isolation at the database layer. Path sanitization defends against traversal.

  • AES-GCM
  • MULTI-TENANT RLS
  • SELF-HOSTABLE
05 — STORAGE

Storage.

Binary attachments stored on Fly Tigris (S3-compatible). Encrypted at rest with the same envelope keys as note bodies. Push and pull tracked alongside markdown so an attachment never dangles.

06 — MOBILE TRANSPORT

Mobile transport.

iOS and Android use Obsidian's requestUrl() API to bypass CORS without proxy hops. Full feature parity with desktop — same edits, same offline queue, same encryption.