This is the full developer documentation for MeshedFlow
# Quickstart
> Add MeshedFlow to a page and see peer-assisted offload in minutes.
Get MeshedFlow serving segments peer-to-peer on a test page in a few minutes. MeshedFlow ships as an [hls.js](https://github.com/video-dev/hls.js) loader, so you keep your player and your stream -- you just point hls.js at the MeshedFlow loader.
Three fields are all you need
The only required loader options are `signalingUrl`, `streamId`, and `authToken`. The public-key fetch and per-segment signature verification are **automatic** -- the SDK fetches the origin's verification key and checks every peer-delivered segment on its own.
1. **Get your credentials from the portal.**
Sign in to the [MeshedFlow Dashboard](https://app.meshedflow.com) and open your stream. You need three values:
* **`signalingUrl`** -- your tenant's signaling/WebSocket endpoint (the `wssEndpoint` shown when your tenant was provisioned, e.g. `wss://signal.meshedflow.com:8445/ws`).
* **`streamId`** -- formatted as `:`, e.g. `cust_20260808_eb8790f7:live-demo`. The `` prefix is what scopes the stream to your account.
* **`authToken`** -- the SDK JWT you embed in your build.
See [Authentication & provisioning](/concepts/auth/) for where each value comes from and how tokens rotate.
2. **Add your content origin in the portal.**
Peer delivery only works for segments served from an origin you've allowlisted -- signing refuses any URL that isn't. In the portal, add your segment origin (e.g. `https://cdn.example.com`) to your tenant's content origins. See [Content signing & origins](/concepts/signing/).
No origin, no offload
If your content origin isn't in the allowlist, the control plane returns `403` for every sign request, no segment can be verified, and offload stays at **0%** -- all traffic falls back to your CDN. This is the single most common cause of "it's installed but offload reads zero." Add the origin first.
3. **Include the SDK and hls.js.**
Load the SDK as an ES module from the CDN, alongside hls.js -- no build step needed. (Using a bundler instead? `npm install @meshedflow/sdk hls.js` and import from `@meshedflow/sdk` -- same build, see the SDK reference.)
* ES module (import map)
index.html
```html
```
* Direct ESM imports
player.js
```js
import Hls from 'https://cdn.jsdelivr.net/npm/hls.js@1/dist/hls.mjs';
import { MeshedFlowLoader } from 'https://meshedflow.com/sdk/dist/sdk.mjs';
```
Note
`@meshedflow/sdk` is available on request / coming soon on npm -- for now the `https://meshedflow.com/sdk/dist/sdk.mjs` module is the supported install. hls.js is a normal npm/CDN dependency.
4. **Wire the MeshedFlow loader into hls.js.**
Pass `MeshedFlowLoader` as the hls.js `loader` and put the MeshedFlow options under `loaderConfig`. Then attach your `