# Messaging and a call **What it shows.** A conversation and a call, side by side. In the conversation each member makes its own key in its tab, keys into one end-to-end encrypted group through the service's log, seals each message before it leaves the tab, and opens and verifies each one it reads: the service stores ciphertext and signed records, never the text. A call is placed with a proof of the caller's key; the invitation rings in the callee's inbox, checked before it rings; answered, both enter a room with the grants the call came with. One that rings out is signed as missed by the room's clock. **Run it.** ```sh wai create my-chat --template messaging cd my-chat wai dev ``` Open `http://127.0.0.1:8080/` in two browsers (two tabs of one browser share nothing, so that works too). **What you see.** On the left, join the conversation in each and write: each side reads the other's messages, with threads, reactions, edits and retractions. On the right, paste one tab's key (under **Your key**) into the other's **Keys to call** and press **Call**: the first tab's inbox rings, and answering opens the call, camera and microphone on both sides. **Make it yours.** The conversation's API is under `/msg-api/` and the call's under `/room-api/`; both pages take `?service=` to point at them. **With a coding assistant.** Run `wai setup-agent` in this directory: it writes the instructions an assistant reads and connects it to WAI's tools. **License.** Apache-2.0: the text is in `LICENSE`, and a project `wai create` makes from this example carries it.