All checks were successful
joule-moq-remote host agent / joule-moq-remote · does this change touch it (pull_request) Successful in 6s
joule-moq-room room service / joule-moq-room · does this change touch it (pull_request) Successful in 8s
joule-moq-web browser client / joule-moq-web · does this change touch it (pull_request) Successful in 6s
standards workspaces build + test / which workspaces this change touches (pull_request) Successful in 8s
wai-audit collector and player integration / does this change touch it (pull_request) Successful in 7s
WAI operation catalogue / does this change touch it (pull_request) Successful in 7s
wai-app and Create / wai-app · does this change touch it (pull_request) Successful in 15s
WAI breaking changes and the conformance runner / WAI breaking · does this change touch WAI (pull_request) Successful in 14s
WAI conformance / does this change touch it (pull_request) Successful in 5s
WAI examples / WAI examples · does this change touch them (pull_request) Successful in 7s
wai-fleet service / does this change touch it (pull_request) Successful in 5s
WAI energy receipts / does this change touch it (pull_request) Successful in 18s
WAI JPEG-AI whole decode (pinned inputs, required) / does this change touch it (pull_request) Successful in 8s
wai-key-proxy / does this change touch it (pull_request) Successful in 8s
wai-ledger service / does this change touch it (pull_request) Successful in 5s
wai-pack / wai-pack · does this change touch it (pull_request) Successful in 8s
wai-quantum docs, course and locales / does this change touch it (pull_request) Successful in 6s
wai-ops-gpu integer operators on GPUs / does this change touch it (pull_request) Successful in 9s
WAI neural sink gates / does this change touch it (pull_request) Successful in 19s
wai-quantum for JavaScript / does this change touch it (pull_request) Successful in 7s
wai-quantum WebGPU member / does this change touch it (pull_request) Successful in 6s
wai-quantum studio and desktop / does this change touch it (pull_request) Successful in 10s
wai-sink-android native sink library / does this change touch it (pull_request) Successful in 7s
WAI mbt2018_mean integer decode (regenerated vectors) / does this change touch it (pull_request) Successful in 11s
wai-web reach builds / wai-web reach · does this change touch it (pull_request) Successful in 7s
wai-web wasm32 / does this change touch it (pull_request) Successful in 8s
WAI Studio / does this change touch it (pull_request) Successful in 11s
wai-sink-swift native sink package / does this change touch it (pull_request) Successful in 17s
joule-code conformance gate / joule-moq-relay, every target (pull_request) Successful in 3m4s
joule-code conformance gate / Build + round-trip C1-C4 vectors (pull_request) Successful in 3m16s
repository checks / lockfiles, advisories, tests in CI, workflow hygiene, spec and section references, public text (pull_request) Successful in 2m5s
joule-code conformance gate / joule-moq-ingest, every target (pull_request) Successful in 5m8s
WAI conformance / fast integer kernels, every x86_64 kernel set (AVX-512 silicon) (pull_request) Successful in 3m22s
joule-code conformance gate / joule-moq-relay, its own energy on a counter (macos) (pull_request) Successful in 36s
wai-app and Create / wai-app · tests, clippy, the line language's verifier (linux) (pull_request) Successful in 35s
wai-audit collector and player integration / collector · linux (pull_request) Successful in 1m8s
wai-quantum WebGPU member / member · DX12 and Vulkan (cbio-windows) (pull_request) Successful in 12m1s
WAI breaking changes and the conformance runner / WAI breaking and conform · their tests, and the independent verifiers through wai conform · linux (pull_request) Successful in 2m42s
WAI conformance / cross-arch byte-equality · linux (pull_request) Successful in 27s
WAI breaking changes and the conformance runner / WAI breaking · wire, record and API against main · linux (pull_request) Successful in 3m10s
WAI conformance / faces from keypoints under wasm32-wasip2 (wasmtime) (pull_request) Successful in 1m42s
WAI operation catalogue / the catalogue and every door · linux (pull_request) Successful in 6m13s
WAI conformance / quantum core and corpus under wasm32-wasip2 (wasmtime) (pull_request) Successful in 4m14s
wai-quantum WebGPU member / member · integrated GPU, Vulkan (framework-128gb) (pull_request) Successful in 10m34s
wai-fleet service / service · linux (pull_request) Successful in 2m26s
wai-ledger service / service · linux (pull_request) Successful in 2m2s
wai-key-proxy / proxy · linux (pull_request) Successful in 2m59s
wai-pack / wai-pack · linux (pull_request) Successful in 2m5s
wai-quantum docs, course and locales / the Studio's words in every locale · linux (pull_request) Successful in 26s
wai-quantum docs, course and locales / the course and the command line's languages · linux (pull_request) Successful in 2m45s
wai-quantum WebGPU member / member · GPU, Vulkan (jetson-hub) (pull_request) Successful in 22m31s
WAI JPEG-AI whole decode (pinned inputs, required) / fetch pinned JPEG-AI inputs → whole decode + pixel hash, required (pull_request) Successful in 7m26s
WAI neural sink gates / model-free refusals of the neural sink (pull_request) Successful in 2m2s
WAI examples / WAI examples · portable · linux (pull_request) Successful in 9m31s
WAI neural sink gates / the exact JPEG-AI decoder reports its path (pinned inputs, required) (pull_request) Successful in 2m52s
wai-quantum WebGPU member / member · GPU, Vulkan (thor) (pull_request) Successful in 24m59s
wai-quantum WebGPU member / member · software Vulkan (linux) (pull_request) Successful in 2m16s
wai-quantum for JavaScript / javascript · linux (pull_request) Successful in 3m47s
wai-quantum WebGPU member / shader checks · browser build · wasip2 inertness (pull_request) Successful in 3m57s
wai-quantum studio and desktop / studio · browser (pull_request) Successful in 3m53s
wai-web reach builds / wai-web reach builds · the package of record, every output as recorded (pull_request) Successful in 2m57s
WAI Studio / the catalogue's actions, the unit tests and the core · linux (pull_request) Successful in 1m6s
wai-ops-gpu integer operators on GPUs / builds · no adapter is not a pass (linux) (pull_request) Successful in 8m6s
wai-quantum studio and desktop / desktop app · windows (pull_request) Successful in 9m36s
WAI energy receipts / energy receipts · linux (pull_request) Successful in 14m34s
WAI mbt2018_mean integer decode (regenerated vectors) / regenerate mbt2018_mean integer vectors → Rust decode, required (pull_request) Successful in 6m37s
wai-web reach builds / wai-web reach builds · this tree's wai-web, every rung on its engine line (pull_request) Successful in 5m30s
WAI conformance / cargo-class corpora · linux (pull_request) Successful in 19m54s
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Successful in 5m27s
wai-quantum studio and desktop / desktop app · linux (pull_request) Successful in 12m3s
WAI Studio / Studio in WebKit · linux (pull_request) Successful in 10m30s
wai-quantum docs, course and locales / every command and snippet in the docs · linux (pull_request) Successful in 22m30s
joule-moq-remote host agent / joule-moq-remote, every target (macos) (pull_request) Successful in 1m2s
wai-audit collector and player integration / collector, player integration and the browser end to end · macos (pull_request) Successful in 1m52s
standards workspaces build + test / macOS energy backends (pull_request) Successful in 12m16s
joule-moq-remote host agent / joule-moq-remote, every target (linux-arm64) (pull_request) Successful in 1m20s
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (pull_request) Successful in 17m11s
WAI conformance / cross-arch byte-equality · macos (pull_request) Successful in 30s
WAI conformance / codec wrappers · fuzz smoke, text decode limits, C entry points, provenance, the semantic path (pull_request) Successful in 1m10s
joule-moq-room room service / joule-moq-room, every target (pull_request) Successful in 3m54s
wai-app and Create / wai-app · Create, browser end-to-end (macos) (pull_request) Successful in 7m52s
wai-fleet service / service · macos (pull_request) Successful in 43s
WAI conformance / v2 vocabulary · manifests validate as stated (pull_request) Successful in 30s
standards workspaces build + test / joule-code-rs (joule-code/joule-code-rs, joule-code-rs, linux-arm64, true) (pull_request) Successful in 6m52s
WAI energy receipts / energy receipts · macos (pull_request) Successful in 9m7s
wai-ledger service / service · macos (pull_request) Successful in 1m26s
WAI conformance / delivery telemetry · CMCD and CMSD against an independent library (pull_request) Successful in 17s
WAI conformance / cargo-class corpora · macos (pull_request) Successful in 20m26s
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Successful in 43s
wai-pack / wai-pack · macos (pull_request) Successful in 4m19s
WAI conformance / C2PA manifest emission · signed, read back, validated (pull_request) Successful in 2m38s
WAI conformance / each feature of the independent verifiers' steps compiles alone (pull_request) Successful in 13m34s
wai-quantum WebGPU member / member · Metal (macos) (pull_request) Successful in 3m26s
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Successful in 19m27s
wai-quantum WebGPU member / member · browser WebGPU (macos) (pull_request) Successful in 2m5s
WAI examples / WAI examples · the archive, the readiness check, the browser and Apple · macos (pull_request) Successful in 23m32s
wai-pack / wai-pack · linux-arm64 (pull_request) Successful in 2m27s
WAI examples / WAI examples · android-app · linux-arm64 (pull_request) Successful in 7m32s
wai-pack / wai-pack · the floor through a media prober (pull_request) Successful in 37s
wai-pack / wai-pack · dependency licences (pull_request) Successful in 19s
wai-ops-gpu integer operators on GPUs / Metal GPU and browser WebGPU (macos) (pull_request) Successful in 11m58s
wai-quantum studio and desktop / desktop app · macos (pull_request) Successful in 5m11s
wai-sink-android native sink library / every ABI, the AAR, and the instrumented tests in a headless emulator · macos (pull_request) Successful in 7m35s
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (pull_request) Successful in 3m25s
wai-pack / wai-pack · independent verifier (Python) (pull_request) Successful in 7m20s
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Successful in 12m0s
WAI Studio / Studio in Chromium and Firefox · macos (pull_request) Successful in 10m54s
wai-sink-swift native sink package / libwai slices, desktop tests, simulator tests · macos (pull_request) Successful in 17m29s
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Successful in 1h30m12s
The change of wai/toolchain-fixes (69f88e62f..074658780, 21 commits), on the fix branch: its changelog entries as files of wai/changes/, its wai-conformance.yml edits as step files, corpus files and test tags, and every other file as the branch has it. - b04013914 holdings: the registry lists WHD1, the record's magic (§4.1) - a184abb87 catalogue: upscale and tonemap are recorded in N3's verb list, and the doors' check knows them - 8db31a778 wai mcp: MCP 2026-07-28, the stateless revision, beside the three initialize negotiates - 052830194 wai.json: $schema, wai and name, and the schema of version 1 committed beside the reader - 163fc2017 wai create: every template carries an AGENTS.md - fe9b26fbc joule-moq-room: the example names the relay's WebSocket port, 4480, and one test holds every port - 359b5ba9d quickstart: the archive carries WAI Studio, wai-ingest and wai-quantum - 6334d88c8 joule-moq-room: the port table holds every daemon's default, and the listeners off until set - d38610de6 wai.json: the two workflows that hold the schema to its reader run when the schema changes - 179df52b7 catalogue: the two verbs joined the list after wai 0.4.0, not in toolchain 0.3.0 - 971cf5862 wai.json: a file of a later version is refused as that version before any member it adds - 1a59a39f7 wai.json: the reader takes a whole number however it is written, and the tests run the name pattern - d752fd9b4 wai.json: the release waits for the schema to be served, and version 1 is fixed by the first release that writes it - c213ed9db wai mcp: -32022 names as supported only the revisions a request may name, never the one asked for - 99b800f29 wai mcp: initialize negotiates 2025-11-25, the last revision with a handshake - e33021c3f catalogue: the near-synonym list is held in every text that states it, and the doors' check knows up - b99bb70be catalogue: the changelog records the near-synonym list held with the verb list - a0beb2163 quickstart: the wai formula and manifest depend on wai-quantum's own instead of installing a second copy - 0e5084031 quickstart: Studio's build leaves the checkout as it found it, and the examples workflow runs clean-machine.sh - 4cc4ae3d7 joule-moq-room: the port test reads the gateway's example with the gateway's own reader, and starts the gateway from it - 074658780 quickstart: the changelog names where Studio's build goes, not where it went before it shipped Co-Authored-By: Claude Opus 5.5 <[email protected]>
153 lines
8.6 KiB
TOML
153 lines
8.6 KiB
TOML
# wai-room (crate joule-moq-room): an example configuration. Nothing secret belongs here: the
|
|
# keys are a file of their own (`wai-room keygen <path>` makes it, mode 0600), outside every
|
|
# repository, and the relay knows the clock's token by its SHA-256 alone.
|
|
|
|
# The HTTP service, on loopback behind the front that serves the room's page.
|
|
listen = "127.0.0.1:9682"
|
|
# The path the front serves the service under, when it strips it (`/room-api`): a grant's proof
|
|
# over HTTP, and a watch room's join proof, name the path the page addressed.
|
|
public_prefix = "/room-api"
|
|
keys = "/path/to/keys.toml"
|
|
# The relay's WebSocket endpoint, for the clock's own session (loopback): the relay's
|
|
# `websocket_listen` and `path`, as relay.example.toml sets them (tests/ports.rs holds the two
|
|
# files, and the port table in wai/quickstart/README.md, to each other).
|
|
relay_url = "ws://127.0.0.1:4480/moq"
|
|
# Exit with status 70 past this resident memory (MiB), for the supervisor to restart it.
|
|
max_resident_mb = 256
|
|
|
|
[room]
|
|
# Publishers at once, those whose grants are still waited for among them; the composition
|
|
# lays out this many tiles.
|
|
max_publishers = 4
|
|
max_present = 16
|
|
# A grant's life, in seconds.
|
|
publisher_grant_s = 1200
|
|
viewer_grant_s = 1800
|
|
# How long a publisher's grant holds its place before its tracks appear.
|
|
join_wait_s = 90
|
|
# Grants one room takes; then a new room starts once it is empty.
|
|
max_grants = 64
|
|
# Every room end-to-end encrypted (WAI confidentiality): a confidentiality record, an MLS
|
|
# group whose external sender is the clock, and the room's log of MLS messages. Such a room
|
|
# is never recorded, and its viewers are not members of its group.
|
|
e2ee = false
|
|
# Every room watches this file together (WAI co-watch): served whole, named by the room's
|
|
# co-watch policy, with its duration in milliseconds. Empty for rooms that watch nothing. A
|
|
# watch room is not also end-to-end encrypted, admitted by age or a room with co-performance.
|
|
watch_source = ""
|
|
watch_duration_ms = 0
|
|
# The actions every principal of a watch room may control: 1 play, 2 pause, 4 seek, 8 rate.
|
|
watch_control = 15
|
|
# The skew window the clock states, in milliseconds: a whole number of seconds.
|
|
watch_window_ms = 5000
|
|
|
|
# The service keeps one conversation (WAI live-messaging): an end-to-end encrypted room whose
|
|
# members message one another, and its history store, which survives a restart (ciphertext,
|
|
# receipts and signed records only). It needs no relay; nothing else is kept beside it (no
|
|
# watch room, co-performance, admission by age, `[world]`, `[remote]`, `[room] e2ee` or `[call]`).
|
|
# [messaging]
|
|
# store = "/path/to/conversation" # the history store's directory, made when absent
|
|
# max_members = 16
|
|
# admit = "open" # "open": any key that proves itself; "listed": `members`
|
|
# members = [] # 64 hexadecimal digits each, for "listed"
|
|
# grant_s = 604800 # a member's grant's life, at most 1 209 600 (fourteen days)
|
|
# max_text = 4096 # the conversation statement's bounds (WMC1)
|
|
# max_reaction = 16
|
|
# retention_days = 0 # 0: no bound stated
|
|
|
|
# The service's room is a call (WAI live-messaging §10): a caller places it by a proof of its
|
|
# key, rings each invitee with an invitation it signs, held in the invitee's inbox; the clock
|
|
# signs a missed call at each deadline; the grants come with the call.
|
|
# [call]
|
|
# ring_ms = 30000 # how long an invitation rings, 1 000 to 300 000
|
|
# media = 3 # bit 0 audio, bit 1 video
|
|
# max_invitees = 8
|
|
# max_inbox = 32 # invitations one inbox holds
|
|
|
|
[co]
|
|
# Co-performance (WAI co-performance): either value above 0 gives each room a co-performance
|
|
# policy the authority signs, served with the room. The audience-input power every viewer's
|
|
# grant carries: the most inputs it may send to one selection window (1 to 255; 0: none).
|
|
audience_input = 0
|
|
# Every publisher's latency budget in milliseconds: a later object is marked, never mixed
|
|
# unmarked (0: none).
|
|
latency_budget_ms = 0
|
|
# Which publishers hold the direct power, to state turn schedules, hand any turn over and open
|
|
# selection windows: "first" (the room's first publisher), "publishers" or "none".
|
|
lead = "first"
|
|
# Whether a publisher may ask for a grant that marks it an AI participant (its `ai` attribute).
|
|
ai = true
|
|
# How often the clock states each participant's fidelity, in seconds (0: when a lead asks).
|
|
fidelity_every_s = 30
|
|
# How long after a window closes the clock commits to it, for inputs still in flight (ms).
|
|
commit_after_ms = 1500
|
|
# How far ahead a schedule a page asks for starts, and a handover takes effect, at least (ms).
|
|
lead_ms = 300
|
|
# The objects the clock logs in one room; past it, it still marks, and logs no more.
|
|
max_objects = 200000
|
|
# The relay holds the floor and the audience's inputs once its configuration has the `[floor]`
|
|
# lines `relay-lines` prints (commented out there).
|
|
|
|
# Every room carries a shared world (WAI live-worlds): the authority signs its world statement,
|
|
# every publisher's grant is an actor's (the attribute world = act, no media), and the clock
|
|
# records each actor from its world track. The relay needs the commented world lines
|
|
# `relay-lines` prints: the door that holds each world track to its owner's key, and the window
|
|
# that keeps the room's world tracks for pages that enter late.
|
|
# [world]
|
|
# model_id = "<64 hexadecimal digits>" # the world model (wai.world.model's model header)
|
|
# seed = 0
|
|
# width = 64
|
|
# height = 64
|
|
# fps = 24
|
|
# max_op_bytes = 4096 # 136 to 65536
|
|
# max_ops = 64 # ops one object holds, 1 to 4096
|
|
|
|
[rate]
|
|
# Grants per client address: this many at once, then one more every this many seconds.
|
|
client_burst = 6
|
|
client_every_s = 20
|
|
# And for everyone together.
|
|
global_burst = 120
|
|
global_every_s = 10
|
|
|
|
# Every room admits by age (WAI age-assurance §5.6): a grant request carries a Privacy Pass
|
|
# token (RFC 9577, type 0x0002 of RFC 9578), and the grant states its threshold. Absent: rooms
|
|
# admit anyone. The keys are the issuers' public keys, RFC 9578 §6.5's SubjectPublicKeyInfo in
|
|
# hexadecimal; operating an issuer, and its attester, is not the service's.
|
|
# [age]
|
|
# window_s = 3600 # the windows an admission receipt counts in
|
|
# token_window_s = 600 # a challenge's redemption context holds for this window and the next
|
|
# max_nonces = 65536 # nonces kept a window; past it, no further token of that window
|
|
# origin = "room.example" # the service's server name; absent, the request's Host
|
|
# receipts_out = "/path/to/age-receipts.jsonl"
|
|
# [[age.issuers]]
|
|
# name = "issuer.example"
|
|
# keys = [{ threshold = 16, spki = "<hex>" }, { threshold = 18, spki = "<hex>" }]
|
|
# [[age.ratings]] # the room's rating: one entry per scheme
|
|
# scheme = "https://ratings.example/scheme"
|
|
# value = "16"
|
|
# min_age = 16
|
|
|
|
# Every room is a remote desktop room (WAI remote-desktop): one host's screen shared into it. The
|
|
# host is the key `host` names, or, empty, the first key that presents an invitation the room's
|
|
# authority signed (`wai-room invite <keys.toml>`). Not also e2ee, a watch room, a room with
|
|
# co-performance, one admitted by age or a world room. The relay holds the host's screen to its key
|
|
# with a door:
|
|
# [[receipts.door]] prefix = ["*", "*", "screen"], trust_field = 1.
|
|
# [remote]
|
|
# host = "" # 64 hexadecimal digits, or empty for an invitation
|
|
# width = 1280 # the screen profile's size and rate
|
|
# height = 720
|
|
# fps = 30
|
|
# allow = "none" # who may ask for a controller's grant: "all", "listed" or "none"
|
|
# controllers = [] # the keys that may, for "listed"
|
|
# control = 3 # a controller's classes: 1 pointer, 2 keys, 4 touch, 8 clipboard
|
|
# max_age_ms = 1000 # the age bound no host's screen in effect may exceed
|
|
# lead_ms = 500 # a grant exchange takes effect at least this far ahead
|
|
# max_records_per_principal = 100000 # the most records of each principal but the host the clock holds; at the
|
|
# # bound it cuts and removes that principal, and the session goes on. This one
|
|
# # bites first: a two-hour session at ten input statements a second is 72000, and a
|
|
# # flood at the policy's 120 events a second reaches it in about 14 minutes
|
|
# max_records = 1000000 # the most records of a session's principals, the host's among them; at the bound
|
|
# # it ends the session. A safety net: ten times the bound per principal, above a host
|
|
# # and four controllers each at its bound (800000)
|