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]>
34 lines
1.5 KiB
Markdown
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.
|