Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/moqtail/moqtail/llms.txt

Use this file to discover all available pages before exploring further.

What is Moqtail?

Moqtail is a Draft 14-compliant TypeScript client library for Media over QUIC Transport (MOQT) protocol, designed for seamless integration with WebTransport and MoQ relay servers. It enables efficient streaming of live and on-demand media content over modern QUIC connections.
Moqtail is under active development and the API is subject to change. Please use with caution in production environments.

Key Features

Type-Safe Development

Built with TypeScript for complete type safety and excellent IDE support

WebTransport Support

Leverages next-generation WebTransport protocol for high-performance media delivery

Dual-Mode Operation

Act as both publisher (content creator) and subscriber (content consumer)

Flexible Content Delivery

Support for live streaming, on-demand content, and hybrid modes

What is MOQT?

MOQT (Media over QUIC Transport) is a protocol for media delivery over QUIC connections, enabling efficient streaming of live and on-demand content. The protocol supports:
  • Low-latency streaming: Real-time media delivery with minimal buffering
  • Reliable transport: Built on QUIC’s reliable stream and datagram mechanisms
  • Scalable distribution: Efficient relay-based architecture for content distribution
  • Flexible delivery modes: Support for both push (subscribe) and pull (fetch) patterns

Architecture Overview

Moqtail operates in a client-relay architecture:

Client Roles

1

Publisher (Original Publisher)

Creates and announces tracks, making content available to subscribers. Publishers package media data as MoqtObject instances and serve them through live streams or cached content.
2

Subscriber (End Subscriber)

Discovers and consumes content from publishers via track subscriptions. Subscribers can request live streaming content or fetch historical data on-demand.

Core Concepts

Tracks

A track is a logical stream of media or data identified by:
  • Namespace: Hierarchical path segments (e.g., ["live", "conference"])
  • Track Name: Unique identifier within the namespace (e.g., "video")

Objects

Content is packaged as MoqtObject instances, which represent atomic units of data:
  • Location: Identified by groupId and objectId (e.g., video frames within GOPs)
  • Payload: The actual media data or content
  • Metadata: Publisher priority, forwarding preferences, and extension headers
  • Status: Normal data, end-of-group markers, or error conditions

Content Sources

Moqtail provides three content delivery patterns:
import { LiveTrackSource } from 'moqtail/client'

// For real-time streaming (e.g., live video)
const liveSource = new LiveTrackSource(objectStream)

Use Cases

Moqtail is ideal for:
  • Live video conferencing: Low-latency real-time communication
  • Live streaming: Broadcasting events with minimal delay
  • Video on demand: Efficient delivery of archived content
  • Gaming: Real-time game state synchronization
  • IoT data streams: Sensor data distribution with guaranteed delivery
  • File transfers: Reliable large file distribution

Protocol Compliance

Moqtail implements MOQT Draft 14 specification, ensuring compatibility with:
  • Standard MOQT relay servers
  • Other Draft 14-compliant clients
  • WebTransport-enabled browsers (Chrome, Edge, etc.)

System Requirements

Browser Compatibility

WebTransport support is required. Currently supported in:
  • Chrome 97+
  • Edge 97+
  • Opera 83+
Safari and Firefox do not yet support WebTransport. Check caniuse.com/webtransport for the latest browser compatibility.

Next Steps

Installation

Install Moqtail in your project

Quick Start

Build your first MOQT application