Conduit
Simple, fast and reliable Matrix homeserver in Rust
Conduit is a lightweight Matrix homeserver written in Rust that aims to be easy to set up and run on small servers. It uses an embedded database and requires minimal configuration.
Key features
- Embedded database, no external DB
- Very low resource usage
- Single binary deployment
- Matrix federation support
Pros & cons
Strengths
- Extremely easy to deploy
- Runs on a Raspberry Pi
Trade-offs
- Not all Matrix features implemented
- Smaller ecosystem
Conduit replaces
Last reviewed Sep 13, 2026 · 846 words
Conduit proved that a Matrix homeserver does not need PostgreSQL, a fleet of Python workers and 2 GB of RAM. It is a single Rust binary with an embedded RocksDB store, it federates, and on a Raspberry Pi 4 it idles around 60 MB and stays usable. The complication in 2026 is lineage: Conduit upstream at gitlab.com/famedly/conduit moves slowly, the conduwuit fork that carried most of the feature work has been archived, and Tuwunel is the actively maintained continuation of that line. This guide covers Conduit's design because all three share it, and says at the end which binary to actually download.
Setup is a config file and a port
The whole server is one binary and one TOML file:
[global]
server_name = "example.com"
database_path = "/var/lib/matrix-conduit/"
database_backend = "rocksdb"
port = 6167
max_request_size = 20_000_000
allow_registration = false
allow_federation = true
Run it, put a reverse proxy in front terminating TLS on 443, and serve the two well-known files so other servers and clients can find you:
/.well-known/matrix/server -> {"m.server": "matrix.example.com:443"}
/.well-known/matrix/client -> {"m.homeserver": {"base_url": "https://matrix.example.com"}}
That is the entire deployment. The Docker image is equally small, with configuration passed as environment variables prefixed CONDUIT_. Registration is off by default; create the first user with a registration token, or briefly flip allow_registration on and then off again before the spam bots find you, which on a public domain takes hours rather than days.
What "not all features implemented" means in practice
Conduit implements the client-server and federation APIs well enough for daily use with Element and the mobile clients: rooms, direct messages, end-to-end encryption, media, threads, spaces, presence, typing notifications. The gaps show at the edges. Appservices (bridges to IRC, Telegram, WhatsApp) work but had rough support for longer than on Synapse. There is no admin API to speak of; administration happens through commands sent to a bot user in an admin room. Server-side search of unencrypted history is limited. Sliding sync, the protocol behind the newer Element X clients, is an area where the forks moved faster than upstream.
Joining very large public rooms (the 10,000-member Matrix HQ style) is the classic stress test. Conduit handles it, but the initial join can take minutes and the RocksDB store grows by hundreds of MB per big room. That is inherent to Matrix rather than a Conduit defect; Synapse is worse.
Where the RAM and disk go
The 128 MB minimum is honest for a small private server. Budget more for two things. RocksDB's block cache is tunable and worth raising to a few hundred MB on a box with spare memory, because it turns sync requests from disk reads into cache hits. Media is stored on the filesystem under database_path, and upstream Conduit has no built-in retention policy, so the media directory only grows. On a five-person server with a photo habit I have watched it pass 20 GB in a year. Put it on a disk you can enlarge.
Backups are a directory copy while the server is stopped, or a RocksDB checkpoint while it runs. Restore is copying the directory back. Coming from Synapse, where a backup means coordinating a Postgres dump with the media store, this feels like cheating.
The lineage question, answered
Upstream Conduit is stable and adequate for a personal server, and its releases are the most conservative of the three. conduwuit added performance work, an admin command set, media retention and faster feature tracking, then stopped. Tuwunel picked up that codebase with a maintainer commitment and is where new work lands. The configuration format is close enough that moving between them is mostly a rename of the binary and a re-read of the config docs, but the database formats have diverged, so treat a switch as a migration with a backup, not an in-place upgrade.
If you want the most boring possible small homeserver and do not care about the newest client features, upstream Conduit is fine. If you want Element X to work well and a server that gets fixes this quarter, run Tuwunel. If you run bridges for a community of hundreds, run Synapse; it is heavier by an order of magnitude but it is the reference implementation and every bridge is tested against it first. The Matrix and XMPP category has the full set.
What I'd do
For a household or friend-group homeserver: Tuwunel in Docker, RocksDB on an SSD, a 2 GB VPS or a Pi 4 with 4 GB, Caddy terminating TLS and serving the well-known files, registration off with an invite token, and a nightly stopped-state copy of the data directory to another disk. Same config shape as Conduit, same 60 MB idle, a maintainer who answers issues. I would only pick upstream Conduit today for a machine that must not change for years, and even then I would check the commit log first.
Compare Conduit
26 head-to-head comparisons.
- Conduit vs Tinode
- Conduit vs Element Web
- Conduit vs ejabberd
- Conduit vs Dendrite
- Conduit vs Synapse
- Conduit vs Cinny
- Conduit vs Converse.js
- Conduit vs Openfire
- Conduit vs Nheko
- Conduit vs Dino
- Conduit vs Movim
- Conduit vs MongooseIM
- Conduit vs gomuks
- Conduit vs Profanity
- Conduit vs Convos
- Conduit vs Syphon
- Conduit vs Dendrite Lite
- Conduit vs Fractal
- Conduit vs JSXC
- Conduit vs Continuwuity
- Conduit vs Gajim
- Conduit vs SchildiChat
- Conduit vs Construct
- Conduit vs Commet
- Conduit vs Prose
- Conduit vs conduwuit
Similar matrix & xmpp apps
Tinode
Matrix & XMPPOpen-source instant messaging server
Replaces WhatsApp, Slack
Element Web
Matrix & XMPPGlossy Matrix client for the web and desktop
Replaces Slack, Discord
ejabberd
Matrix & XMPPRobust, scalable XMPP messaging server
Replaces Slack, WhatsApp
Dendrite
Matrix & XMPPSecond-generation Matrix homeserver written in Go
Replaces Slack, Discord
Synapse
Matrix & XMPPReference homeserver for the Matrix network
Replaces Slack, Discord
Cinny
Matrix & XMPPSimple, elegant and secure Matrix client
Replaces Slack, Discord