{"id":"pg_01M4PM025QDPBPCCSM915E1W8J","space":"openvibe","slug":"openvibe-chat","url":"https://openvibe.wiki/w/openvibe/openvibe-chat","state":"published","visibility":"public","revision":2,"title":"OpenVibe.Chat","summary":"The communication authority extracted from OpenVibe.Live: rooms, messages, DMs, calls, TTS and audio queues, moderation and presence.","body_markdown":"**OpenVibe.Chat** is \"The communication authority extracted from OpenVibe.Live\": rooms, messages, DMs, calls, TTS and audio queues, moderation and presence, at `openvibe.chat` on port 4400. Since the cutover on 2026-09-23, Chat is the authority for openvibe.live's chat in every mode, and Live runs no chat of its own; Live's `CHAT_AUTHORITY` switch was retired on 2026-10-11.\n\n## What it does\n\nChat moved Live's WebSocket chat server, DMs, chat history, TTS, soundboards, moderation and word filter behind a service boundary. The TTS and sound queue persists requests in `audio_requests`, played one at a time per room and surviving a Chat restart. Chat owns its own PostgreSQL tables for messages, DMs, channel sounds, relay users and moderation actions, plus the six chat tables (moderators, moderation settings, emotes, tags, AI summaries, timeline). openvibe.chat adds public and private rooms with roles, servers that group rooms as text and voice channels, the DM inbox, settings and calls. Member badges come from [[OpenVibe.VIP]], chat-AI summaries run through [[OpenVibe.AI]], and emote image bytes live in [[OpenVibe.Media]].\n\nLive's voice and video calls moved to Chat at the calls cutover of 2026-10-10: the `/ws/call` server keeps a permanent public lobby, one temporary channel per person (private for a 1:1 call) and stream-linked channels, with up to 8 participants. On openvibe.chat a 1:1 conversation has **Call**, which rings the other person; they answer or decline.\n\n## What it does not do yet\n\nChat produces no mention notifications; the @mention highlight, tab flash and sound are drawn by Live's chat client. Bans, IP approvals and the media-request queue are still Live's, reached through `live-context`.\n\n## How it fits the network\n\nChat depends on [[OpenVibe.Network]] for identity and the `chat.preferences` user module, [[OpenVibe.Live]] for accounts, streams, channels and bans through `live-context`, [[OpenVibe.Events]], [[OpenVibe.Media]], [[OpenVibe.VIP]] and OpenVibe.Contracts. It is also served on openvibe.live's origin through an nginx include.\n\n## Status\n\nNode 22 with Express and ws, PostgreSQL through `openvibe-sdk/db`, and Valkey for per-actor limits. It is deployed as `openvibe-chat.service` on `127.0.0.1:4400`. Its stage is alpha. License: AGPL-3.0.","published_at":"2026-10-11T23:15:33.699Z","revision_published_at":"2026-10-20T21:56:30.536Z","revision_created_at":"2026-10-20T21:56:30.520Z","authorship":{"mode":"imported","workflow":null,"reviewed":false},"infobox":[{"key":"repository","label":"Repository","type":"url","value":"https://github.com/OpenVibers/OpenVibe.Chat"},{"key":"domain","label":"Domain","type":"text","value":"openvibe.chat"},{"key":"port","label":"Port","type":"number","value":4400},{"key":"runtime","label":"Runtime","type":"text","value":"Node 22 / Express and ws, PostgreSQL, Valkey"},{"key":"status","label":"Status","type":"text","value":"alpha"},{"key":"license","label":"License","type":"text","value":"AGPL-3.0"}],"citations":[{"url":"https://github.com/OpenVibers/OpenVibe.Chat/blob/799acd0861206b00258712d0da7080251c23ac72/README.md","title":"OpenVibe.Chat README (commit 799acd0)","source_item_id":null,"retrieved_at":"2026-10-20T22:00:00.000Z","quote":"Live runs no chat of its own (its `CHAT_AUTHORITY` switch was retired on 2026-10-11)","license_note":null},{"url":"https://github.com/OpenVibers/OpenVibe.Chat/blob/799acd0861206b00258712d0da7080251c23ac72/README.md","title":"OpenVibe.Chat README (commit 799acd0)","source_item_id":null,"retrieved_at":"2026-10-20T22:00:00.000Z","quote":"which production has run since the calls cutover of 2026-10-10","license_note":null},{"url":"https://github.com/OpenVibers/OpenVibe.Chat/blob/799acd0861206b00258712d0da7080251c23ac72/README.md","title":"OpenVibe.Chat README (commit 799acd0)","source_item_id":null,"retrieved_at":"2026-10-20T22:00:00.000Z","quote":"servers (groups of rooms as text and voice channels, with server roles and invites)","license_note":null},{"url":"https://github.com/OpenVibers/OpenVibe.Chat/blob/799acd0861206b00258712d0da7080251c23ac72/README.md","title":"OpenVibe.Chat README (commit 799acd0)","source_item_id":null,"retrieved_at":"2026-10-20T22:00:00.000Z","quote":"Mentions: Chat produces no mention notifications","license_note":null},{"url":"https://github.com/OpenVibers/OpenVibe.Chat/blob/799acd0861206b00258712d0da7080251c23ac72/README.md","title":"OpenVibe.Chat README (commit 799acd0)","source_item_id":null,"retrieved_at":"2026-10-20T22:00:00.000Z","quote":"Stays in Live: `media_requests`, `media_request_settings`.","license_note":null},{"url":"https://github.com/OpenVibers/OpenVibe.Chat/blob/799acd0861206b00258712d0da7080251c23ac72/STATUS.json","title":"OpenVibe.Chat STATUS.json (commit 799acd0)","source_item_id":null,"retrieved_at":"2026-10-20T22:00:00.000Z","quote":"\"stage\": \"alpha\"","license_note":null}],"attachments":[],"links":[{"space":"openvibe","slug":"openvibe-ai"},{"space":"openvibe","slug":"openvibe-events"},{"space":"openvibe","slug":"openvibe-live"},{"space":"openvibe","slug":"openvibe-media"},{"space":"openvibe","slug":"openvibe-network"},{"space":"openvibe","slug":"openvibe-vip"}],"indexability":{"indexable":false,"reasons":["ai_generated_unreviewed"]}}