Introduction
Dendrite is the second-generation Matrix homeserver developed by the Matrix.org Foundation, written in Go as a modern replacement for Synapse. It implements the Matrix specification for decentralized, federated messaging and is designed to use significantly less memory and CPU than Synapse while supporting the same client and federation APIs.
What Dendrite Does
- Hosts Matrix chat rooms with real-time messaging, reactions, and threads
- Federates with other Matrix homeservers for cross-server communication
- Supports end-to-end encryption via the Matrix protocol and Olm/Megolm
- Handles user registration, authentication, and profile management
- Serves media uploads including images, files, and thumbnails
Architecture Overview
Dendrite is organized as a set of internal components (room server, sync API, user API, federation API, media API) running within a single binary. It uses a PostgreSQL or SQLite database as its backing store. Unlike Synapse's monolithic Python architecture, Dendrite's Go implementation handles concurrency natively through goroutines, resulting in lower memory usage and better multi-core utilization. Federation is handled through HTTP-based Matrix server-to-server APIs.
Self-Hosting & Configuration
- Run as a single static binary with embedded SQLite or connect to an external PostgreSQL instance
- Generate a default configuration file and signing keys with the built-in setup command
- Configure federation by setting up DNS SRV records or well-known delegation
- Place behind a reverse proxy like Caddy or Nginx for TLS termination
- Enable open registration or restrict account creation through the config file
Key Features
- Dramatically lower memory usage compared to Synapse (often under 100 MB idle)
- Single static binary deployment with no Python dependency chain
- Full Matrix client-server and server-server API support
- SQLite mode for small deployments without a separate database server
- Active development by the Matrix.org Foundation with growing feature parity
Comparison with Similar Tools
- Synapse — the reference Matrix server; feature-complete but heavy on resources; Dendrite is lighter
- Conduit — another lightweight Matrix server in Rust; Dendrite is the official second-gen implementation
- ejabberd — XMPP server, different protocol; Matrix offers richer room semantics
- Mattermost — centralized team chat; Dendrite supports true federation
- Rocket.Chat — self-hosted but not federated by default; Matrix/Dendrite federates natively
FAQ
Q: Is Dendrite ready for production use? A: Dendrite is suitable for small to medium deployments. Some advanced features may still lag behind Synapse.
Q: Can I migrate from Synapse to Dendrite? A: Direct migration tools are limited. For small servers, re-registering users and re-joining rooms may be simpler.
Q: Which Matrix clients work with Dendrite? A: All standard Matrix clients work, including Element, FluffyChat, Cinny, and SchildiChat.
Q: Does Dendrite support spaces and threads? A: Yes. Dendrite supports Matrix spaces, threads, and most modern client features.