- plans/MOQ_MARMOT_AV_PLAN.md — Project plan (browser‑first: Text → Audio → Video)
- MOQ_MARMOT_AV_SPEC.md — Spec for MoQ + Marmot A/V (auth, directory, AEAD, tracks)
- MOQ_CHAT_SERVER.md — Binary Nostr relay (MoQ chat accelerator) design
- NOSTR_AUTH.md — Self‑issued caps + write‑proof auth (JWT alternative)
Notes
- Keep docs as the source of truth. Code should reference these docs instead of duplicating details.
- For implementation, create a new app in a separate folder (e.g., apps/marmot-moq-demo) and link back here.
- A reproducible toolchain is available via
nix develop .#. The default shell exposescargo,wasm-bindgen, and wasm-awareclangwrappers socargo build -p marmot-chat --target wasm32-unknown-unknownsucceeds without extra host setup. - The
marmot-chatcrate now exposes the shared scenario fixtures plus identity-centric wasm bindings (create_identity,public_key,create_message,ingest_wrapper,accept_welcome,merge_pending_commit) viaserde_wasm_bindgenso browser code can pass plain JS objects. - Rust/wasm regression:
just wasm-test(ornix develop .# -c wasm-pack test --node crates/marmot-chat) exercises a deterministic backlog in pure Rust, ensuring a new participant can ingest previously published wrappers with no JS glue. - Browser regression suite:
npm run testruns the Playwright specs (tests/step2-demo.spec.jsfor the BroadcastChannel flow plustests/step4-chat.spec.jsfor the MoQ transport). Usejust web-testto focus on the MoQ run. - Build pipeline:
npm run build(orjust build) compiles themarmot-chatwasm bundle and the SolidJS UI inapps/chat-ui/dist/. - Dev loop:
just devlaunches an ephemeralnostr-rs-relay,moq-relay, and the chat UI server with fresh builds. Visithttp://127.0.0.1:8890/(no query params) and follow the onboarding — choose NIP‑07 or a developer secret, create an invite, share it, then chat over MoQ. - Targeted helpers:
just chat-dev— rebuild the UI and serve it without relays (useful when pointing at existing infra).just relay-dev— run onlymoq-relaywith self-signed TLS for manual experiments.