I built elm.chat around a narrow idea: a conversation should not automatically become a permanent server-side asset.

It is not a replacement for a contact network or a claim that metadata can disappear. It is a disposable room for one live conversation. The interesting engineering question was how to make that room reliable without giving the server a readable or persistent transcript.

The current answer is:

React and Web Crypto in the browser

one Cloudflare Worker for the app and API