Open-source community chat

Your community, your node, your keys.

tavrn is a chat for communities: text, voice and video, files, roles and moderation. Conversations are end-to-end encrypted, and anyone can run a node. All nodes together form one network, without a central service.

tavrn is open source and still in development: the code and the release candidates are public, and you are welcome to run your own node and try it. The official node is invite only for now.

An end-to-end encrypted text channel named general with a pinned welcome message carrying an image of the boss arena with four marked spawn points and a thread of two replies, a Lua code block, a reply with a hidden spoiler and emoji reactions; every message and the member list on the right, grouped by the roles Moderator and Raid Lead, show the members' illustrated avatars.

What makes it different

Everything a community needs to talk, built so that nobody in the middle can read along.

How it works

Three ideas, and no central server anywhere.

  1. Your account lives on your home node

    You sign up on one node, your home node. Your address carries its domain, much like an e-mail address: alice@example.org.

  2. A room lives on exactly one node

    Each room lives on one node. Members from other nodes connect to it directly, so the room's data stays in one place instead of being copied everywhere.

  3. Nodes only pass on short notes

    Nodes send each other small signed notifications: an invite, a friend request, "you have a new message". The conversations themselves stay where they belong.

Interactive diagram: three nodes

Three nodes: example.org, Alice's home node; gaming.example, the node of the room night-owls; club.example, Ben's home node.gaming.example# night-owlsMMiraexample.orgAAlice# book-clubclub.exampleBBen# board-games

The room night-owls lives on exactly one node, gaming.example. Alice and Ben connect to it directly, each with a short-lived pass from their own home node.

What the node operator sees

End-to-end encryption means a message is locked on your device and only unlocked on the devices of the people in the conversation. The node in between stores and forwards it, but cannot read it.

To be honest about the limits: a node still sees metadata, such as who is in a room and when someone writes. Room admins can make a single channel readable on purpose, for example a large public one; then every app shows a permanent notice.

What the members seeWhat the node sees

  • Mira

    Raid tonight at nine?

    Encrypted message, unreadable without the keys.

  • Jonas

    I'm in. Bringing snacks for the stream.

    Encrypted message, unreadable without the keys.

  • Lena

    Same here. Voice opens at quarter to nine.

    Encrypted message, unreadable without the keys.

The members' devices hold the keys, so they read the messages as usual.The node only stores sealed messages. Without the keys, they are noise.

A closer look

The web app works on phones, tablets and computers, and the apps for Windows, Linux and Android bring the same client.

Text channels

Formatting, code blocks, replies, reactions, pins and the member list, grouped by roles.

An end-to-end encrypted text channel named general with a pinned welcome message carrying an image of the boss arena with four marked spawn points and a thread of two replies, a Lua code block, a reply with a hidden spoiler and emoji reactions; every message and the member list on the right, grouped by the roles Moderator and Raid Lead, show the members' illustrated avatars.

Voice and video

A stage for the people talking, cameras and screen sharing. Calls are end-to-end encrypted, too.

The voice channel Raid Night with four participants: Theo's shared screen showing a party facing a crystal golem, Mira's camera tile, and the illustrated avatars of Jonas and Lena on their tiles; the header shows the channel status Sunken Citadel prog, pull at 21:15, the session timer and End-to-end encrypted, the call controls are at the bottom.

Polls and date polls

Ask the channel, or find the evening that suits most. Results show after voting, and in encrypted channels the votes are encrypted too.

A poll in the encrypted channel raid-strategy: Which boss do we learn first in Season 4?, with four options, result bars, counts and shares, the names of the voters, Mira's own vote marked as Your vote, Change vote and the remaining time until it closes.

Shared folders

A folder tree per channel for the files a community keeps. End-to-end encrypted by default, down to file and folder names, and a room can keep its files on its own WebDAV or S3 storage. A channel created without encryption says so all the time.

The files channel shared-files with the folders Clips, Guides and Maps and six files such as images, a roster and a route, with their sizes, the uploader and the storage meter.

Roles and permissions

Roles with plain switches for every permission, overrides per channel, an audit log and reports.

The role editor in the room settings with the Moderator role selected: name, colour, show separately and the permission switches.

Bots with buttons and forms

Bots post embeds, buttons, select menus and forms, drawn with the app's own controls. Every bot has its own permissions and is marked as a bot.

A message of the bot Raid Planner in the channel raid-signups: a sign-up card with an embed of tanks, healers and damage, the buttons Sign up, Bench me, Leave a note and the link button Raid guide, and the select menu Choose your role open with Tank, Healer and Damage and their descriptions; under the card the bot's answer You are on the list for Friday, marked Only you can see this.

Run your own node

A tavrn node is one container image. Put it next to PostgreSQL and the reverse proxy you already have, set a few environment variables, and start it.

You need a domain, a server with Docker and, for voice, a range of open UDP ports. The first account becomes the node's admin.

# in a folder with the files from tavrn-node/deploy
cp .env.example .env  # then set your domain
docker compose up -d
The install guide walks through every step, including the reverse proxy and voice.

Ready when you are

Open the web app in your browser, download the desktop app, or read how everything works.

tavrn is before its first stable release, and the encryption has not been independently audited yet. Treat it as pre-release software for now.