open-standards/wai/examples/messaging/README.md
Transaction Science e8c8327631 wai/examples: every template Apache-2.0, its LICENSE carried into the project
Each example holds the license's text as LICENSE (wai/LICENSE, byte for byte) and says so in
its README; wai create writes it with the rest of the template, from one copy in the binary.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-27 04:52:31 -04:00

34 lines
1.5 KiB
Markdown

# 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.