MoQ Ingest

Ingest media via Media over QUIC Transport (MoQT), either by subscribing to a relay or accepting direct publisher connections.

Component Configuration

Option Description Required

id

A unique identifier for the component instance

displayName

The name shown in the Studio UI of this component

namespace

MoQT namespace tuple, slash-separated (e.g. 'stage/primary'). Used in client mode to subscribe to a relay; ignored in listener mode (set 'listener.namespacePrefix' instead). (default: "norsk")

url

Optional: moqts:// or https:// URL of a relay to pull from, or iroh://<hex-node-id> to dial a peer by its iroh NodeId. Leave empty for listener-only mode.

listener

Optional: open a QUIC/WebTransport listener to accept direct publisher connections

disableTlsVerify

Dev only: disable TLS verification on outbound connections (default: false)

initialState

The ingest state of this component on start-up (default: "enabled")

c2paVerification

Validate every incoming init and media segment against the C2PA Live Video continuity chain. Reporting-only: media continues to flow regardless of outcome. Default is disabled. (default: {"type":"disabled"})

notes

Additional notes about this component

Listener

Option Description Required

namespacePrefix

Namespace prefix tuple, slash-separated (e.g. 'norsk' or 'stage/primary'). Matched segment-by-segment against each incoming publisher's tuple — so 'stage/primary' routes [stage, primary, …​] but NOT [stage, primaryextra]. Multiple MoQ ingests on the same listener pool must use distinct prefixes. (default: "norsk/")

quicServerPort

QUIC listener port for native MoQT publishers

webTransportPort

WebTransport listener port for browser publishers (must differ from QUIC port)

quicServerCert

TLS certificate file path (required when a port is set)

quicServerKey

TLS private key file path (required when a port is set)

iroh

Also accept publishers over the instance's shared iroh endpoint: remote encoders dial iroh://<NodeId> — no port, cert or inbound firewall hole. Peers must be on the endpoint's allow-list (NORSK_IROH_ALLOWED_PEERS or norsk.system.iroh). The NodeId to hand to publishers appears on the component once running. (default: false)

allowedNamespaces

Full publisher namespaces to allow, each slash-separated (e.g. ['norsk/stage/primary']). Leave empty to accept any publisher that matches the prefix. (default: [])

C2pa Verification (Disabled)

Option Description Required

type

"disabled"

C2pa Verification (Enabled — Segment Manifest Box (§19.3))

Option Description Required

type

"segmentManifestBox"

trustAnchorsPath

Optional path to a PEM-encoded bundle of trusted root certificates. Leave empty to use the c2pa-rs default trust list. Set this when verifying content signed against a self-signed / private trust root.

C2pa Verification (Enabled — Verifiable Segment Info (§19.4))

Option Description Required

type

"verifiableSegmentInfo"

trustAnchorsPath

Optional path to a PEM-encoded bundle of trusted root certificates. Leave empty to use the c2pa-rs default trust list. Set this when verifying content signed against a self-signed / private trust root.

Global Configuration

Moq Preview

Option Description Required

quicServerPort

QUIC listener port for native MoQT subscribers (optional — only needed for non-browser clients)

webTransportPort

WebTransport listener port for browser MoQ players. Defaults to 4443. (default: 4443)

quicServerCert

TLS certificate file path. If omitted, a self-signed cert is auto-generated (14-day validity, rotated every 10 days).

quicServerKey

TLS private key file path. If omitted, auto-generated alongside the cert.

serveFingerprint

Publishes the cert SHA-256 so the moq-js player can trust it via WebTransport's serverCertificateHashes. Defaults on. (default: true)

Moq Iroh Endpoint

Option Description Required

secretKeyFile

Identity key file path on the Norsk instance. Created (mode 0600) if absent, so the NodeId is stable across restarts. Leave empty for an ephemeral identity (new NodeId every engine start).

relayMode

'default' uses n0's public relays + discovery for NAT traversal; 'disabled' allows direct paths only (LAN / explicit addr hints). Ignored when custom relay URLs are set. (default: "default")

relayUrls

Self-hosted iroh relay URLs (https://…). Setting any switches to custom relay mode and avoids n0 infrastructure entirely; peers then dial with the relay URL as a hint (iroh://<NodeId>?relay=<url>). Not valid with relay mode 'disabled'. (default: [])

allowedPeers

Remote NodeIds (64-char hex) allowed to connect inbound. The TLS handshake verifies the dialling peer's key, so this is an SSH authorized_keys model. (default: [])

allowedPeersFile

Allow-list file path on the Norsk instance (one hex NodeId per line, # comments).

allowAnyPeer

Accept connections from ANY peer. Explicit opt-in for open ingest or dev — never the default. (default: false)

Tags: moq moqt quic webtransport ingest