open-standards/wai/examples/messaging
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Transaction Science db358c7fd5 The skill lists every core tool, and setup-agent keeps to its own block
The skill's core toolset names toolchain_doctor, and says where the specification's
text comes from for an installed binary. A test holds each toolset's line to that
toolset's tools both ways, and each command's flags to the catalogue. The 9 templates
carry the new text.

setup-agent takes no marker from a closed code fence, adds frontmatter only with the
block, sees frontmatter after a byte order mark, and leaves alone a path with a file
where it needs a directory, setting up the rest of the project.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-07 03:08:05 -05:00
..
.agents/skills/wai The skill lists every core tool, and setup-agent keeps to its own block 2026-11-07 03:08:05 -05:00
test wai: the developer's path, hello, create, dev and verify, a floor build with no system library, and nine examples 2026-10-26 22:58:39 -04:00
.gitignore wai: the developer's path, hello, create, dev and verify, a floor build with no system library, and nine examples 2026-10-26 22:58:39 -04:00
AGENTS.md wai/toolchain-fixes, converted to the layout of the fix: no shared append point 2026-11-05 01:45:34 -05:00
index.html wai: the developer's path, hello, create, dev and verify, a floor build with no system library, and nine examples 2026-10-26 22:58:39 -04:00
LICENSE wai: LICENSE holds the Apache License 2.0's exact text 2026-11-07 01:49:11 -05:00
README.md wai/examples: every template Apache-2.0, its LICENSE carried into the project 2026-10-27 04:52:31 -04:00
wai.json wai/toolchain-fixes, converted to the layout of the fix: no shared append point 2026-11-05 01:45:34 -05:00

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.

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.