Skip to content
openvibers/openvibe.live
Commits
main · .env.example
-
Replace home secret with daily quest and live stats (#715)OpenVibers · 4 days ago
6c14808d
-
The agent embed may be framed by the Companion's exact extension origin (#654)OpenVibers · 6 days ago
ce99258b
-
Arena on stream: a streamer runs a Bench round, chat votes, Live casts one audience_poll (#433)OpenVibers · 15 days ago
68bd1b3a
-
Billing is the only money mode: remove Live's old ledger code (#182)OpenVibers · 27 days ago
35d02c6b
-
Live speech-to-text: NVIDIA Parakeet TDT 0.6B v3 for English and 24 European languages (more words heard, punctuated, as fast as base.en on a live segment); whisper keeps Japanese and the rest, and takes any audio Parakeet fails on (#144)OpenVibers · 28 days ago
7eacb825
-
Live: LIVE_MEDIA_ANALYSIS=ai sends finished VODs and clips to OpenVibe.AI's media.analyze (no local ffmpeg+whisper for them) (#111)OpenVibers · 12 Oct 2026
da8576aa
-
Docs: the go-live flow is Events then Network's consumer (C-85 leftovers) (#97)OpenVibers · 11 Oct 2026
176eff7d
-
Live: CHAT_AUTHORITY is retired; Chat runs chat with no switch (C-01) (#94)OpenVibers · 11 Oct 2026
5d822446
-
Live: go-lives reach followers through Network's consumer only (GOLIVE_NOTIFY and the direct call deleted, C-85) (#93)OpenVibers · 11 Oct 2026
0b7b620b
-
Live: the migration era is deleted (SQLite migration and reset scripts, legacy deploy path, better-sqlite3, DB_PATH) (#72)OpenVibers · 10 Oct 2026
1afaf75c
-
Live: calls are Chat's only; Live's call server, voice-channel and group-call routes are deleted (T3) (#71)OpenVibers · 10 Oct 2026
324f1e58
-
Live: Media outcomes arrive only over OpenVibe.Events; the direct media webhook and its authority switch are deleted (#68)OpenVibers · 10 Oct 2026
d7fb5009
-
Live: the product at openre.stream is OpenRestream (owner, 2026-10-09) (#63)OpenVibers · 9 Oct 2026
a08629db
-
Live: cosmetics live only in OpenVibe.Inventory (ADR-054 §8) — the INVENTORY_AUTHORITY switch and Live's table reads are gone, Chat's decor lookups read 100 people per Inventory call, and the legacy chat tags left with the game (#54)OpenVibers · 9 Oct 2026
85131ef4
-
Live: cosmetics can live in OpenVibe.Inventory (INVENTORY_AUTHORITY=inventory, ADR-054 §8) — the same cosmetics API reads and writes live.* items there with Live's token acting for the person; live stays the default until the import verifies (#53)OpenVibers · 9 Oct 2026
798f86e5
-
Delete the P2P viewer fallback (ALLOW_P2P_FALLBACK, C-77): viewer media is SFU-only. (#37)OpenVibers · 7 Oct 2026
5c6a5cc4
-
Point Go Live WHIP and JSMPEG URLs at OpenRe for switched slotsOpenVibers · 4 Oct 2026
a9cbf04d
-
Deliver chat only through Chat's ingress and drop the bridge outbox (#21)OpenVibers · 4 Oct 2026
c1bd342c
-
Bind a channel to a Bot robot and expose botembed behind LIVEBOTEMBED (#22)OpenVibers · 4 Oct 2026
587d1c9e
-
Route Live's chat producers through Chat's ingress behind a flagOpenVibers · 4 Oct 2026
14ef3781
-
Attempts: 1. author Claude opus done; 2. review deepseek-v4.1-flash doneOpenVibers · 2 Oct 2026
2b1fefbc
-
Add gated PostgreSQL page analytics sliceOpenVibers · 1 Oct 2026
dc6eb160
-
Live reaches Media with its own service token (plan T4, Media cleanup D8): media-client and the lineage media source send a client-credentials token for audience openvibe.media (media.object.read/list/upload/delete on namespace live), one shared cached client, off under LIVE_DRILL, X-OV-User-Id unchanged; MEDIA_API_KEY is gone from code, docs and tests. test/media-service-token.test.js drives the token path, reuse, no-secret and the retired key never being sent. npm test 153/154, 1 skipped.OpenVibers · 29 Sept 2026
06f752af
-
X-Internal-Key is gone from Live (plan T2, step 3 of the sweep): every internal route takes only a Network service token with the capability it performs (live.avatar.write, live.url_registry.refresh, live.analytics.read, live.chat_mirror.write for Chat's staged-table handoff), loopback only. server/net/internal-key.js and config.internalApiKey are deleted; the proxy rule lives in service-guard.js. Network already sends its token on every call to Live (79a4eea). Tests: the retired key opens nothing (alone or beside a bad token), a token through the public edge is refused, and no server file reads or sends the key. SETUP, README, .env.example and the API docs describe the service token. npm test 151/152, 1 skipped.OpenVibers · 29 Sept 2026
66f590b7
-
Internal routes take service tokens (plan T2, X-Internal-Key retirement, step 1 of the sweep): /internal/user-avatar (live.avatar.write), /internal/url-registry/refresh (live.url_registry.refresh), /internal/analytics-summary (live.analytics.read) and Chat's staged-table handoff /internal/chat-tables* (live.chat_mirror.write) each check the one capability they perform, loopback only. A Bearer is judged on the token alone; the key still passes without one while Network and Chat move (guardOrKey), then goes. The openvibe-quest game-item bridge is deleted (the quest game runs nowhere, nothing listens on :3200): questApi, activate/return-to-game, POST /api/cosmetics/internal-unlock, the 'Return to Game' buttons and their styles; /api/cosmetics/activate and /deactivate answer 410 for one release so old tabs keep their answers (ADR-016 N-1), then go. Tests: capability per route, audience, sandbox, a Bearer never downgraded to the key, the public edge refused; n-1 green. npm test 151/152, 1 skipped.OpenVibers · 29 Sept 2026
660833de
-
Per-actor limits on Live's API writes (roadmap WS-R task 4; openvibe-sdk 0.11.0 -> 0.12.0 openvibe-sdk/limits). server/net/actor-limits.js counts writes by the person behind the token: their Network subject, or the person who made an hbt_ token.OpenVibers · 28 Sept 2026
85fc2faf
-
Live calls no model provider itself and keeps no shared provider key (roadmap WS-O task 2, shims C-20 and C-21). Production has run AI_SERVICE=remote since 2026-09-23 and the local provider path has had no calls since; streamers' own keys moved to OpenVibe.AI in 4d758fa.OpenVibers · 28 Sept 2026
04cd59fd
-
GOLIVE_NOTIFY=events (compatibility register C-85): leave go-live notifications to Network's live.stream.started consumer. While Live's events outbox publishes, a go-live then makes neither the direct POST /internal/events/stream-live nor the fallback push, and logs that it left it to the consumer; unset (the default), any other value, or with the outbox off, the direct call stays. Why: while both paths run, the direct call claims Network's per-streamer window first at every real go-live (production 2026-09-24: 'Unified event sent' for streams 2478, 2479 and 2481, the consumer's delivery a second later), so the consumer can never show the notified outcome C-85 waits for. Rollback: unset it. test/golive-notify-mode.test.jsOpenVibers · 26 Sept 2026
e96383be
-
CALLS_AUTHORITY flag (WS-I task 1): with CALLS_AUTHORITY=chat the go-live, stream-end, WHIP teardown and admin force-end hooks create and remove stream voice channels in OpenVibe.Chat (POST/DELETE /internal/calls/stream-channel with the chat bridge's service token, retried on 5xx, superseded retries dropped) instead of Live's call server, and Live pushes Chat's call-user notification (notify/call-invite); the default live changes nothing and Live's /ws/call and voice-channel routes stay for one releaseOpenVibers · 25 Sept 2026
5abf2b13
-
Restore drills: LIVE_DRILL=1 makes Live a read-only instance on a restored copy, so `ovhost drill live` can boot one next to production. It refuses to start unless DB_PATH and DATA_DIR are set and outside the checkout and /opt/openvibe.live, HOST is loopback, PORT is not 3000 and no socket was handed over by systemd, before any file is opened. It then starts only its HTTP server (no jobs, WebSocket servers, RTMP, SFU, JSMPEG, WHIP, TURN credentials, restream or relay resume, AI jobs, Media reconcilers, Events outbox, chat bridge, identity sync, deploy notice, star job or registry refresh), answers 403 to every method but GET/HEAD/OPTIONS and to every WebSocket upgrade, and guards net/fetch/child_process/dgram/listen so nothing leaves the process (other services look down; only git runs). Every file location now comes from server/paths.js (DATA_DIR, default ./data), analytics.db included; module-level timers stay off in a drill. test/drill-mode.test.js boots the real server that way and checks each pointOpenVibers · 23 Sept 2026
8a58aea2
More commits