openvibers/openrestream STATUS.json

STATUS.json

main 3.2 KB · 53 lines · json

1{
2 "repository": "OpenVibers/OpenRestream",
3 "stage": "alpha",
4 "code": true,
5 "wave": "W7",
6 "plan": "OpenVibe End-to-End Realignment & Implementation Plan, revision 3 (20 Sep 2026)",
7 "runtime": "node 22, express, PostgreSQL 18 (openvibe-sdk/db, async) + Valkey 9, node-media-server 2.7.4, ffmpeg",
8 "port": 4500,
9 "rtmpPort": 1936,
10 "domain": "openre.stream",
11 "contracts": "openvibe-contracts v0.419.0",
12 "sdk": "openvibe-sdk v0.161.0",
13 "shared": "openvibe-shared v4.241.0",
14 "protocols": {
15 "rtmp": "ingest ported (openre-rtmp-ingest)",
16 "restream": "RTMP source to RTMP/RTMPS/SRT destinations ported (openre-restream-worker)",
17 "webrtc": "worker ported (workers/webrtc.js + workers/webrtc/{sfu,sdp,signaling}.js, run by openre-webrtc@): WHIP (RFC 9725) ingest by key on the mediasoup SFU, browser broadcasters over /b/<key> and viewers over /w/<playback id>, loopback RTP egress for restream/recording/thumbnails, recording through Media's RTP ingest; generations/leases/drain; refuses to start in production without MEDIASOUP_ANNOUNCED_IP",
18 "jsmpeg": "worker ported (workers/jsmpeg.js): MPEG-TS POST admission by key, WS viewers, loopback data tap, restream (re-encode), generations/drain; no recording (parity)"
19 },
20 "capabilities": [
21 "openre.stream.read",
22 "openre.stream.write",
23 "openre.key.rotate",
24 "openre.session.read",
25 "openre.session.end",
26 "openre.output.read",
27 "openre.output.write",
28 "openre.resource.read"
29 ],
30 "capabilitiesRegistered": true,
31 "resourceRoutes": [
32 "GET /api/v1/resources",
33 "GET /api/v1/resources/:ovrn"
34 ],
35 "livePatch": "applied in Live f0ca18b and deployed; Live wired on 2026-09-23 (OPENRE_URL and the openre.session.* subscription, docs/cutover.md phase A); every Live slot keeps ingest_authority=live until its per-slot cutover (phase B), so no broadcaster uses OpenRestream yet",
36 "deployed": true,
37 "deployment": "Deployed with `sudo ovhost deploy openre` (OpenVibe.Host strategy release-layout since the 2026-09-27 cutover; deploy/scripts/deploy.sh wraps deploy, rollback and plan, and hands workers/status/prune to deploy/scripts/workers.sh): API + coordinator on 127.0.0.1:4500, RTMP ingest public on 0.0.0.0:1936 (ingest.openre.stream, DNS-only; reachable from outside since 2026-09-23), Live wired (OPENRE_URL, openre.session.* subscription), preflight all PASS, restore drill passed. No slot switched yet: every slot is still ingested by Live until the per-slot cutover (docs/cutover.md phase B).",
38 "features": [
39 "stream definitions owned by a Network subject, with typed references",
40 "ingest keys hashed at rest, shown once, rotation with grace",
41 "RTMP ingest workers with generations, leases and drains that survive API deploys",
42 "RTMP/RTMPS/SRT restream with output health and a circuit breaker",
43 "SSRF-checked destinations with sealed keys",
44 "recording requests to OpenVibe.Media",
45 "HTTP-FLV playback descriptors",
46 "outbox events openre.session.*, openre.output.*, openre.recording.requested, openre.key.rotated",
47 "migration from Live without importing old keys",
48 "restore-drill read-only mode",
49 "per-actor limits (openvibe-sdk/limits)"
50 ],
51 "updated": "2026-11-13"
52}
53