Privacy and retention
This page describes the hosted MultiChat.chat dashboard. Local-mode differences are noted below.
Account data and sign-in
MultiChat.chat stores your account identifier, connected channel identifiers, account name and avatar URL, signup and last sign-in dates, and saved chat, TTS and overlay settings. Twitch connections also store your numeric Twitch ID and login. OAuth access and refresh credentials are encrypted; session and OBS overlay credentials are stored as hashes. Account names, identifiers and settings are not encrypted individually by MultiChat.chat.
Sign-in and security cookies last up to 30 days and are renewed during continued use. Logout revokes the current session. Expired sessions, and revoked sessions older than seven days, are removed by cleanup that runs hourly and when a session is issued.
Live chat and speech
Chat text and viewer details are processed live to display messages and decide what to speak. The hosted chat pipeline does not save message bodies in the MultiChat.chat database. Current TTS text and overlay settings can remain in server memory for reconnection; that snapshot expires after two minutes without a new overlay event.
Your browser saves account-specific chat history in IndexedDB, with local storage as a fallback. The default limit is 1,000 messages per channel, adjustable up to 5,000; this is a message limit, not a time limit. YouTube messages are excluded. Use Clear message history to remove it. Hosted logout, Twitch disconnect and account deletion also clear the current browser’s account cache; they cannot erase copies in another browser or device.
The dashboard uses the Web Speech API for speech. The hosted MultiChat.chat server does not generate or stream audio; the selected browser or operating-system voice may use its own online service. Images, emotes, thumbnails and Twitch GIFs can load from third-party hosts. Those hosts receive ordinary request data such as your IP address and user agent. Twitch GIFs load directly from the Twitch-provided GIPHY URL; MultiChat.chat does not proxy or store the GIF asset.
Usage analytics and operational logs
By default, MultiChat.chat records daily received-message counts per MultiChat.chat account and platform, including the last receipt time. These counts remain until account deletion. The usage records contain no chat text, viewer usernames, OAuth tokens, overlay tokens or IP addresses. They are linked to your MultiChat.chat account: the private operator view also shows your account name and login, signup and last sign-in dates, and selected saved feature preferences.
To improve setup and reliability, we also record daily account-linked flags for successful sign-in, visible dashboard activity, completed or skipped setup, received chat, started speech playback, overlay connections, and fixed browser/playback/connection error categories. These flags are deduplicated per account, day and category and retained for 90 UTC days, with hourly cleanup. Account deletion removes them. They contain no chat text, viewer names, error messages, stack traces or URLs. Visible dashboard activity is observed on opening, returning to the tab and every five minutes while visible; it does not prove that you are watching the page.
Signed-out landing visits and sign-in attempts/failures produce anonymous daily totals. Landing sources are limited to direct, Twitch, Kick, YouTube, Discord, search or other; campaigns are limited to beta, launch, none or other. We do not store the referring URL, arbitrary campaign values or a visitor identifier, and do not add analytics cookies, session recording or a third-party analytics service. These totals also retain 90 UTC days. This collection is enabled by default; browser blocking or connection failures may omit signals.
Operational metrics count connections, errors, event rates, latency and memory use. Production logs include connection states, error codes, first-event receipt notices and usage-recording failures by default; these notices do not include message bodies. Development mode can print error details, and the local supervisor writes runtime output to .logs/tts-runtime.log. These diagnostics are separate from usage analytics and are not an opt-in analytics feature.
Hosted deployment, runtime and HTTP logs are held by Railway under its Pro plan's 30-day searchable log retention. Local runtime files are separate and have no automatic deletion schedule. Scheduled database backups are not currently enabled; a retention schedule will be published when they are enabled. Network requests necessarily expose an IP address to the server handling them, even though IP addresses are excluded from the usage report.
YouTube and Google data
MultiChat.chat uses YouTube API Services. Connecting requests access to your channel identity, broadcasts and live chat, plus permission for supported chat and poll actions. The granted permissions determine which actions are available. Credentials, connected-channel details and broadcast selections are stored together in an encrypted record; local mode uses an encrypted file in your MultiChat.chat data directory. A channel ID association and, for accounts created with YouTube, the account name and avatar are also stored outside that encrypted record.
YouTube chat is processed in memory and excluded from persistent browser history. Public video metadata uses a bounded server cache with a one-hour lifetime; private authorized video metadata is not placed in that shared cache.
Disconnect YouTube in Connections to delete its encrypted credentials and connected-channel details and request Google revocation. The channel ID association and MultiChat.chat account profile remain for reconnect until account deletion. Credentials not validated for 30 days are rejected and removed when read; hourly hosted cleanup also removes YouTube credential records not updated for 30 days. You can also revoke access in Google permissions; MultiChat.chat checks consent during token refresh.
YouTube features are subject to the YouTube Terms of Service and Google Privacy Policy. Google receives ordinary API and thumbnail request data. MultiChat.chat uses Google data to provide these connected features, not for advertising or sale. Use and transfer follow the Google API Services User Data Policy, including Limited Use requirements.
OBS overlay access
The private overlay URL grants read-only access to your public chat overlay state and current TTS highlight. It cannot change settings or perform Twitch actions. Regenerating the URL revokes the previous credential immediately.
Your controls
From the dashboard you can regenerate the OBS URL, disconnect Twitch while keeping your saved settings and Kick connection, log out of MultiChat.chat, disconnect Kick separately, or delete your saved MultiChat.chat account data. Account deletion removes the user and all related settings, credentials, sessions, and overlay tokens; backup copies age out according to the database operator’s backup retention.
Support and security contact
For help, account data requests or a security report, email contactizidore@gmail.com. Do not include passwords, access tokens, chat history or private OBS URLs.