Feature status
What has been tested end to end and under which conditions, what is built but not yet proven, and what is planned.
Every feature has one of four statuses. Where a feature is Verified, the conditions say what it was tested on, and the source is a recorded result in the SDK repository.
| Status | Means |
|---|---|
| Verified | run end to end under the stated conditions, with a recorded result |
| Beta | built and covered by automated tests, but not yet run end to end under real conditions (a real device, a real encoder, a real network) |
| Experimental | off by default, a test option, or shown only against a model |
| Planned | decided or described, not built yet |
None of the runs below was on a phone, in Safari, or glass to glass. Most ran on one Linux machine with every part of the service on it; the scale and region runs were on cloud VMs.
Publish
| Feature | Status | Tested on | Source |
|---|---|---|---|
| SRT from ffmpeg, video and sound | Verified | one machine, ffmpeg 6.1, 1080p30, played in headless Chrome | bench/results/2026-10-30/ingest-audio, ingest-aac |
| Sound: Opus passed through, AAC-LC turned into Opus | Verified | one machine, ffmpeg 6.1 over SRT (and AAC over RTMP), sound and picture in step | bench/results/2026-10-30/ingest-aac |
| SRT from OBS, vMix, hardware encoders | Beta | a stand-in encoder with OBS's settings only | docs/sdk/publish/obs-srt.md |
| RTMP | Beta | ffmpeg 6.1, checked on the LL-HLS output only | bench/results/2026-10-30/ingest-aac |
| RTMPS | Beta | the ingest's own tests | crates/nearglass-ingest/tests/rtmps.rs |
| WHIP (video only) | Beta | the ingest's own tests; a browser publisher in a design test | crates/nearglass-ingest/tests/whip.rs, WHIP |
nearglass publish from a file | Verified | one machine, packages built from the release, five quickstart runs | How these docs were checked |
nearglass publish from a camera (Rockchip) | Beta | the encoder's logic is unit tested; never run on a board | unit tests |
| The C library, publishing from a device | Verified, Linux x86_64 only | one machine: a sample publishing with an API token, refused without it | samples/c-publisher, tools/smoke.sh |
| Python: live frames into numpy | Beta | one subscriber in a lab run, not yet a published result | AI and vision models |
| Python: publishing, and results tied to frames | Beta | an end-to-end test through a relay, no recorded run | python/tests/test_live.py |
Play
| Feature | Status | Tested on | Source |
|---|---|---|---|
| Web player over MoQ in Chrome on a computer | Verified | headless Chrome on Linux and Windows, one machine, the packaged player from another origin | RESULTS.md, Web player |
| Edge, Firefox on a computer | Beta | Edge has the browser features the player needs; neither has played a stream end to end | What works with what |
| Chrome for Android, Samsung Internet | Beta | not run on a phone | Phones and Safari |
| Sound in the browser | Verified | headless Chrome on one machine, sound and picture in step | bench/results/2026-10-30/ingest-audio |
| Renditions and switching between them | Verified | headless Chrome against a shaped network on one machine, three runs | bench/results/2026-10-21/renditions-browser |
| LL-HLS fallback: the switch | Beta | headless Chrome with Safari simulated and a stand-in for hls.js | The fallback |
| LL-HLS fallback: playback | Beta | the LL-HLS the ingest makes checked on its own; not played by our player through the service | bench/results/2026-10-30/ingest-aac |
| Safari, iPhone, iPad | Beta | the decision to use LL-HLS checked with Safari simulated; not run on a device through the service | Phones and Safari |
| Keeping MoQ on Safari by rotating connections | Experimental | against a model of Safari's bug only; off by default | bench/results/2026-10-21/rotation |
| React component | Beta | its tests run without a real React; the server call of the Next.js sample ran against the real API | React and Next.js |
| Native Windows player (the C library) | Beta | played streams on Linux; not built or run on Windows | A native Windows app |
| Controllers: one driver, many watchers | Verified | 50 commands a second through the relay with delay and loss added, the device stopping by itself 307 ms after the driver was killed; the browser controller's stops in headless Chrome | bench/results/2026-10-20/control, browser-controller |
Secure
| Feature | Status | Tested on | Source |
|---|---|---|---|
| Viewer tokens from your backend | Verified | headless Chrome on one machine, the seat held past its timeout; a Node.js route | Mint viewer tokens on your server |
| Public admission with a publishable key | Verified | headless Chrome, five quickstart runs | Web player |
| Viewer cap and waiting room | Verified | headless Chrome: in line, offered a seat, joined, live | Web player |
| Token renewal while watching | Verified | headless Chrome, 30 s tokens, 10 minutes, 39 renewals without a visible pause | bench/results/2026-10-30/sd60-token-renewal |
| Publisher tokens and their renewal | Verified | one machine, the command line tool and the C library | Token renewal |
| Refusing tokens while the clock is not set | Beta | the API's tests; no machine with an unset clock was available | Time sync |
| A full edge refusing new viewers | Verified, lab only | one machine, relays limited to one CPU each, 800 software viewers, no tokens | bench/results/2026-10-30/sd74-edge-admission |
| Account caps (streams, publishers, egress) | Beta | the relay's and the API's tests | Admission and caps |
Changing a stream (PATCH) | Beta | the API's tests | Concepts |
| Rotating a stream key | Beta | the API's tests; not with a live encoder | Concepts |
Operate
| Feature | Status | Tested on | Source |
|---|---|---|---|
| Usage metering | Verified | one machine from the packages, and cloud VMs in two regions, where the API's daily total matched the relays' own counters to the byte | Usage and spending caps |
| Spending caps and alerts | Verified | one machine from the packages: the cap, the refusal, the alerts at 50, 80 and 100 % | Usage and spending caps |
| Webhooks to the operator | Verified | one machine, signed events and retries; fleet events on cloud VMs | Webhooks |
| Webhooks to your own URL | Beta | the API's tests; not to a public address | Webhooks |
| Monitoring endpoints and the status page | Verified, without load | one machine, and on cloud VMs during the region runs | Monitoring |
| Regions, the nearest edge, failover | Verified | two regions on one machine, and four cloud VMs in two real regions: headless Chrome picked its near edge; a killed relay was replaced in about 2 s | docs/FLEET.md |
| Kicking a viewer | Verified | two regions on one machine | docs/FLEET.md |
| 1,000 viewers on one stream | Verified, software viewers | nine cloud VMs in one region, twice | Performance |
| More than 1,000 viewers | Planned | not run | Performance |
| Self-hosting the relay, API and ingest | Beta | the binaries on one machine; the relay's Debian package not installed and its service files not run | Self-hosting |
| Packet loss recovery (FEC) | Experimental | lab and cloud runs; off by default and off in the service | |
max_kbps enforced by the ingest | Planned | recorded, not enforced | What works with what |
| Dashboard | Beta | the API side only | |
| Sign-up, downloads, packages on npm | Planned | the packages are built and used in our runs; nothing is published | Quickstart |
How this page was made
From the results recorded in the SDK repository (RESULTS.md and
bench/results/), the "What was run" sections of these docs, and the
automated tests in the repository, as of 2026-11-02. A feature moves up
only with a new recorded run. The quickstart runs are described in the docs'
maintainer notes (docs/sdk/README.md, "How these docs were checked").