Skip to content

What is Refract.Chat? ​

Refract.Chat is a work in progress, and its database and API are not yet stable. Take care when upgrading, and expect data loss.

Refract.Chat is a voice-first chat platform you host yourself: servers and channels, direct messages and group chats, with voice, video and screen-sharing built in. It's open source under the GNU Affero General Public License v3.0.

Features ​

  • Servers: community spaces with text and voice channels, organised into categories.
  • Private channels: direct messages and group chats between two or more people, with text and voice.
  • Voice, video and screen-sharing: calls in any voice channel or conversation, built on LiveKit.
  • Encrypted calls: call audio, video and screen-shares are encrypted by default, so the media server never sees them. Messages and uploaded files are not end-to-end encrypted.
  • Roles and permissions: granular, deny-first permissions for every server and channel.
  • Sign-in options: email and password, plus any OAuth or OpenID Connect provider.
  • Bots, activities and federation: server bots through the API, shared web activities in calls, and friends, conversations and servers across instances.

What an instance is made of ​

One instance is a handful of containers, all in the supplied Docker Compose file:

PartWhat it does
Server (backend)The Refract.Chat image: the API, real-time events over Socket.IO, background workers, and the web app itself
MariaDBEverything that lasts: accounts, servers, channels, messages
RedisLive state: presence, read positions, voice grants, rate limits and the job queues
Meilisearch (search)The message search index. It's rebuilt from the database, so it never needs a backup
LiveKitThe media server for calls, with its own Redis. People's apps connect to it directly
Media storageUploaded files and pictures, on the server's disk or in S3-compatible object storage

People use the web app the instance serves, the desktop app for Windows and Linux, or the mobile app. Each app signs in to any instance by its address.

Where to go next ​

Released under the GNU Affero General Public License v3.0.