# WAI The `wai` command line, and the reference software `wai dev` runs on your own machine. All of it is open source under Apache-2.0, built from the open-standards repository (`wai/quickstart/build.sh`). | File | What it is | |---|---| | `bin/wai` | The command line: `hello`, `create`, `dev`, `verify`, and the envelope tools (`inspect`, `wrap`, `unwrap`, `encode`, `decode` for the mandatory floor, `capabilities`) | | `bin/wai-relay` | The relay a room's media goes through: MOQT over QUIC, WebTransport and WebSocket | | `bin/wai-room` | The room service: a room's keys, its grants, its clock | | `bin/wai-ingest` | The ingest gateway: WHIP, SRT and RTMP into a room, each group signed at the first hop, and WHEP out | | `bin/wai-remote-host` | A remote desktop room's host agent | | `bin/wai-pack` | The packager: a title as WAI objects, HTTP playlists and a MoQ catalog | | `bin/wai-quantum` | The quantum command line: OpenQASM programs run on this machine, the result signed | | `share/wai/web/` | The room client a browser loads: its pages and their WebAssembly | | `share/wai/studio/` | WAI Studio, which `wai dev` serves at `/_wai/` | ## Start ```sh wai hello # WAI's four steps on a sample: name, dispatch, rebuild, receipt wai create my-room --template video-room # a video room in one page cd my-room wai dev # the relay, the room service and your page, on 127.0.0.1:8080 wai verify ../wai-hello # the receipts hello wrote, checked offline ``` `wai create --list` names every template. `wai dev --help` gives its options. Nothing here needs an account, and nothing is sent off your machine. Keep `bin/` and `share/` side by side: `wai dev` finds the relay, the room service, the room client and Studio beside itself. Homebrew and Scoop install `wai-quantum` as a package of its own, which `wai` depends on. ## Ports What each program listens on by default, on 127.0.0.1. `wai dev` serves everything on one origin and runs its own relay and room service on free ports behind it; the other rows are each daemon's own default, as its example configuration or its source sets it, for running it alone. No two of them share a port, so any of them run side by side. A deployment sets its own. | Port | Program | What | Set by | |---|---|---|---| | 8080 | `wai dev` | your page at `/`, the room service at `/room-api/`, the relay at `/moq`, Studio at `/_wai/` | `--port` | | 4443/udp | `wai-relay` | MOQT over QUIC, and WebTransport | `quic_listen` | | 4480 | `wai-relay` | MOQT over WebSocket | `websocket_listen` | | 9682 | `wai-room` | the room service's HTTP API | `listen` | | 8088 | `wai-ingest` | WHIP and WHEP | `[http] listen` | | 1935 | `wai-ingest` | RTMP | `[rtmp] listen` | | 1936 | `wai-ingest` | RTMPS, off until set | `[rtmp] tls_listen` | | 5167 | `wai-ingest` | SCTE 104 automation, off until set | `[injector] listen` | | 9000/udp | `wai-ingest` | SRT, off until set | `[contrib.srt] listen` | | 9694 | `wai-audit` | the audit collector | `WAI_AUDIT_ADDR` | | 8251 | `wai-ledger` | the receipt ledger | `WAI_LEDGER_ADDR` | | 8252 | `wai-fleet` | the fleet service | `WAI_FLEET_ADDR` | | 8241 | `wai-quantum-service` | the quantum job service | `WAI_QSVC_ADDR` | | 9670 | `wai-world-relay` | the interactive worlds' relay | `WAI_RELAY_BIND` | | 9690 | `wai_stitched_presentation serve` | the stitched presentation verifier | `--listen` | | 8380 | `wai http origin` | an HTTP origin of WAI objects | `--port` | A program that reaches another names that one's port: the room service's `relay_url` is the relay's WebSocket (`ws://127.0.0.1:4480/moq`), and the ingest gateway's `[relay] addr` is the relay's QUIC endpoint (`127.0.0.1:4443`). joule-moq-room's `tests/ports.rs` holds every row to the program that serves it. ## More - The standard and its documentation: https://wai.transaction.science/ - The source: https://git.transaction.science/Transaction-Science/open-standards