OpenChat

# OpenChat A self-hosted home for your community: text channels, direct messages, voice and video, screen sharing, and watch parties. OpenChat connects your existing OpenID Connect provider, self-hosted LiveKit, and optional [OpenShare](https://github.com/MinionEnjoyer/OpenShare) media service. **0.8.52 — web and desktop release.** Windows, universal macOS, and Linux downloads are available. Updater signatures are separate from operating-system signing; the macOS build has no Developer ID identity or notarization. See the [release validation and limits](docs/audits/release-verification-2026-09-27.md). Got feedback, or need help? Come chat in our community [Discord](https://discord.gg/hs7c2XfdD)! ## What's new in 0.8.52 - Stops authentication failures from reloading the app and repeatedly restarting the update screen. - Waits for the update check before loading account data and sends missing or expired desktop sessions to sign-in. - Preserves refresh-token recovery, browser sign-in redirects, and connection recovery during backend outages. - Adds full-app startup regression coverage; actual Windows installer validation remains a manual check. [0.8.52 release notes](docs/release/desktop-0.8.52.md) · [Audit remediation](docs/audits/remediation-2026-09-27.md) ## Downloads and hosting Download the client for your operating system from [GitHub Releases](https://github.com/MinionEnjoyer/OpenChat/releases/latest). Desktop clients connect to an OpenChat server; they do not bundle the hosting stack. See the [desktop guide](apps/desktop/README.md) for builds and updates. Host the API and web client using public AMD64/ARM64 images from [Docker Hub API](https://hub.docker.com/r/minionenjoyer/openchat-api), [Docker Hub web](https://hub.docker.com/r/minionenjoyer/openchat-web), or GHCR. From a checkout of this repository: ```bash cp .env.example .env # Configure your domains, OIDC credentials, LiveKit, and other secrets first. ./scripts/setup.sh docker compose -f docker-compose.public.yml pull docker compose -f docker-compose.public.yml up -d ``` The Compose file defaults to GHCR. Set `OPENCHAT_VERSION=0.8.52` in `.env` to pin the release. Docker Hub overrides are `OPENCHAT_API_IMAGE=minionenjoyer/openchat-api` and `OPENCHAT_WEB_IMAGE=minionenjoyer/openchat-web`. PostgreSQL, Redis, and LiveKit use upstream images. Follow the [setup guide](docs/SETUP.md) for HTTPS, OIDC, media routing, and source builds; copying the environment template alone is not a production setup. ## What you can do - Build communities with servers, text and voice channels, roles, permissions, and invitations. - Message friends or channels with replies, edits, reactions, emoji, GIFs, stickers, polls, and pins. - Search conversations, receive mention alerts, and return to a saved channel reading position. - Share files, images, voice clips, and soundboard audio through OpenShare. - Join voice/video calls, share multiple windows, and use voice activity or push-to-talk. - Watch YouTube or Jellyfin together with host controls and a viewer list. - Switch OpenChat domains from Settings, with responsive desktop and mobile-web layouts. - Optionally connect Patreon membership invitations, OpenShare contacts, or a private mirror cluster. ## Screenshots These captures use the development showcase harness and the production React components. They illustrate the interface with fixture participants; they are not evidence of live multi-user audio or cross-host synchronization. | Public server activity | Private call | |---|---| | ![OpenChat public server receiving realtime messages](docs/screenshots/public-server-realtime.png) | ![OpenChat private call](docs/screenshots/private-call-realtime.png) | | Watch party | Multiple shared windows | |---|---| | ![OpenChat watch party with four fixture viewers](docs/screenshots/watch-party-realtime.png) | ![OpenChat sharing two selected windows](docs/screenshots/multi-window-screen-share.png) | ## Compatibility and limits OpenShare is optional; configure it to enable companion uploads and media features. Voice and screen sharing require reachable LiveKit signaling and media routes. YouTube and Jellyfin playback depend on provider policies and host configuration. Mirror clusters are explicitly configured, key-authenticated groups of trusted hosts, not a global network. CI and single-host smoke checks do not certify multi-client audio, connected-client permission eviction, or real multi-host recovery. Windows/Linux packaged-client runtime checks remain open; see the [validation record](docs/audits/release-verification-2026-09-27.md). The API sends an installation heartbeat at startup and every 24 hours to the project collector: a persistent random install ID, product, version, and deployment type. The payload contains no messages or user profiles; the collector also receives normal network metadata. There is currently no opt-out setting. Native phone clients are separately versioned and were not changed in this release. Mobile-web support does not imply native-mobile test coverage. ## Documentation - [Documentation index](docs/README.md) — current guides and historical evidence. - [Setup](docs/SETUP.md) and [deployment](docs/DEPLOY.md) — prerequisites, configuration, backups, and upgrades. - [Architecture](docs/ARCHITECTURE.md) — React/Tauri clients, NestJS API, PostgreSQL, Redis, and LiveKit. - [Browser testing](docs/guides/WEB_BROWSER_TESTING.md) and [inter-app testing](docs/guides/INTER_APP_TESTING.md). - [Patreon invitations](docs/guides/PATREON_INVITES.md), [OpenShare contact links](docs/guides/OPENSHARE_CONTACT_LINKS.md), and [trusted mirror clusters](docs/guides/TRUSTED_MIRROR_CLUSTER.md). Keep credentials in the local, gitignored `.env` and generated `livekit.yaml`, never in commits or issue reports. Run `./scripts/check-secrets.sh` before publishing changes. [Support the project](https://buymeacoffee.com/minionenjoyer) · [MIT license](LICENSE)