Gryt logo

Gryt

Open-source WebRTC voice, video and text chat

GitHub Release GitHub Stars License: AGPL-3.0 Docs

Snap Store AUR package Docker

The Gryt desktop client: a voice call with six people, a chat channel, and the member list
Try Gryt instantly at app.gryt.chat — no download or setup required.

> [!NOTE] > **In development since May 2022.** Gryt ships often, from a stable channel and a beta channel. Read the [changelog](https://gryt.chat/changelog) before you update a server. ## Why Most voice platforms are owned by companies that monetise the conversation and decide who gets to leave. Gryt is built the other way round — you run the server, the data sits on your disk, and nobody needs an account with us to talk to you.
**No account required** A server chooses which identities it admits. Guests hold a keypair on their own device. An account carries your identity *between* servers — it is not the price of entry. **Real-time voice and video** Go and Pion WebRTC relay voice, camera and screen share without transcoding. Noise suppression, echo cancellation and voice activity detection run on the client.
**Yours to run** Docker Compose, Helm, or a Cloudflare Tunnel. One compose file can host as many servers as you like — they share an SFU. **Desktop and web** Electron app for Linux, macOS and Windows with auto-updates, plus a browser client. The desktop app can host a server on its own.
**Files and messages** Persistent chat backed by SQLite, uploads to any S3-compatible store, and thumbnails generated out of process so a bad image cannot take the server down. **Open about how it is built** Gryt is developed partly with AI assistance. The [policy](https://docs.gryt.chat/docs/about/ai) says which parts of the codebase never merge without a human reading the whole diff.
## Features - Voice chat over WebRTC with the Opus codec - Video chat from your camera - Camera video and screen sharing, both with audio - Text chat with Markdown, mentions, and file sharing - Self-hostable with Docker Compose - LAN server discovery via mDNS - Global push-to-talk with configurable keybinds - RNNoise-based noise suppression - Auto-updates ## Download | Platform | Link | |----------|------| | Web | [app.gryt.chat](https://app.gryt.chat) | | Linux (AppImage / deb) | [GitHub Releases](https://github.com/Gryt-chat/gryt/releases/latest) | | Linux (Snap) | [Snap Store](https://snapcraft.io/gryt-chat) | | Linux (Arch) | [AUR: gryt-chat-bin](https://aur.archlinux.org/packages/gryt-chat-bin) | | Windows | [GitHub Releases](https://github.com/Gryt-chat/gryt/releases/latest) | | macOS | [GitHub Releases](https://github.com/Gryt-chat/gryt/releases/latest) | ## Self-hosting See the **[Quick Start guide](https://docs.gryt.chat/docs/host/quick-start)** to self-host Gryt with Docker Compose — two files, one command, no cloning required. Or manage servers from a terminal with the **[Gryt CLI](https://docs.gryt.chat/docs/host/cli)**, which writes the compose file for you: ```bash curl -fsSL https://get.gryt.chat | sh ``` ## Development ```bash git clone --recurse-submodules https://github.com/Gryt-chat/gryt.git cd gryt ./ops/start_dev.sh ``` Open **http://localhost:3666** and you're in. ## Documentation Full docs at **[docs.gryt.chat](https://docs.gryt.chat)** — architecture, configuration, deployment, and more. ## Contributing See the [contributing guide](https://docs.gryt.chat/docs/about/contributing) for how to get involved. Nothing security-relevant merges without being read line by line — the SFU, authentication, identity, the image worker and the data layer only change through a reviewed pull request. See the [AI policy](https://docs.gryt.chat/docs/about/ai) for the exact paths, how to verify it, and the disclosure rules for contributions. ## Sponsors Nobody sponsoring monthly yet. What sponsoring pays for, the tiers, and everyone who has sponsored: [gryt.chat/sponsors](https://gryt.chat/sponsors). To sponsor: [GitHub Sponsors](https://github.com/sponsors/Gryt-chat). ## Acknowledgments Gryt wouldn't exist without these projects and resources. I'm forever grateful to the people behind them for sharing their work with the world. **Libraries that power Gryt:** - [Pion WebRTC](https://github.com/pion/webrtc) — Pure Go WebRTC stack that the entire SFU is built on. Sean DuBois and the Pion community taught me more about WebRTC than anything else - [RNNoise](https://jmvalin.ca/demo/rnnoise/) via [@shiguredo/rnnoise-wasm](https://github.com/niccokunzmann/rnnoise-wasm) — Jean-Marc Valin's neural network noise suppression, compiled to WASM for the browser - [Base UI](https://base-ui.com/) — Accessible, unstyled component primitives, which [`@gryt/ui`](https://github.com/Gryt-chat/ui) is built on and the client renders through - [Socket.IO](https://socket.io/) — Real-time signaling between client and server - [Electron](https://www.electronjs.org/) — Desktop app shell with native OS integration **Specs and references:** - [MDN WebRTC API docs](https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API) — The single best reference for understanding WebRTC in the browser - [AV1 RTP spec (Dependency Descriptor)](https://aomediacodec.github.io/av1-rtp-spec/#dependency-descriptor-rtp-header-extension) — The spec that made SVC layer-aware forwarding possible - [WebRTC Simulcast Playground](https://orphis.github.io/webrtc-sandbox/simulcast-playground.html) by Orphis — Invaluable for understanding simulcast, SVC scalability modes, and encoder behavior - [mediasoup documentation](https://mediasoup.org/documentation/) — Excellent SFU architecture reference that shaped how I think about track forwarding - [Microsoft Application Loopback Audio Capture sample](https://learn.microsoft.com/en-us/samples/microsoft/windows-classic-samples/applicationloopbackaudio-sample/) — The WASAPI example that showed how to capture per-process audio on Windows while excluding Gryt's own audio **Projects that inspired the journey:** - [Mumble](https://www.mumble.info/), [Jitsi](https://meet.jit.si/), [Revolt](https://revolt.chat/), [LiveKit](https://livekit.io/), [coturn](https://github.com/coturn/coturn), and many others — see [The Projects That Paved the Way](https://gryt.chat/blog/the-projects-that-paved-the-way) for the full story ## License This project is licensed under the [GNU Affero General Public License v3.0 (AGPL-3.0)](LICENSE). For commercial licensing inquiries, contact [sivert@gryt.chat](mailto:sivert@gryt.chat).