# Caprid > Relay is Mux’s Media over QUIC (MoQ) relay network: Clients publish and subscribe to tracks through it. Switchboard is its control plane: Organizations, Namespaces, API keys, signing keys, Client tokens, and Self-hosted relays. The Relay SDKs (TypeScript `@caprid/relay`, Python `caprid-relay`) connect to a relay. Every link below is Markdown. Any docs page is Markdown at its URL without the trailing slash plus `.md`. https://www.caprid.com/llms-small.txt has what it takes to build an integration in one file; https://www.caprid.com/llms-full.txt adds the SDK specification, Python reference and changelogs. Before writing an integration, read the rules at https://www.caprid.com/docs/agents.md. To get credentials without a person creating an API key, follow https://www.caprid.com/auth.md. ## HTTP APIs - [Account API](https://www.caprid.com/docs/reference/http/account.md): every operation, parameter and schema. OpenAPI 3.1: [YAML](https://www.caprid.com/openapi/account.yaml), [JSON](https://www.caprid.com/openapi/account.json). - [Relay plane API](https://www.caprid.com/docs/reference/http/relay.md): every operation, parameter and schema. OpenAPI 3.1: [YAML](https://www.caprid.com/openapi/relay.yaml), [JSON](https://www.caprid.com/openapi/relay.json). ## Getting started - [Overview](https://www.caprid.com/docs/getting-started.md): What Relay and Switchboard are, and how a publisher, a viewer and your backend fit together. - [Quickstart](https://www.caprid.com/docs/getting-started/quickstart.md): From an API key to an object published and received through Relay, in five steps. - [Core concepts](https://www.caprid.com/docs/getting-started/concepts.md): Organizations, Namespaces, credentials, paths, tracks and relays, on one page. ## Build with AI agents - [Build with AI agents](https://www.caprid.com/docs/agents.md): Machine-readable entry points to these docs, a skill for coding agents, and the rules an agent should follow when integrating Relay and Switchboard. ## Switchboard guides - [Organizations and Namespaces](https://www.caprid.com/docs/guides/organizations.md): Who owns what on Switchboard, how API routes name it, and how to manage Namespaces, Members and Invitations. - [Credentials](https://www.caprid.com/docs/guides/credentials.md): API keys, signing keys, Client tokens and Node keys, and which one goes where. - [Prod and staging](https://www.caprid.com/docs/guides/prod-and-staging.md): Keep staging in its own Namespace, with an API key that can't reach prod. - [AI agents](https://www.caprid.com/docs/guides/agents.md): Let an AI agent start a Switchboard trial on its own, then claim it to keep what it built. - [Running a Self-hosted relay](https://www.caprid.com/docs/guides/self-hosted-relays.md): Run moq-relay on your own infrastructure and enroll it in your Organization. ## TypeScript SDK - [TypeScript SDK](https://www.caprid.com/docs/sdks/typescript.md): The Relay TypeScript SDK. connectRelaySubscriber subscribes to track objects and connectRelayPublisher publishes them, through Relay, Mux's Media over QUIC (MoQ) relay service. - [TypeScript guide](https://www.caprid.com/docs/sdks/typescript/guide.md): Publish and subscribe to arbitrary track objects through Relay without Video.js, a media catalog, or a player. - [@caprid/relay-quic](https://www.caprid.com/docs/sdks/typescript/relay-quic.md): The Relay SDK's transport adapter for Node. It carries MOQT straight on a QUIC connection (native QUIC), offering the ALPNs moqt-22, then moqt-20. - [@caprid/relay-websocket](https://www.caprid.com/docs/sdks/typescript/relay-websocket.md): The Relay SDK's transport adapter for QMux over WebSocket. - [MoQ media formats](https://www.caprid.com/docs/sdks/typescript/moq-media.md): @caprid/moq-media holds pure format helpers for LOC (draft-ietf-moq-loc-04) and independent MSF (draft-ietf-moq-msf-01) catalogs, plus the clocks, frame sequencer, and audio player that sit on top of… - [Optional file input: Mediabunny to LOC and MSF](https://www.caprid.com/docs/sdks/typescript/moq-mediabunny.md): @caprid/moq-mediabunny turns encoded packets that Mediabunny demuxes from a file into LOC frames. Install it alongside @caprid/moq-media and Mediabunny 1.58.1 or later. - [Generic MoQ core](https://www.caprid.com/docs/sdks/typescript/moq-core.md): @caprid/moq-core runs MOQT sessions that carry arbitrary track objects. It has no runtime dependencies and does not import Relay product code or Video.js. - [TypeScript SDK changelog](https://www.caprid.com/docs/sdks/typescript/changelog.md): The TypeScript packages release together at one version: @caprid/relay, @caprid/moq-core, @caprid/moq-media, @caprid/moq-mediabunny, @caprid/relay-quic and its platform packages, and @caprid/relay-we… ## Python SDK - [Python SDK](https://www.caprid.com/docs/sdks/python.md): The Relay Python SDK. connect_relay_subscriber subscribes to track objects and connect_relay_publisher publishes them, through Relay, Mux's Media over QUIC (MoQ) relay service. - [Python guide](https://www.caprid.com/docs/sdks/python/guide.md): The Python SDK for Relay. It connects to a Relay endpoint from any Python 3.11+ asyncio program, publishes data, and subscribes to track objects. No browser is involved. - [MoQ media formats](https://www.caprid.com/docs/sdks/python/moq-media.md): Pure LOC (draft-ietf-moq-loc-04) and independent MSF (draft-ietf-moq-msf-01) format helpers. The package depends only on the generic MoQ core, and needs no transport library or Relay connection. - [Generic MoQ core (Python)](https://www.caprid.com/docs/sdks/python/moq-core.md): An independently buildable package for MOQT sessions and arbitrary track objects. It has no runtime dependencies and does not import Relay product code or any transport library. - [Python SDK changelog](https://www.caprid.com/docs/sdks/python/changelog.md): The Python packages release together at one version: caprid-relay, caprid-moq-core and caprid-moq-media. ## TypeScript API reference - [TypeScript API reference](https://www.caprid.com/docs/reference/typescript/readme.md): Every export of the TypeScript SDK's packages, generated from the code's doc comments. - [TypeScript API reference](https://www.caprid.com/docs/reference/typescript/packages.md) ### @caprid/moq-core - [index](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/readme.md) - [@caprid/moq-core](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/readme.md) - [wire](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/wire/readme.md): The MOQT wire codec, for code that stands in for the other end of a session: a test relay that drives a publish or subscribe session byte by byte. - [ByteWriter](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/classes/bytewriter.md): Growable byte sink for encoding wire structures. - [MoqtProtocolError](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/classes/moqtprotocolerror.md): A wire-protocol violation detected while encoding or decoding MOQT data. code is the session-termination code (§12.2) the session driver should close the transport with — defaults to PROTOCOL_VIOLATI… - [MoqtStreamError](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/classes/moqtstreamerror.md): A stream error the SDK raises or hands a transport as a reset or stop reason outside a browser: the TA-22 shape, with source 'stream' and the code in streamErrorCode. - [compareLocations](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/functions/comparelocations.md): Compare two Locations in Location order (§8.2): group first, then object. - [createMoqtPublishSession](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/functions/createmoqtpublishsession.md): Create a publish-capable MOQT session driver over an established transport. - [createMoqtSession](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/functions/createmoqtsession.md): Create a MOQT session driver over an established transport. - [createSubgroupWriter](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/functions/createsubgroupwriter.md): Open a subgroup writer over an established unidirectional stream. - [encodeFetchHeader](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/functions/encodefetchheader.md): Write a FETCH_HEADER (§11.4.1): the stream-type varint, then the Request ID. - [encodeKeyValuePairs](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/functions/encodekeyvaluepairs.md): Serialize pairs in ascending type order with delta-encoded types. - [encodeRequestUpdate](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/functions/encoderequestupdate.md): REQUEST_UPDATE (§9.5) — sent on an existing request stream. requestId is the update's own, freshly allocated Request ID (§6.4.2.1 counts REQUEST_UPDATE among the messages that consume one); the strea… - [isEmptyFetchRange](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/functions/isemptyfetchrange.md): Whether a Location filter, evaluated with the fetch rules of §9.20.9, selects no Objects. - [isMoqtProtocolError](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/functions/ismoqtprotocolerror.md): Whether value is a MoqtProtocolError, including one thrown by another copy of this package. - [isRetryablePublishDoneStatus](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/functions/isretryablepublishdonestatus.md): Whether a subscription that ended with PUBLISH_DONE statusCode is worth re-subscribing. - [isRetryableRequestErrorCode](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/functions/isretryablerequesterrorcode.md): Whether a failed request is worth re-issuing unchanged after a backoff. - [isStreamError](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/functions/isstreamerror.md): Whether error is a stream failure (TA-22): the peer reset the stream (TA-19) or stopped it (TA-20). - [isStreamFailure](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/functions/isstreamfailure.md): Whether the session synthesized this request failure from a stream event (FIN before any response, a stream reset, a failed stream open, the response timeout, or the session ending) rather than recei… - [streamResetReason](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/functions/streamresetreason.md): The reason to hand a stream's abort() so the reset carries code (§12.5, spec/transport-adapter.md TA-17). - [utf8Decode](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/functions/utf8decode.md): Decode UTF-8 bytes, such as a text object's payload, replacing malformed sequences with U+FFFD. - [BidirectionalStreamLike](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/interfaces/bidirectionalstreamlike.md): Structural subset of WebTransportBidirectionalStream. - [FetchHandle](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/interfaces/fetchhandle.md): A fetch in progress, returned by MoqtSession.fetch. - [FetchHandlers](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/interfaces/fetchhandlers.md): Callbacks for MoqtSession.fetch. - [FetchOk](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/interfaces/fetchok.md): FETCH_OK: the peer accepted a fetch. - [Goaway](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/interfaces/goaway.md): GOAWAY: the peer asks the client to stop making requests on this session and move to a new one. - [IncomingPublish](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/interfaces/incomingpublish.md): A server-initiated PUBLISH, passed to onIncomingPublish. - [IncomingSubscribe](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/interfaces/incomingsubscribe.md): A SUBSCRIBE from the peer, as passed to onSubscribe once it has been answered with SUBSCRIBE_OK. - [KeyValuePair](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/interfaces/keyvaluepair.md): A generic MOQT Key-Value-Pair. - [Location](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/interfaces/location.md): A particular Object in a Group within a Track (§8.2). - [MessageParameters](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/interfaces/messageparameters.md): Decoded message parameters. - [MoqtObject](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/interfaces/moqtobject.md): An object delivered on a subscription's subgroup stream. - [MoqtPublishSession](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/interfaces/moqtpublishsession.md): A publish-capable MOQT session over an established transport. - [MoqtPublishSessionCallbacks](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/interfaces/moqtpublishsessioncallbacks.md): Event callbacks for createMoqtPublishSession. - [MoqtPublishSessionConfig](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/interfaces/moqtpublishsessionconfig.md): Options for createMoqtPublishSession. - [MoqTrackSource](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/interfaces/moqtracksource.md): Borrowed access to tracks on a session. - [MoqtSendStreamOptions](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/interfaces/moqtsendstreamoptions.md): How the transport schedules a stream's bytes against the session's other streams: the W3C WebTransportSendOptions subset the publisher uses. - [MoqtSession](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/interfaces/moqtsession.md): A subscribe-side MOQT session over an established transport. - [MoqtSessionCallbacks](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/interfaces/moqtsessioncallbacks.md): Session-level event callbacks for createMoqtSession. - [MoqtSessionConfig](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/interfaces/moqtsessionconfig.md): Options for createMoqtSession. - [MoqtSubscribeNamespaceOptions](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/interfaces/moqtsubscribenamespaceoptions.md): The prefix and parameters for a SUBSCRIBE_NAMESPACE. - [MoqtSubscribeOptions](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/interfaces/moqtsubscribeoptions.md): The track and parameters for a SUBSCRIBE (also used by TRACK_STATUS). - [MoqtTransport](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/interfaces/moqttransport.md): Structural subset of WebTransport the session driver needs. - [NamespaceSubscription](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/interfaces/namespacesubscription.md): A namespace subscription returned by MoqtSession.subscribeNamespace. - [NamespaceSubscriptionHandlers](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/interfaces/namespacesubscriptionhandlers.md): Callbacks for MoqtSession.subscribeNamespace. - [PublishDone](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/interfaces/publishdone.md): PUBLISH_DONE: the publisher ended a subscription. - [Redirect](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/interfaces/redirect.md): Where a REQUEST_ERROR with code REDIRECT sends the requester. - [RegisteredTrack](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/interfaces/registeredtrack.md): A track registered with MoqtPublishSession.registerTrack. - [RegisterTrackOptions](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/interfaces/registertrackoptions.md): A track for MoqtPublishSession.registerTrack. - [RequestError](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/interfaces/requesterror.md): A failed request: a REQUEST_ERROR from the peer, or a failure the session synthesized from a stream event (see isStreamFailure). - [SubgroupObjectInput](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/interfaces/subgroupobjectinput.md): One object for SubgroupWriter.writeObject. - [SubgroupWriteOptions](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/interfaces/subgroupwriteoptions.md): Options for SubgroupWriter.writeObject. - [SubgroupWriter](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/interfaces/subgroupwriter.md): Writes one subgroup of one group to a unidirectional stream. - [SubgroupWriterOptions](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/interfaces/subgroupwriteroptions.md): SUBGROUP_HEADER fields for createSubgroupWriter. - [SubscribeOk](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/interfaces/subscribeok.md): SUBSCRIBE_OK: the peer accepted a subscription. - [Subscription](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/interfaces/subscription.md): A live subscription returned by MoqtSession.subscribe. - [SubscriptionHandlers](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/interfaces/subscriptionhandlers.md): Callbacks for MoqtSession.subscribe. - [TrackStatusHandlers](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/interfaces/trackstatushandlers.md): Callbacks for MoqtSession.trackStatus. - [FetchEndOfRangeStatus](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/type-aliases/fetchendofrangestatus.md): Why a run of Locations was not serialized: they do not exist, their status is unknown to the relay, or the relay's Fill Timeout expired before upstream supplied them (§9.20.5). - [FetchStreamEntry](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/type-aliases/fetchstreamentry.md): One entry on a FETCH response stream: an object, or a marker for a run of Locations that was not serialized. - [FillParameters](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/type-aliases/fillparameters.md): The parameters FILL_PARAMETERS may carry (§9.20.15, Table 7). - [GroupOrder](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/type-aliases/grouporder.md): GROUP_ORDER: the order in which the publisher delivers groups. - [LocationFilter](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/type-aliases/locationfilter.md): Which Objects a subscription or fetch covers. - [MoqtFetchOptions](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/type-aliases/moqtfetchoptions.md): FETCH (§9.11) takes the SUBSCRIBE shape; the range is parameters.locationFilter, read with fetch rules (§3.3.1): a relative start counts back from Largest Object, an omitted end stops there, no filte… - [MoqtProtocolId](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/type-aliases/moqtprotocolid.md): A protocol identifier the core implements. - [ObjectStatus](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/type-aliases/objectstatus.md): An object's status: 'normal' for a payload-carrying object, otherwise the end marker it signals. - [SessionErrorCode](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/type-aliases/sessionerrorcode.md): One of the SESSION\_ERROR codes. - [TrackNamespace](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/type-aliases/tracknamespace.md): Track namespace as an ordered tuple of UTF-8 fields. - [CLOSE_END_ACK_TIMEOUT_MS](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/variables/close_end_ack_timeout_ms.md): How long close() then waits for the peer to close each ended subscription's request stream. - [CLOSE_FLUSH_TIMEOUT_MS](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/variables/close_flush_timeout_ms.md): How long close() waits for the PUBLISH_DONE + FIN / NAMESPACE_DONE writes to drain before closing the transport out from under them. - [MAX_NAMESPACE_FIELDS](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/variables/max_namespace_fields.md): Most fields a track namespace may have; the codec rejects longer namespaces with MoqtProtocolError. - [MAX_OBJECT_PAYLOAD_LENGTH](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/variables/max_object_payload_length.md): Ceiling on a single object's payload, and on its Properties block. - [MAX_OBJECT_PROPERTIES_LENGTH](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/variables/max_object_properties_length.md): Ceiling on an object's Properties block, in bytes; see MAX\_OBJECT\_PAYLOAD\_LENGTH. - [MAX_TRACK_PROPERTIES_LENGTH](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/variables/max_track_properties_length.md): The largest encoded track property block every SUBSCRIBE_OK this session sends can carry. - [MOQT_PROTOCOL_ID](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/variables/moqt_protocol_id.md): The preferred protocol identifier, and the codec's default when a caller names none. - [MOQT_PROTOCOL_IDS](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/variables/moqt_protocol_ids.md): ALPN / WebTransport protocol identifiers the core implements, in the order a client offers them (§6.2: moqt- plus the draft number). - [PUBLISH_DONE_STATUS](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/variables/publish_done_status.md): PUBLISH_DONE status codes (§12.4). - [REQUEST_ERROR_CODE](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/variables/request_error_code.md): REQUEST_ERROR codes (§16.11.2). - [SESSION_ERROR](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/variables/session_error.md): MOQT session-termination error codes (moq-transport draft-22 §12.2). - [SETUP_OPTION](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/variables/setup_option.md): Setup Option types (§9.1). - [TRACK_PROPERTY](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/index/variables/track_property.md): Track Property types (§9.7) — the KVP block trailing SUBSCRIBE_OK / PUBLISH / FETCH_OK. - [ControlMessageDeframer](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/wire/classes/controlmessagedeframer.md): Incremental control-message deframer. - [StreamReader](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/wire/classes/streamreader.md): Buffered asynchronous reader over a ReadableStream. - [decodeControlMessage](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/wire/functions/decodecontrolmessage.md): Decode one control-message frame into a typed message. - [decodeVarint](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/wire/functions/decodevarint.md): Decode a varint at offset. - [encodeGoaway](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/wire/functions/encodegoaway.md): GOAWAY (§9.2). - [encodePublish](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/wire/functions/encodepublish.md): PUBLISH (§9.8). - [encodePublishDone](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/wire/functions/encodepublishdone.md): PUBLISH_DONE (§9.9). - [encodeRequestError](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/wire/functions/encoderequesterror.md): REQUEST_ERROR (§9.4) without a Redirect — enough to reject incoming requests. - [encodeSetup](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/wire/functions/encodesetup.md): SETUP (§9.1) — first message on the endpoint's control stream. - [encodeSubscribe](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/wire/functions/encodesubscribe.md): SUBSCRIBE (§9.6) — first message on a new request stream. - [encodeSubscribeNamespace](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/wire/functions/encodesubscribenamespace.md): SUBSCRIBE_NAMESPACE (§9.15) — first message on a new request stream. - [encodeSubscribeOk](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/wire/functions/encodesubscribeok.md): SUBSCRIBE_OK (§9.7). - [encodeVarint](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/wire/functions/encodevarint.md): Encode value as a MOQT varint (§8.1) in the fewest bytes. - [isSubgroupHeaderType](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/wire/functions/issubgroupheadertype.md): Whether a stream-type varint is a SUBGROUP_HEADER. §11.3.1 describes the type as Type Flags: bit 4 is always set, SUBGROUP_ID_MODE 0b11 is reserved, and a value of 128 or more — or any set bit withou… - [readFetchHeader](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/wire/functions/readfetchheader.md): Read the FETCH_HEADER's Request ID (the stream-type varint must already be consumed). - [readSubgroupHeader](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/wire/functions/readsubgroupheader.md): Read the SUBGROUP_HEADER fields (the stream-type varint must already be consumed). - [readSubgroupObjects](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/wire/functions/readsubgroupobjects.md): Yield the objects of one subgroup stream until FIN. - [utf8Encode](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/wire/functions/utf8encode.md): Encode a string as UTF-8 bytes, as track names and reason phrases go on the wire. - [ControlMessageFrame](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/wire/interfaces/controlmessageframe.md): A decoded frame: message type + body bytes (not yet interpreted). - [SubgroupHeader](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/wire/interfaces/subgroupheader.md): A decoded SUBGROUP_HEADER (§11.3.1). - [SubscribeNamespaceRequest](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/wire/interfaces/subscribenamespacerequest.md): The body of a SUBSCRIBE_NAMESPACE (§9.15). - [SubscribeRequest](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/wire/interfaces/subscriberequest.md): The body of a SUBSCRIBE, TRACK_STATUS or FETCH: Request ID, Full Track Name, Parameters. - [VarintDecodeResult](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/wire/interfaces/varintdecoderesult.md): A decoded varint and how many bytes it took. - [ControlMessage](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/wire/type-aliases/controlmessage.md): A decoded control message, as decodeControlMessage returns it. kind names the message; the other fields are its body, with parameters decoded for the negotiated draft. - [FetchRequest](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/wire/type-aliases/fetchrequest.md): FETCH (§9.11) has the SUBSCRIBE body: the range is parameters.locationFilter, evaluated with the fetch rules of §3.3.1 — relative starts count back from Largest Object, an omitted end stops there, an… - [SubgroupIdMode](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/wire/type-aliases/subgroupidmode.md): How a SUBGROUP_HEADER gives the Subgroup ID: zero, the first object's ID, or an explicit field. - [STREAM_TYPE](https://www.caprid.com/docs/reference/typescript/caprid/moq-core/wire/variables/stream_type.md): Stream-type varints that open a unidirectional stream, other than a SUBGROUP_HEADER's (see isSubgroupHeaderType). ### @caprid/moq-media - [@caprid/moq-media](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/readme.md) - [audioDecoderConfigFromTrack](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/functions/audiodecoderconfigfromtrack.md): The decoder config for a catalog's audio track: its codec, sample rate (default 48 kHz) and channel count (default 2), and its init data as the description. - [audioTrackFromDecoderConfig](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/functions/audiotrackfromdecoderconfig.md): Map an Opus decoder config, preserving its channel count and using the LOC/MSF 48 kHz convention. - [avcCodecString](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/functions/avccodecstring.md): Read profile, constraint flags and level; this inspects the header, not SPS bitstream semantics. - [buildInterrupt](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/functions/buildinterrupt.md): An interrupt object's payload: compact JSON, {"track":…,"fromUs":…,"untilUs":…}, without fromUs when absent. - [buildMediaTimeline](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/functions/buildmediatimeline.md): A timeline object's payload: the records in the order given, as compact JSON. - [buildMsfCatalog](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/functions/buildmsfcatalog.md): Build the publisher's independent MSF catalog JSON for a live broadcast. - [buildMsfEndCatalog](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/functions/buildmsfendcatalog.md): Build the catalog that ends a broadcast (msf-01 §11.3): isComplete: true and no tracks. - [buildTranscriptSegment](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/functions/buildtranscriptsegment.md): A transcript object's payload: compact JSON, {"seq":…,"track":…,"fromUs":…,"untilUs":…,"text":…,"final":…}, without untilUs when absent. - [chunkToLocFrame](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/functions/chunktolocframe.md): Copy the chunk's encoded bytes unchanged and attach LOC metadata; no muxing or bitstream conversion. - [composeMoqSource](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/functions/composemoqsource.md): Compose the moqt:// source URL a MoQ player takes: the relay URL with its scheme switched to moqt: (authority, path and query kept), and a #msf: fragment naming the namespace and track. - [createAudioPlayer](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/functions/createaudioplayer.md): Create an audio player on context: it loads the jitter buffer's worklet once per context, so it resolves after that. - [createBroadcastClock](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/functions/createbroadcastclock.md): Pin a monotonic source to the system clock and map capture timestamps and sample counters onto the epoch. - [createEchoCancellationLoopback](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/functions/createechocancellationloopback.md): Play node through a local WebRTC loopback so Chromium's echo canceller hears it. - [createFrameHold](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/functions/createframehold.md): Create a hold. - [createFrameSequencer](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/functions/createframesequencer.md): Create a frame sequencer for one track. - [createMediaTimeline](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/functions/createmediatimeline.md): Hold one broadcast's media timeline entries, bounded by maxEntries. - [createPlayoutClock](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/functions/createplayoutclock.md): Create a playout clock. - [createRenderClock](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/functions/createrenderclock.md): Create a render clock for one AudioContext. - [createTranscript](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/functions/createtranscript.md): Create an empty Transcript. - [encodeNameComponent](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/functions/encodenamecomponent.md): Encode one namespace field or track name into the MSF string form. - [encodeNamespaceName](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/functions/encodenamespacename.md): The MSF string form of a full track name: each namespace field encoded with encodeNameComponent and joined with -, then -- and the encoded track name. - [findReplacementTrack](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/functions/findreplacementtrack.md): The track in a newer catalog that replaces current, a track of an older one: a publisher that replaces a track lists a new name in its place (msf-01 §5.3: a changed track is a new Namespace|Name tupl… - [groupMsfTracks](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/functions/groupmsftracks.md): Group catalog tracks into the sets a viewer picks one track from, in order of each set's first track: tracks sharing a render group and an alternate group form one set, and every other track is a set… - [locProperties](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/functions/locproperties.md): Convert microseconds to ticks, rounding ties upward, and attach LOC properties. - [locTimestampUs](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/functions/loctimestampus.md): An object's LOC Timestamp in microseconds, or undefined when it has none. - [locTrackProperties](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/functions/loctrackproperties.md): Track properties declaring a LOC timescale, for registerTrack's trackProperties. - [mediaTimelineEntry](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/functions/mediatimelineentry.md): The record for one object of the indexed track. - [opusPacketDurationUs](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/functions/opuspacketdurationus.md): How long an Opus packet plays, in microseconds, from its TOC byte (RFC 6716 §3.1); undefined when it cannot be read. - [parseInterrupt](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/functions/parseinterrupt.md): Read an interrupt object's payload. - [parseMediaTimeline](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/functions/parsemediatimeline.md): Read a timeline object's payload into its records, in document order. - [parseMsfCatalog](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/functions/parsemsfcatalog.md): Read an independent MSF catalog object's payload into its track descriptions. - [parseTranscriptSegment](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/functions/parsetranscriptsegment.md): Read a transcript object's payload. - [videoTrackFromDecoderConfig](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/functions/videotrackfromdecoderconfig.md): Map an AVC WebCodecs decoder config; encoded packets must already be length-prefixed. - [warmAudioPlayer](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/functions/warmaudioplayer.md): Start loading what createAudioPlayer waits for, both at once: the jitter buffer's worklet module on context and, with loss concealment, the libopus WebAssembly module. - [AudioCutRange](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/interfaces/audiocutrange.md): Which audio AudioPlayerInput.cut drops, by timeline timestamp in microseconds. - [AudioInputClock](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/interfaces/audioinputclock.md): What an input calls on its clock. - [AudioInputJoinPhases](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/interfaces/audioinputjoinphases.md): When each step of an input's start happened, in microseconds on its clock's time source (performance.now() without a clock, or with a playout clock left at its default); null until it happens. - [AudioInputOptions](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/interfaces/audioinputoptions.md): Options for AudioPlayer.addInput. - [AudioInputStats](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/interfaces/audioinputstats.md): An input's counters and jitter-buffer state. - [AudioPlayer](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/interfaces/audioplayer.md): Plays any number of inputs into one output node. - [AudioPlayerContext](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/interfaces/audioplayercontext.md): The part of an AudioContext the player uses. - [AudioPlayerGainNode](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/interfaces/audioplayergainnode.md): The part of a GainNode the player uses. - [AudioPlayerInput](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/interfaces/audioplayerinput.md): One input of an AudioPlayer: one track, usually one speaker. - [AudioPlayerJoinPhases](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/interfaces/audioplayerjoinphases.md): When a player's shared parts were ready, in performance.now() microseconds. - [AudioPlayerNode](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/interfaces/audioplayernode.md): The part of an AudioNode the player uses. - [AudioPlayerOptions](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/interfaces/audioplayeroptions.md): Options for createAudioPlayer. - [AudioTrackInfo](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/interfaces/audiotrackinfo.md): The audio track buildMsfCatalog advertises. - [BroadcastClock](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/interfaces/broadcastclock.md): A publisher's single clock: every track in the broadcast is stamped from it, in microseconds since the Unix epoch. - [BroadcastClockOptions](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/interfaces/broadcastclockoptions.md): Options for createBroadcastClock. - [ChunkToLocFrameOptions](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/interfaces/chunktolocframeoptions.md): Options for chunkToLocFrame. - [ComposeMoqSourceOptions](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/interfaces/composemoqsourceoptions.md): Options for composeMoqSource. - [DataTrackInfo](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/interfaces/datatrackinfo.md): A non-media track buildMsfCatalog advertises, such as application data. - [EchoCancellationContext](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/interfaces/echocancellationcontext.md): The part of an AudioContext the loopback uses. - [EchoCancellationLoopback](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/interfaces/echocancellationloopback.md): A running loopback. - [EchoCancellationLoopbackOptions](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/interfaces/echocancellationloopbackoptions.md): Options for createEchoCancellationLoopback. - [FrameHold](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/interfaces/framehold.md): Keeps frames in order until release, then passes them, and every later one, straight on. - [FrameHoldStats](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/interfaces/frameholdstats.md): The frames a FrameHold has kept and passed on, and when it was released. - [FrameSequencer](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/interfaces/framesequencer.md): One track's frame sequencer. - [FrameSequencerOptions](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/interfaces/framesequenceroptions.md): Options for createFrameSequencer. - [FrameSequencerStats](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/interfaces/framesequencerstats.md): Counters, cumulative across restarts. - [Interrupt](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/interfaces/interrupt.md): One interrupt: drop the named audio track's audio in a timeline range. - [InterruptInput](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/interfaces/interruptinput.md): What buildInterrupt takes. - [LocFrame](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/interfaces/locframe.md): One encoded frame ready to publish as a LOC object: write(payload, { properties }). - [LocPropertiesOptions](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/interfaces/locpropertiesoptions.md): Options for locProperties. - [LocTimestampOptions](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/interfaces/loctimestampoptions.md): Options for locTimestampUs: where else the track's timescale may be declared. - [MediaTimeline](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/interfaces/mediatimeline.md): The retained entries of one broadcast's media timeline, and the independent document they make. - [MediaTimelineEntry](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/interfaces/mediatimelineentry.md): One media timeline record, [mediaTimeMs, [group, object], wallclockMs] on the wire (msf-01 §7.1.1). - [MediaTimelineEntryInput](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/interfaces/mediatimelineentryinput.md): What mediaTimelineEntry needs to know about one object. - [MediaTimelineOptions](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/interfaces/mediatimelineoptions.md): Options for createMediaTimeline. - [MediaTimelineTrackInfo](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/interfaces/mediatimelinetrackinfo.md): The Media Timeline track (msf-01 §7) buildMsfCatalog announces. - [MissingGroups](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/interfaces/missinggroups.md): An inclusive range of group IDs of which nothing was delivered: what an application may act on, such as a FETCH. - [MsfCatalog](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/interfaces/msfcatalog.md): An independent MSF catalog (msf-01 §5.1), as parseMsfCatalog reads it. - [MsfCatalogInput](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/interfaces/msfcataloginput.md): What buildMsfCatalog advertises: the namespace and the tracks published under it. - [MsfCatalogTrack](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/interfaces/msfcatalogtrack.md): One track object of an independent MSF catalog (msf-01 §5.2), as parseMsfCatalog reads it. - [MsfEndCatalogInput](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/interfaces/msfendcataloginput.md): What buildMsfEndCatalog stamps on the end-of-broadcast catalog. - [MsfTrackGroup](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/interfaces/msftrackgroup.md): A set of catalog tracks a viewer picks one of: the members of one alternate group (§5.2.12) within one render group, or a single track that names no alternate group. - [ParseMsfCatalogOptions](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/interfaces/parsemsfcatalogoptions.md): Options for parseMsfCatalog. - [PlayoutClock](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/interfaces/playoutclock.md): A player's clock for one broadcast's timeline. - [PlayoutClockOptions](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/interfaces/playoutclockoptions.md): Options for createPlayoutClock. - [PlayoutDrop](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/interfaces/playoutdrop.md): The frame is later than lateDropUs: audio has moved past it. - [PlayoutShow](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/interfaces/playoutshow.md): Show the frame now: it is on time, late within lateDropUs, or a re-sync. - [PlayoutWait](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/interfaces/playoutwait.md): The frame is early: hold it and ask again after waitUs. - [RenderClock](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/interfaces/renderclock.md): The context's render clock against performance.now(), from the earliest observation in a sliding window. - [RenderClockOptions](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/interfaces/renderclockoptions.md): Options for createRenderClock. - [RenderObservation](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/interfaces/renderobservation.md): One observation: context time contextUs had been rendered by atUs on performance.now()'s clock. - [SampleTimeline](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/interfaces/sampletimeline.md): Maps an audio sample counter onto the broadcast timeline. - [SampleTimelineOptions](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/interfaces/sampletimelineoptions.md): Options for BroadcastClock.sampleTimeline. - [SequencedFrame](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/interfaces/sequencedframe.md): One frame in decode order. - [SequencerPoll](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/interfaces/sequencerpoll.md): What FrameSequencer.poll returns. - [SourceTimeline](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/interfaces/sourcetimeline.md): Maps timestamps from a clock with its own origin and rate onto the broadcast timeline: an AudioContext's time (works in every browser), or Chromium's MediaStreamTrackProcessor timestamps, which count… - [SourceTimelineOptions](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/interfaces/sourcetimelineoptions.md): Options for BroadcastClock.sourceTimeline. - [TimestampPlayoutOptions](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/interfaces/timestampplayoutoptions.md): Options for FrameSequencerOptions.timestampPlayout. - [Transcript](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/interfaces/transcript.md): What a listener has read of one audio track's transcript: each segment's latest version, less what was cut. apply each segment read for the track and cut on each interrupt for it; linesAt gives what … - [TranscriptCutRange](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/interfaces/transcriptcutrange.md): The range an interrupt cuts, which a parsed Interrupt is. - [TranscriptLine](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/interfaces/transcriptline.md): A segment as a Transcript holds it: its latest version, and whether an interrupt cut it short. - [TranscriptSegment](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/interfaces/transcriptsegment.md): One version of a transcript segment: the text of the named audio track's audio from fromUs on. - [TranscriptSegmentInput](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/interfaces/transcriptsegmentinput.md): What buildTranscriptSegment takes. - [VideoTrackInfo](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/interfaces/videotrackinfo.md): The video track buildMsfCatalog advertises. - [WarmAudioPlayerOptions](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/interfaces/warmaudioplayeroptions.md): Options for warmAudioPlayer. - [AudioPlayerFrame](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/type-aliases/audioplayerframe.md): One encoded audio frame: a SequencedFrame from a frame reader qualifies. - [FrameDiscontinuity](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/type-aliases/framediscontinuity.md): Why the frame is not the one decoded after the frame before it. - [MediaTrackInfo](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/type-aliases/mediatrackinfo.md): One entry of MsfCatalogInput.media: a video or audio track, tagged with its MSF role. - [MicrosecondClock](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/type-aliases/microsecondclock.md): A monotonic time source in microseconds. - [PlayoutDecision](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/type-aliases/playoutdecision.md): What to do with a video frame. offsetUs is its timestamp minus the clock's position: positive is early. - [PlayoutMode](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/type-aliases/playoutmode.md): idle before anything anchors it, audio while audio reports arrive, wall when paced by the local clock. - [AUDIO_ONLY_TARGET_LATENCY_US](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/variables/audio_only_target_latency_us.md): The target latency for a broadcast with no video: pass it as targetLatencyUs, since the 2 s default waits for keyframe intervals an audio-only track never reports. - [AUDIO_TRACK](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/variables/audio_track.md): Default track name for the catalog's audio track. - [CATALOG_TRACK](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/variables/catalog_track.md): Default track name for the MSF catalog. - [INTERRUPT_TRACK](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/variables/interrupt_track.md): The interrupt track's default name, listed in the catalog as a data track. - [LOC_AUDIO_CONFIG](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/variables/loc_audio_config.md): LOC Audio Config object property type: codec configuration bytes, such as an AAC AudioSpecificConfig. - [LOC_DOCUMENT](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/variables/loc_document.md): The LOC draft these helpers implement. - [LOC_TIMESCALE](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/variables/loc_timescale.md): LOC Timescale property type: ticks per second, on the track and on each object. - [LOC_TIMESTAMP](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/variables/loc_timestamp.md): LOC Timestamp object property type: the object's presentation time in timescale ticks. - [LOC_VIDEO_CONFIG](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/variables/loc_video_config.md): LOC Video Config object property type: codec configuration bytes, such as an avcC record. - [MEDIA_TIMELINE_TRACK](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/variables/media_timeline_track.md): Default track name for the catalog's Media Timeline track (msf-01 §7). - [MICROSECONDS_PER_SECOND](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/variables/microseconds_per_second.md): The default timescale: microsecond ticks, matching WebCodecs timestamps. - [MSF_CATALOG_VERSION](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/variables/msf_catalog_version.md): Version emitted — the newest version parseMsfCatalog accepts. - [MSF_DOCUMENT](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/variables/msf_document.md): The MSF draft the catalog helpers implement. - [TRANSCRIPT_TRACK](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/variables/transcript_track.md): The transcript track's default name, listed in the catalog as a data track. - [VIDEO_TRACK](https://www.caprid.com/docs/reference/typescript/caprid/moq-media/variables/video_track.md): Default track name for the catalog's video track. ### @caprid/moq-mediabunny - [@caprid/moq-mediabunny](https://www.caprid.com/docs/reference/typescript/caprid/moq-mediabunny/readme.md) - [audioTrackFromDecoderConfig](https://www.caprid.com/docs/reference/typescript/caprid/moq-mediabunny/functions/audiotrackfromdecoderconfig.md): Map an Opus decoder config, preserving its channel count and using the LOC/MSF 48 kHz convention. - [packetToLocFrame](https://www.caprid.com/docs/reference/typescript/caprid/moq-mediabunny/functions/packettolocframe.md): Preserve encoded bytes and presentation timing; attach decoder configuration only to key packets. - [videoTrackFromDecoderConfig](https://www.caprid.com/docs/reference/typescript/caprid/moq-mediabunny/functions/videotrackfromdecoderconfig.md): Map an AVC WebCodecs decoder config; encoded packets must already be length-prefixed. - [LocFrame](https://www.caprid.com/docs/reference/typescript/caprid/moq-mediabunny/interfaces/locframe.md): One encoded frame ready to publish as a LOC object: write(payload, { properties }). - [PacketToLocFrameOptions](https://www.caprid.com/docs/reference/typescript/caprid/moq-mediabunny/interfaces/packettolocframeoptions.md): Options for packetToLocFrame. ### @caprid/relay - [index](https://www.caprid.com/docs/reference/typescript/caprid/relay/index/readme.md) - [@caprid/relay](https://www.caprid.com/docs/reference/typescript/caprid/relay/readme.md) - [RelayError](https://www.caprid.com/docs/reference/typescript/caprid/relay/index/classes/relayerror.md): Caller cancellation reasons and argument errors are not converted to RelayError. - [SubscriptionConnectionClosedError](https://www.caprid.com/docs/reference/typescript/caprid/relay/index/classes/subscriptionconnectionclosederror.md): The connection ended while the subscription was open, including a clean local close. - [SubscriptionOverflowError](https://www.caprid.com/docs/reference/typescript/caprid/relay/index/classes/subscriptionoverflowerror.md): An events iterator's queue was full when another event arrived. - [SubscriptionRequestError](https://www.caprid.com/docs/reference/typescript/caprid/relay/index/classes/subscriptionrequesterror.md): The relay answered the subscription with REQUEST_ERROR, or the request timed out or failed before acceptance. - [connectRelayPublisher](https://www.caprid.com/docs/reference/typescript/caprid/relay/index/functions/connectrelaypublisher.md): Open a dedicated Relay publisher connection. - [connectRelaySubscriber](https://www.caprid.com/docs/reference/typescript/caprid/relay/index/functions/connectrelaysubscriber.md): Open a Relay connection for subscribing to tracks. - [connectSupervisedPublisher](https://www.caprid.com/docs/reference/typescript/caprid/relay/index/functions/connectsupervisedpublisher.md): Open a publisher that reconnects: each connection serves namespace plus a fresh generation field, and the track writers registerTrack returns outlive the connections. - [connectSupervisedSubscriber](https://www.caprid.com/docs/reference/typescript/caprid/relay/index/functions/connectsupervisedsubscriber.md): Open a subscriber that reconnects and keeps every wanted track subscribed across connections, publisher restarts and generations. - [readJSON](https://www.caprid.com/docs/reference/typescript/caprid/relay/index/functions/readjson.md): Parse one UTF-8 JSON object payload. - [readText](https://www.caprid.com/docs/reference/typescript/caprid/relay/index/functions/readtext.md): Decode one complete object as UTF-8. - [roomEndpoint](https://www.caprid.com/docs/reference/typescript/caprid/relay/index/functions/roomendpoint.md): Root an endpoint at a room. - [ConnectRelayOptions](https://www.caprid.com/docs/reference/typescript/caprid/relay/index/interfaces/connectrelayoptions.md): Connection options shared by connectRelaySubscriber and connectRelayPublisher: endpoint, token, lifetime signal, connection deadline, and transport injection. - [ConnectRelayPublisherOptions](https://www.caprid.com/docs/reference/typescript/caprid/relay/index/interfaces/connectrelaypublisheroptions.md): Options for connectRelayPublisher: the shared connection options plus the namespace. - [ConnectRelaySubscriberOptions](https://www.caprid.com/docs/reference/typescript/caprid/relay/index/interfaces/connectrelaysubscriberoptions.md): Options for connectRelaySubscriber: the shared connection options plus the request deadline. - [ConnectSupervisedPublisherOptions](https://www.caprid.com/docs/reference/typescript/caprid/relay/index/interfaces/connectsupervisedpublisheroptions.md): Options for connectSupervisedPublisher: the shared connection options, the root namespace and the policy. - [ConnectSupervisedSubscriberOptions](https://www.caprid.com/docs/reference/typescript/caprid/relay/index/interfaces/connectsupervisedsubscriberoptions.md): Options for connectSupervisedSubscriber: the subscriber connection options and the reconnection policy. - [Goaway](https://www.caprid.com/docs/reference/typescript/caprid/relay/index/interfaces/goaway.md): GOAWAY: the peer asks the client to stop making requests on this session and move to a new one. - [KeyValuePair](https://www.caprid.com/docs/reference/typescript/caprid/relay/index/interfaces/keyvaluepair.md): A generic MOQT Key-Value-Pair. - [MessageParameters](https://www.caprid.com/docs/reference/typescript/caprid/relay/index/interfaces/messageparameters.md): Decoded message parameters. - [MoqtObject](https://www.caprid.com/docs/reference/typescript/caprid/relay/index/interfaces/moqtobject.md): An object delivered on a subscription's subgroup stream. - [MoqTrackSource](https://www.caprid.com/docs/reference/typescript/caprid/relay/index/interfaces/moqtracksource.md): Borrowed access to tracks on a session. - [MoqtTransport](https://www.caprid.com/docs/reference/typescript/caprid/relay/index/interfaces/moqttransport.md): Structural subset of WebTransport the session driver needs. - [NamespaceEvent](https://www.caprid.com/docs/reference/typescript/caprid/relay/index/interfaces/namespaceevent.md): One change in which namespaces under the prefix are announced. - [NamespaceEventOptions](https://www.caprid.com/docs/reference/typescript/caprid/relay/index/interfaces/namespaceeventoptions.md): Options for namespaceEvents: the prefix, the iterator's queue bound and its own cancellation. - [NamespaceEvents](https://www.caprid.com/docs/reference/typescript/caprid/relay/index/interfaces/namespaceevents.md): Single-consumer iterator owning one namespace request, never the shared connection. - [PublishDone](https://www.caprid.com/docs/reference/typescript/caprid/relay/index/interfaces/publishdone.md): PUBLISH_DONE: the publisher ended a subscription. - [PublisherGeneration](https://www.caprid.com/docs/reference/typescript/caprid/relay/index/interfaces/publishergeneration.md): One publisher generation: a connection and the namespace it serves. - [PublishProperty](https://www.caprid.com/docs/reference/typescript/caprid/relay/index/interfaces/publishproperty.md): One MOQT property (a key-value pair) on a registered track or a written object, encoded as supplied. - [RegisterTrackOptions](https://www.caprid.com/docs/reference/typescript/caprid/relay/index/interfaces/registertrackoptions.md): What RelayPublisher.registerTrack needs. - [RelayCredential](https://www.caprid.com/docs/reference/typescript/caprid/relay/index/interfaces/relaycredential.md): A token together with when the relay stops honoring it. moq-relay ends a session at its grant's deadline, which is the token's expiry, and a live session cannot take a new token; supervised connectio… - [RelayGroupWriter](https://www.caprid.com/docs/reference/typescript/caprid/relay/index/interfaces/relaygroupwriter.md): One open group from RelayTrackWriter.openGroup: a single subgroup stream the application writes objects to in order, then FINs with close() or resets with abort(). - [RelayPublisher](https://www.caprid.com/docs/reference/typescript/caprid/relay/index/interfaces/relaypublisher.md): A connection that can only publish, serving one namespace. - [RelaySubscriber](https://www.caprid.com/docs/reference/typescript/caprid/relay/index/interfaces/relaysubscriber.md): A connection that can only subscribe. - [RelaySubscription](https://www.caprid.com/docs/reference/typescript/caprid/relay/index/interfaces/relaysubscription.md): The handle RelaySubscriber.subscribe() returns: the core handle plus readiness and termination. - [RelaySubscriptionHandlers](https://www.caprid.com/docs/reference/typescript/caprid/relay/index/interfaces/relaysubscriptionhandlers.md): Callbacks for one subscription made through RelaySubscriber.subscribe. - [RelayTrackOptions](https://www.caprid.com/docs/reference/typescript/caprid/relay/index/interfaces/relaytrackoptions.md): Which track to subscribe to, and how: what RelaySubscriber.subscribe and subscribeEvents take. - [RelayTrackWriter](https://www.caprid.com/docs/reference/typescript/caprid/relay/index/interfaces/relaytrackwriter.md): One registered track on a publisher connection, from RelayPublisher.registerTrack. - [RequestError](https://www.caprid.com/docs/reference/typescript/caprid/relay/index/interfaces/requesterror.md): A failed request: a REQUEST_ERROR from the peer, or a failure the session synthesized from a stream event (see isStreamFailure). - [SubscribeOk](https://www.caprid.com/docs/reference/typescript/caprid/relay/index/interfaces/subscribeok.md): SUBSCRIBE_OK: the peer accepted a subscription. - [Subscription](https://www.caprid.com/docs/reference/typescript/caprid/relay/index/interfaces/subscription.md): A live subscription returned by MoqtSession.subscribe. - [SubscriptionEventOptions](https://www.caprid.com/docs/reference/typescript/caprid/relay/index/interfaces/subscriptioneventoptions.md): Options for subscribeEvents: the iterator's queue bound and its own cancellation. - [SubscriptionEvents](https://www.caprid.com/docs/reference/typescript/caprid/relay/index/interfaces/subscriptionevents.md): Single-consumer iterator owning one subscription, never the shared connection. - [SubscriptionHandlers](https://www.caprid.com/docs/reference/typescript/caprid/relay/index/interfaces/subscriptionhandlers.md): Callbacks for MoqtSession.subscribe. - [SupervisedPublisher](https://www.caprid.com/docs/reference/typescript/caprid/relay/index/interfaces/supervisedpublisher.md): A publisher that reconnects. - [SupervisedSubscriber](https://www.caprid.com/docs/reference/typescript/caprid/relay/index/interfaces/supervisedsubscriber.md): A subscriber that reconnects and keeps wanted tracks subscribed. - [SupervisionBackoff](https://www.caprid.com/docs/reference/typescript/caprid/relay/index/interfaces/supervisionbackoff.md): The delay before each retry: it starts at initialDelayMs and doubles up to maxDelayMs, with jitter. - [SwitchableHandlers](https://www.caprid.com/docs/reference/typescript/caprid/relay/index/interfaces/switchablehandlers.md): Callbacks for a switchable subscription. - [SwitchableSubscription](https://www.caprid.com/docs/reference/typescript/caprid/relay/index/interfaces/switchablesubscription.md): The handle RelaySubscriber.subscribeSwitchable() returns. - [SwitchedInfo](https://www.caprid.com/docs/reference/typescript/caprid/relay/index/interfaces/switchedinfo.md): What onSwitched receives and switchTo resolves with. - [SwitchOptions](https://www.caprid.com/docs/reference/typescript/caprid/relay/index/interfaces/switchoptions.md): How switchTo opens and promotes the new subscription. - [WantHandlers](https://www.caprid.com/docs/reference/typescript/caprid/relay/index/interfaces/wanthandlers.md): The callbacks a want delivers to. - [WantOptions](https://www.caprid.com/docs/reference/typescript/caprid/relay/index/interfaces/wantoptions.md): What a want asks for. - [WantSwitchedInfo](https://www.caprid.com/docs/reference/typescript/caprid/relay/index/interfaces/wantswitchedinfo.md): What onSwitched receives at a want's cutover. - [WantTarget](https://www.caprid.com/docs/reference/typescript/caprid/relay/index/interfaces/wanttarget.md): Where a want's subscription was made: the namespace (the generation's, when following one) and the track. - [LocationFilter](https://www.caprid.com/docs/reference/typescript/caprid/relay/index/type-aliases/locationfilter.md): Which Objects a subscription or fetch covers. - [RelayErrorCode](https://www.caprid.com/docs/reference/typescript/caprid/relay/index/type-aliases/relayerrorcode.md): Stable categories for SDK lifecycle failures; messages are diagnostic text only. - [RelayErrorPhase](https://www.caprid.com/docs/reference/typescript/caprid/relay/index/type-aliases/relayerrorphase.md): Where the failure originated, not a delivery acknowledgment or a safe-retry flag. - [RelayTransportFactory](https://www.caprid.com/docs/reference/typescript/caprid/relay/index/type-aliases/relaytransportfactory.md): Supply a browser transport or a compatible implementation in another runtime. - [RestartReason](https://www.caprid.com/docs/reference/typescript/caprid/relay/index/type-aliases/restartreason.md): Why a want replaced its subscription. - [SubscriptionEnd](https://www.caprid.com/docs/reference/typescript/caprid/relay/index/type-aliases/subscriptionend.md): How a subscription ended. kind is the lifecycle name; cause is what happened on the wire or locally; accepted says whether SUBSCRIBE_OK had arrived; error is the REQUEST_ERROR, the connection's failu… - [SubscriptionEndKind](https://www.caprid.com/docs/reference/typescript/caprid/relay/index/type-aliases/subscriptionendkind.md): The lifecycle name for how a subscription ended: rejected when the relay answered the request with REQUEST_ERROR before accepting it (including the request timeout), terminated when an accepted subsc… - [SubscriptionEvent](https://www.caprid.com/docs/reference/typescript/caprid/relay/index/type-aliases/subscriptionevent.md): Delivery order is callback arrival order, with no ordering guarantee across streams. - [SupervisedStatus](https://www.caprid.com/docs/reference/typescript/caprid/relay/index/type-aliases/supervisedstatus.md): Where a supervised connection stands: connecting until the first connection is up, live while one is, reconnecting between connections, and closed once the application closed it or its signal aborted. - [DEFAULT_ENDPOINT](https://www.caprid.com/docs/reference/typescript/caprid/relay/index/variables/default_endpoint.md): The hosted Relay endpoint, pinned in spec/protocol.json as relay.defaultEndpoint. ### @caprid/relay-quic - [@caprid/relay-quic](https://www.caprid.com/docs/reference/typescript/caprid/relay-quic/readme.md): @caprid/relay-quic: the Relay SDK's transport adapter for Node. - [nativeQuicTransport](https://www.caprid.com/docs/reference/typescript/caprid/relay-quic/functions/nativequictransport.md): A transport factory for the SDK's createTransport option that connects over native QUIC from Node: - [CertificateHash](https://www.caprid.com/docs/reference/typescript/caprid/relay-quic/interfaces/certificatehash.md): A certificate hash the server's end-entity certificate must match, in the W3C WebTransport shape. - [NativeQuicConnection](https://www.caprid.com/docs/reference/typescript/caprid/relay-quic/interfaces/nativequicconnection.md): What one call of a NativeQuicTransportFactory returns: the shape the SDK's createTransport expects. - [NativeQuicMoqtTransport](https://www.caprid.com/docs/reference/typescript/caprid/relay-quic/interfaces/nativequicmoqttransport.md): The transport a NativeQuicConnection carries: a MoqtTransport that reports the selected protocol. - [NativeQuicTransportOptions](https://www.caprid.com/docs/reference/typescript/caprid/relay-quic/interfaces/nativequictransportoptions.md): What nativeQuicTransport's dials trust, how many streams they let the relay open, and where they write qlog. - [NativeQuicTransportFactory](https://www.caprid.com/docs/reference/typescript/caprid/relay-quic/type-aliases/nativequictransportfactory.md): Dials url's host and port (443 by default) over native QUIC, offering protocols as the ALPN list. ### @caprid/relay-websocket - [@caprid/relay-websocket](https://www.caprid.com/docs/reference/typescript/caprid/relay-websocket/readme.md): @caprid/relay-websocket: the Relay SDK's transport adapter for QMux over WebSocket. - [WebSocketSessionError](https://www.caprid.com/docs/reference/typescript/caprid/relay-websocket/classes/websocketsessionerror.md): A session failure (TA-22): the session is over, or the dial failed. - [createWebSocketTransport](https://www.caprid.com/docs/reference/typescript/caprid/relay-websocket/functions/createwebsockettransport.md): A transport factory for the SDK's createTransport option that always connects over QMux over WebSocket, in a browser or in Node: - [withWebSocketFallback](https://www.caprid.com/docs/reference/typescript/caprid/relay-websocket/functions/withwebsocketfallback.md): A transport factory for the SDK's createTransport option that dials the runtime's WebTransport first and, unless that handshake completes within webSocketDelayMs (default 250 ms, as Happy Eyeballs, R… - [CloseInfo](https://www.caprid.com/docs/reference/typescript/caprid/relay-websocket/interfaces/closeinfo.md): How closed resolves after an application close from either end (TA-9). - [FallbackConnection](https://www.caprid.com/docs/reference/typescript/caprid/relay-websocket/interfaces/fallbackconnection.md): What one call of a FallbackTransportFactory returns. - [FallbackTransport](https://www.caprid.com/docs/reference/typescript/caprid/relay-websocket/interfaces/fallbacktransport.md): A transport that dials WebTransport and, unless that is ready within the WebSocket delay, QMux over WebSocket alongside it: the first ready carries the session and the other is closed. - [WebSocketConnection](https://www.caprid.com/docs/reference/typescript/caprid/relay-websocket/interfaces/websocketconnection.md): What one call of a WebSocketTransportFactory returns: the shape the SDK's createTransport expects. - [WebSocketFallbackOptions](https://www.caprid.com/docs/reference/typescript/caprid/relay-websocket/interfaces/websocketfallbackoptions.md): Options for withWebSocketFallback. - [WebSocketMoqtTransport](https://www.caprid.com/docs/reference/typescript/caprid/relay-websocket/interfaces/websocketmoqttransport.md): The transport a WebSocketConnection carries: a MoqtTransport that reports the selected protocol. - [FallbackCarrier](https://www.caprid.com/docs/reference/typescript/caprid/relay-websocket/type-aliases/fallbackcarrier.md): Which transport a FallbackTransport runs on. - [FallbackTransportFactory](https://www.caprid.com/docs/reference/typescript/caprid/relay-websocket/type-aliases/fallbacktransportfactory.md): Dials WebTransport, then races QMux over WebSocket against it; see withWebSocketFallback. - [WebSocketTransportFactory](https://www.caprid.com/docs/reference/typescript/caprid/relay-websocket/type-aliases/websockettransportfactory.md): Dials url as a WebSocket (https: becomes wss:, path and query unchanged), offering each of protocols as the subprotocol qmux-01.. ### @caprid/relay/media - [media](https://www.caprid.com/docs/reference/typescript/caprid/relay/media/readme.md): @caprid/relay/media: the media policy over registered tracks and subscriptions (spec/behavior.md, "Media publishing" and "Media subscribing"). - [createCatalogService](https://www.caprid.com/docs/reference/typescript/caprid/relay/media/functions/createcatalogservice.md): Serve a state-shaped track, such as an MSF catalog: send document as one independent group on the relay's current subscription and again on every later one, including a replacement (spec/behavior.md,… - [createDocumentService](https://www.caprid.com/docs/reference/typescript/caprid/relay/media/functions/createdocumentservice.md): Serve a state-shaped track whose document the application replaces, such as the msf-01 media timeline: the latest document goes out as a new group on every relay subscription, as createCatalogService… - [createFrameReader](https://www.caprid.com/docs/reference/typescript/caprid/relay/media/functions/createframereader.md): Read a track as frames: feed the sequencer every event, poll it after each, and again when a wait it reports ends (at most 50 ms on, since another track may move a shared clock). - [createFrameWriter](https://www.caprid.com/docs/reference/typescript/caprid/relay/media/functions/createframewriter.md): Map encoded frames onto a registered track's groups (spec/behavior.md, "Media publishing"). - [createReplaceableTrack](https://www.caprid.com/docs/reference/typescript/caprid/relay/media/functions/createreplaceabletrack.md): Publish a track that can be replaced by a new one, listed in the catalog in its place (spec/media-layer.md, "Track replacement"). msf-01 §5.3 makes a changed track a new name; a listener that sees th… - [mediaSubscribeParameters](https://www.caprid.com/docs/reference/typescript/caprid/relay/media/functions/mediasubscribeparameters.md): The subscription parameters a viewer gives a media track, so audio goes ahead of video when the downlink is congested (spec/behavior.md, "Media subscribing"). - [mediaTrackProperties](https://www.caprid.com/docs/reference/typescript/caprid/relay/media/functions/mediatrackproperties.md): The track properties that give a media track its default delivery timeout and publisher priority (spec/behavior.md, "Media publishing"), so a stall costs stale frames rather than lasting latency. - [CatalogService](https://www.caprid.com/docs/reference/typescript/caprid/relay/media/interfaces/catalogservice.md): Serves a state-shaped track: sends its document on every relay subscription. - [CatalogServiceOptions](https://www.caprid.com/docs/reference/typescript/caprid/relay/media/interfaces/catalogserviceoptions.md): Options for createCatalogService. - [DocumentService](https://www.caprid.com/docs/reference/typescript/caprid/relay/media/interfaces/documentservice.md): Serves a state-shaped track whose document the application replaces, such as the media timeline. - [Frame](https://www.caprid.com/docs/reference/typescript/caprid/relay/media/interfaces/frame.md): One encoded frame as the frame writer sees it. - [FrameOutcome](https://www.caprid.com/docs/reference/typescript/caprid/relay/media/interfaces/frameoutcome.md): What became of one frame handed to FrameWriter.write. - [FrameReader](https://www.caprid.com/docs/reference/typescript/caprid/relay/media/interfaces/framereader.md): A subscription's or a want's handlers that read its track as frames in decode order. - [FrameReaderOptions](https://www.caprid.com/docs/reference/typescript/caprid/relay/media/interfaces/framereaderoptions.md): Options for createFrameReader. - [FrameReaderSequencer](https://www.caprid.com/docs/reference/typescript/caprid/relay/media/interfaces/framereadersequencer.md): What a FrameReader drives: @caprid/moq-media's FrameSequencer qualifies. - [FrameWriter](https://www.caprid.com/docs/reference/typescript/caprid/relay/media/interfaces/framewriter.md): Maps encoded frames onto a registered track's groups, one frame at a time. - [FrameWriterOptions](https://www.caprid.com/docs/reference/typescript/caprid/relay/media/interfaces/framewriteroptions.md): Options for createFrameWriter. - [MediaTrackPropertiesOptions](https://www.caprid.com/docs/reference/typescript/caprid/relay/media/interfaces/mediatrackpropertiesoptions.md): Options for mediaTrackProperties. - [ReplaceableTrack](https://www.caprid.com/docs/reference/typescript/caprid/relay/media/interfaces/replaceabletrack.md): A track that the publisher can replace mid-stream, for barge-in: a voice agent talked over replaces its reply track, and listeners drop the old reply's audio and play the new track. - [ReplaceableTrackCatalog](https://www.caprid.com/docs/reference/typescript/caprid/relay/media/interfaces/replaceabletrackcatalog.md): Where a ReplaceableTrack lists its current track: the broadcast's catalog. - [ReplaceableTrackOptions](https://www.caprid.com/docs/reference/typescript/caprid/relay/media/interfaces/replaceabletrackoptions.md): Options for createReplaceableTrack. - [ServeOptions](https://www.caprid.com/docs/reference/typescript/caprid/relay/media/interfaces/serveoptions.md): Options for CatalogService.serve. - [TrackReplacement](https://www.caprid.com/docs/reference/typescript/caprid/relay/media/interfaces/trackreplacement.md): What ReplaceableTrack.replace did. - [DocumentServiceOptions](https://www.caprid.com/docs/reference/typescript/caprid/relay/media/type-aliases/documentserviceoptions.md): Options for createDocumentService. - [FrameGrouping](https://www.caprid.com/docs/reference/typescript/caprid/relay/media/type-aliases/framegrouping.md): How a FrameWriter maps frames onto groups. 'keyframe' is the LOC mapping for video: a keyframe FINs the open group and opens a new one, deltas append to it. 'frame' sends every frame as its own singl… - [FrameOutcomeKind](https://www.caprid.com/docs/reference/typescript/caprid/relay/media/type-aliases/frameoutcomekind.md): What became of a frame: 'sent', or one of the ways it was not. 'skipped': the relay had no subscription for it, or it was a delta with no group to join. 'stale': the stale predicate rejected it or a … - [MediaKind](https://www.caprid.com/docs/reference/typescript/caprid/relay/media/type-aliases/mediakind.md): What a media track carries, which decides its default delivery timeout and priorities. ### @caprid/relay/node - [node](https://www.caprid.com/docs/reference/typescript/caprid/relay/node/readme.md): @caprid/relay/node: the SDK for Node. - [connectRelayPublisher](https://www.caprid.com/docs/reference/typescript/caprid/relay/node/functions/connectrelaypublisher.md): Open a Relay connection that publishes one namespace, as @caprid/relay's connectRelayPublisher does, over native QUIC through @caprid/relay-quic unless createTransport is given. - [connectRelaySubscriber](https://www.caprid.com/docs/reference/typescript/caprid/relay/node/functions/connectrelaysubscriber.md): Open a Relay connection for subscribing to tracks, as @caprid/relay's connectRelaySubscriber does, over native QUIC through @caprid/relay-quic unless createTransport is given. - [connectSupervisedPublisher](https://www.caprid.com/docs/reference/typescript/caprid/relay/node/functions/connectsupervisedpublisher.md): Open a publisher that reconnects, as @caprid/relay's connectSupervisedPublisher does, with every generation over native QUIC through @caprid/relay-quic unless createTransport is given. - [connectSupervisedSubscriber](https://www.caprid.com/docs/reference/typescript/caprid/relay/node/functions/connectsupervisedsubscriber.md): Open a subscriber that reconnects, as @caprid/relay's connectSupervisedSubscriber does, with every connection over native QUIC through @caprid/relay-quic unless createTransport is given. - [RelayCertificateHash](https://www.caprid.com/docs/reference/typescript/caprid/relay/node/interfaces/relaycertificatehash.md): A certificate hash the server's end-entity certificate must match, in the W3C WebTransport shape. - [RelayNodeTrustOptions](https://www.caprid.com/docs/reference/typescript/caprid/relay/node/interfaces/relaynodetrustoptions.md): What a Node connection trusts, passed to @caprid/relay-quic's nativeQuicTransport. - [RelayNodeOptions](https://www.caprid.com/docs/reference/typescript/caprid/relay/node/type-aliases/relaynodeoptions.md): A role's connection options in Node: either the native QUIC adapter's trust options (ca, serverCertificateHashes), or a createTransport of the caller's own, which replaces the adapter. ## Python API reference - [caprid_relay](https://www.caprid.com/docs/reference/python/caprid_relay.md): Python API reference for caprid_relay: Connect, publish, subscribe, and supervise connections. - [caprid_relay.media](https://www.caprid.com/docs/reference/python/caprid_relay-media.md): Python API reference for caprid_relay.media: Catalogs, document services, frame writers and readers. - [caprid_relay.quic](https://www.caprid.com/docs/reference/python/caprid_relay-quic.md): Python API reference for caprid_relay.quic: The native QUIC transport on aioquic. - [moq_core](https://www.caprid.com/docs/reference/python/moq_core.md): Python API reference for moq_core: The generic MOQT protocol core. - [moq_media](https://www.caprid.com/docs/reference/python/moq_media.md): Python API reference for moq_media: Pure LOC/MSF and H.264 format helpers. - [moq_media.opus](https://www.caprid.com/docs/reference/python/moq_media-opus.md): Python API reference for moq_media.opus: The Opus encoder, behind the opus extra. ## API reference - [API reference](https://www.caprid.com/docs/reference.md): The HTTP APIs and SDK APIs, generated from their OpenAPI specs, TypeScript doc comments and Python docstrings. ## Optional The SDK specification: the contract every Relay SDK implements. - [SDK specification](https://www.caprid.com/docs/spec.md): The SDKs in this repository share no code. They share this directory, which is how they stay in lockstep. - [SDK behavior contract](https://www.caprid.com/docs/spec/behavior.md): Every Relay SDK, in any language, implements the same protocol pin and the same observable semantics. This document states those semantics without reference to any one language. - [SDK vocabulary](https://www.caprid.com/docs/spec/vocabulary.md): Every Relay SDK spells the same concepts with the same words, in that language's casing. - [Transport adapter contract](https://www.caprid.com/docs/spec/transport-adapter.md): A Relay connection runs over a transport adapter (see CONTEXT.md): the browser's native WebTransport, the Python aioquic native QUIC client, the @caprid/relay-quic native QUIC adapter for Node, the @… - [moq-relay interoperability](https://www.caprid.com/docs/spec/relay-interop.md): Both SDKs offer moqt-22, then moqt-20, and speak whichever the relay selects; moq-relay selects moqt-22 from 0.15.0 (draft-22 LOCATION_FILTER framing). - [Recovering after a publisher stops or restarts](https://www.caprid.com/docs/spec/publisher-recovery.md): Replacing a publisher connection restores an upstream source for new subscriptions. - [Media layer: LOC packaging and MSF catalogs](https://www.caprid.com/docs/spec/media-layer.md): This document started on 2026-09-18 as a proposal for the media helpers both SDKs would take over from the Video.js example. Most of it is now implemented: - [Test vectors](https://www.caprid.com/docs/spec/vectors.md): Language-neutral vectors.