### The command line's doors to the development room, its logs and sessions, and parameter sets - **The development room on the command line**: `wai room join --principal NAME`, `wai room leave --principal NAME` and `wai session show` are the operations `room.join`, `room.leave` and `session.show`, which `wai mcp`'s `dev` tools served, on the stack `wai dev` runs on this machine (its record, `.wai/dev/stack.json`, refused as stale when that stack is not running). A join asks the stack's room service for a publisher's grant for the test principal's key, derived from its name as `wai mcp` derives it, and enters it through the stack's synthetic participants, where it stays until `wai room leave`; a join and a leave wait for `--yes`, as a change to a target does. `wai room invite` (`room.invite`) signs an invitation to host the room's remote desktop, from the room's keys in the stack's directory, by the room service's invite mode. - **The stack takes control lines on its origin**: `POST /_wai/api/control`, under the rules of Studio's routes (this origin as the host, `X-WAI-Studio: 1`, no other origin), takes the lines `wai dev --control` takes on standard input, `stop` aside, and starts the synthetic participants on the first when `--control` did not. One process answers one line at a time from either. - **`--target local`** is the room service of that stack: `wai room show --target local`, `wai room grant --target local` and every operation of the room service's API reach it once its origin says it is the stack recorded there. It was a usage error; with no stack recorded it is exit 5 (`stack-not-found`). - **The stack's logs and sessions**: `wai log tail` (`log.tail`) reads a log the stack keeps in its directory (`relay`, `room`, `conversation` or `participants`), from a byte or its last 64 KiB, and `wai session list` (`session.list`) the relay's signed session summaries (`sessions.jsonl`), the last 50 by default. With `--follow` each reads on as the file grows while the stack runs, and with `--json` each read is one line of the stream schema the catalogue gives it. - **Parameter sets by their pin**: `wai prior verify --sha256 ` (`prior.verify`) holds a directory (a set of the form `wai.prior.set`: its listing, as `wai prior-set` prints it) or a file to a pin, exit 1 when its SHA-256 is another. `wai prior fetch --out PATH` (`prior.fetch`, in a build with `prior_carriage` and `cli_tls`) asks set roots in the order http-delivery ยง8.7 gives them (each `--root`, a location hint's, the origin's `/.well-known/wai-sets/`) through `locations::fetch_set`, which holds a response only when its digest is the one asked for, and writes a listing as a directory of its files, each checked by its own digest. Every request and what came of it is in the report. - **The catalogue over MCP**: `ops_search` (`ops.search`) and `ops_show` (`ops.show`) are tools of the `core` toolset. - **`--fields a,b.c`** with `--json` keeps only those members of `data` (a dotted path reaches into one; of each item of a list), and never the envelope's own: `wai`, `op`, `ok`, `error` and `exit` are there whatever is named. Without `--json` it is a usage error. - **`--features full`** (wai-rs) holds every operation of the catalogue: each feature an operation needs, and where it needs any one of several, the one that needs no system library. The catalogue's tests hold the list to the table both ways, and wai-catalogue.yml runs the command line's tests in that build.