JavaScript/TypeScript implementation of MoQT (Media over QUIC Transport), an IETF protocol for real-time media delivery over QUIC.
| Package | Description |
|---|---|
@moqtap/codec |
Wire-format codec and session state machine |
@moqtap/trace |
Session recorder and .moqtrace binary format |
- Multi-draft support — drafts 07 through 17
- Stateless codec — encode/decode all MoQT control messages and data stream headers
- Session state machine — FSM-based protocol validation per draft
- Trace recording — capture sessions with configurable detail levels
- Cross-runtime — works in Node.js, Bun, Deno, and browsers
- Zero dependencies — codec has no runtime dependencies
npm install @moqtap/codecimport { createCodec } from '@moqtap/codec';
const codec = createCodec({ draft: '17' });
// Decode
const result = codec.decodeMessage(bytes);
if (result.ok) {
console.log(result.value.type);
}
// Encode
const encoded = codec.encodeMessage({
type: 'setup',
parameters: { max_request_id: 100n },
});Or use draft-scoped imports for full type inference:
import { createDraft14Codec } from '@moqtap/codec/draft14';
const codec = createDraft14Codec();See each package's README for full API documentation.
This is a Bun workspaces monorepo.
bun install # install dependencies
bun run build # build all packages
bun run test # run tests
bun run lint # check formatting and lint rules
bun run typecheck # type-check all packagesMIT