Encrypt in the browser
AES-256-GCM protects message and file content. Conversation keys are derived using P-256 ECDH and HKDF-SHA-256; private identity keys are non-exportable CryptoKey objects in IndexedDB.
Private content. Visible engineering.
Educational encrypted chat and file sharing, packaged with reproducible deployment and operational tooling.
Client-side encryption, identity trust boundaries, and operational tooling.
AES-256-GCM protects message and file content. Conversation keys are derived using P-256 ECDH and HKDF-SHA-256; private identity keys are non-exportable CryptoKey objects in IndexedDB.
An encrypted messenger needs both a content-security boundary and an understandable operational setup. Deployment, recovery, and identity trust all affect what the system can actually promise.
Messages and files are encrypted in the browser. The application combines authenticated WebSockets with a single-host Docker deployment, Caddy HTTPS routing, metrics, logs, and backup/restore tooling.
A simplified architecture overview. The repository documents the implementation details.
AES-256-GCM protects message and file content. Conversation keys are derived using P-256 ECDH and HKDF-SHA-256; private identity keys are non-exportable CryptoKey objects in IndexedDB.
Trust-on-first-use fingerprints block later identity-key changes. This protects subsequent contacts but leaves the first-contact key substitution limitation explicit.
The repository includes health/readiness endpoints, private Prometheus metrics, Grafana provisioning, immutable-tag rollback commands, and backup/restore verification.
Browser-side messages and files.
Docker Compose and Caddy routing.
Metrics, logs, alerts, and Grafana configuration.
Capabilities and result snapshots follow the project's current README, reviewed October 10, 2026. Read the source
Explore a reviewed protocol with forward secrecy and a deliberate device/key-recovery design.
Open my Cloud & DevOps CVSame journey. Different engines.