About

Conversations that live where you choose

Trycord is a self-hostable community chat platform. Run your own instance, or use one someone else runs. Either way, communities, users, messages, permissions and files stay on the instance you picked, and nowhere else.

Why it exists

Most group chat is a service: somebody else runs the server, holds the data, and decides the rules and the future of the product. That is a reasonable trade until it is not one you want to make. Trycord is the other arrangement. The software is the product; the instance is whoever runs it. A community on Trycord is not a tenant of a platform, it is a group of people on a server that someone they know can afford to keep running and is free to leave.

The project runs one instance itself, and it is not a special one: the same software, the same rules, the same thing anyone else gets from the repository. Nothing in the product points at it, and nothing stops there being a hundred more.

That leads to concrete decisions rather than slogans. The default install uses a single database file and no external services. A feature that would phone home is a setting that is off by default. An instance can be closed to registration entirely, and the server, not the client, is what enforces it.

The vocabulary

Three words are used precisely throughout the product and this site:

  • Community is a group of people with channels, roles and permissions.
  • Instance is one running Trycord server, with its own data and its own rules.
  • Client is the web app or the desktop shell, which are the same code.

How it is put together

The repository is a small number of deliberately separate parts:

PartWhat it is
backend/The REST API, the WebSocket gateway, accounts, permissions, moderation, uploads and database access.
frontend/The web client, also shipped inside the desktop app.
trycord-desktop/The Electron shell around the client, with its own launch and update behaviour.
public/This website and the legal pages.
docs/Self-hosting, theming, the desktop app, and the architecture reference.

One process serves the client, the API, the realtime gateway and this site on a single port. The database is a configuration profile, so moving from SQLite to MySQL is an environment change rather than a different build. Persistence and realtime are separated on purpose: the REST API is the source of truth, and the WebSocket gateway carries events over it.

One design system, from one library

The application and this website are built from the same generated design tokens, so the palette, type scale, spacing and motion are the product's rather than the marketing site's memory of it. Custom themes work by writing those same tokens, which means a theme cannot invent a value the interface does not already use. The brand faces are Manrope and JetBrains Mono.

How it is maintained

Trycord is developed continuously on main. There is no long-term-support branch; security fixes land on the current codebase and are included in later releases. Self-hosters are expected to keep their servers updated, and the changelog and roadmap record what has changed and what is planned.

The project is open source under the MIT licence. The code, the issues and the releases are on GitHub.

Where the project stands

Trycord is actively developed. Some capabilities are finished and load-bearing; others are built but off by default; a few are names for work that has not happened. Voice and video have a room and signalling model behind a single provider and are off unless an operator turns them on. Push notifications to devices exist but are not dependable enough to promise, which is why in-app notifications are the reliable path today. Cross-instance federation is a setting and a shared vocabulary, not a working federation of separate servers.

Everything that is offered is labelled for what it is: the features page separates shipped work from what is still in progress, and the roadmap keeps the same line between built, planned and exploratory. If a page here overstates the product, that is a bug in the writing, and worth reporting.

Getting involved

The most useful things you can do are run an instance, report what breaks, and tell us when this site claims something the product does not do. Support explains where each kind of report belongs, and the community chat is on Discord.