Skip to main content
The Scenario

An 8-minute closing call: MoQT track + MLS group.
92.25 joules.

Buyer, seller, two agents, notary. MoQT audio + video. MLS group rekeyed when the notary joined. The recording's hash IS the receipt. 96 joules for eight minutes.

01
Dial
SIP INVITE
0.42 J

The closing call opens with a SIP dialog across five endpoints.

Buyer, seller, two agents, and notary each receive an INVITE per RFC 3261 §13.2.1. SDP offers OPUS@48kHz audio and AV1 video; 200 OK rolls in under 380 ms RTT. The dialog id is logged before the first packet of media moves.

JWP ReceiptPayload
kind "comms.sip.dialog.established"
participants 5
joules 0.42
cite "RFC 3261 §13 · RFC 8866 (SDP)"
sig "ed25519:0x4f...c1a"
02
Group
MLS
0.81 J

An MLS group forms; the notary is added as member 5.

Per RFC 9420 §12, an Add proposal commits and ratchets the group secret to epoch 47. The TreeKEM tree resizes from 4 to 5 leaves; previous transcript hash chains forward. Members 1–4 derive a fresh sender_data_secret before the next frame is encrypted.

JWP ReceiptPayload
kind "comms.mls.epoch.advanced"
group_id g_92c1
epoch 47
members 5
joules 0.81
cite "RFC 9420 §8, §12.1"
sig "ed25519:0x4f...c1a"
03
Transport
MoQT
12.40 J

Audio and video subscribe to MoQT tracks over QUIC.

Per draft-ietf-moq-transport-09, the publisher announces "closing/audio" and "closing/video" namespaces; each subscriber sends SUBSCRIBE with priority 1 (audio) and 4 (video). Object headers carry group_id + object_id so the relay can drop B-frames under congestion without breaking the stream.

JWP ReceiptPayload
kind "comms.moqt.subscribe"
tracks closing/audio, closing/video
relay moqt-relay-us-west-1
joules 12.4
cite "draft-ietf-moq-transport-09 §6.4"
sig "ed25519:0x4f...c1a"
04
Media
SRTP
41.20 J

Per-frame media is sealed with an MLS-derived SRTP key.

AES-128-GCM exporter from the MLS epoch secret keys SRTP per RFC 3711 + RFC 8723 (double encryption). Notary's join at epoch 47 invalidates the prior key schedule — no replay of frames from epoch 46 is possible. PLI loss stays under 0.07%.

JWP ReceiptPayload
kind "comms.srtp.keyed"
cipher AEAD_AES_128_GCM
exporter_label EXPORTER-srtp-mls
joules 41.2
cite "RFC 3711 · RFC 8723 · RFC 9420 §8.5"
sig "ed25519:0x4f...c1a"
05
Bridge
OpenSIPS
8.60 J

OpenSIPS bridges PSTN-dialed agent into the MoQT relay.

One agent dialed in from a mobile carrier — OpenSIPS 3.5 transcodes G.711 → OPUS and re-publishes onto the same MoQT track. The bridge logs an inbound CDR with PSTN charge band 12 and routes RTCP feedback back to the SFU at 250 ms intervals.

JWP ReceiptPayload
kind "comms.pstn.bridge"
transcode G.711μ → OPUS@48kHz
cdr_band PSTN-12
joules 8.6
cite "RFC 3261 · OpenSIPS 3.5 module:rtpengine"
sig "ed25519:0x4f...c1a"
06
Recording
Hash
27.90 J

The recording is hashed frame-by-frame; the digest IS the receipt.

Each MoQT object is fed into a streaming BLAKE3 hasher; the final 32-byte root commits to 14,520 audio frames and 11,610 video frames. The recording artifact is content-addressed — "the audio is the evidence" means re-deriving the hash and matching is the verification.

JWP ReceiptPayload
kind "comms.recording.sealed"
root_hash blake3:9c4f7a21…1108
frames audio=14520 video=11610
joules 27.9
cite "BLAKE3 v1.5 · MoQT object stream"
sig "ed25519:0x4f...c1a"
07
Disclose
RFC 9420 §13
0.74 J

After 8m04s the group emits a Remove + epoch 48 commit.

Notary issues a Remove for itself; remaining members ratchet to epoch 48 so the post-meeting back-channel cannot be decrypted by the notary's old keys. Final epoch transcript hash is appended to the call manifest.

JWP ReceiptPayload
kind "comms.mls.member.removed"
new_epoch 48
duration_s 484
joules 0.74
cite "RFC 9420 §12.1.2"
sig "ed25519:0x4f...c1a"
08
Publish
JWP
0.18 J

A signed comms.session receipt closes the books at 96.07 J.

Recording hash, MLS epoch range [47,48], MoQT track names, SIP Call-ID, and joule total are sealed into a JWP ReceiptPayload signed Ed25519. The receipt is what downstream pillars (ComplianceOS, Veritas) treat as the closing-call evidence — no separate "recording management" system exists.

JWP ReceiptPayload
kind "comms.session"
joules_total 96.07
sig ed25519:1abc…9981
joules 0.18
cite "MoQT draft-09 · MLS RFC 9420 · JWP"
sig "ed25519:0x4f...c1a"

CommunicationOS, in one line

92.25 joules. One receipt.

CommunicationOS handles transport as a typed, signed, energy-metered operation. The whole pillar is one shape: take a claim, do the work, sign the receipt.