No description
  • Rust 94.2%
  • Shell 2.3%
  • HCL 2.1%
  • Nix 1%
  • TypeScript 0.3%
Find a file
Salix 1186d4f8a4
Some checks failed
Build / Build binary and container (push) Failing after 5m8s
ci: match runner label unraid-docker
runs-on matches runner labels, not the runner name.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 13:56:28 +02:00
.cargo Rename project from Lattice to Vitis 2026-07-07 12:23:44 +02:00
.forgejo ci: match runner label unraid-docker 2026-07-07 13:56:28 +02:00
.github/workflows Rename project from Lattice to Vitis 2026-07-07 12:23:44 +02:00
.gitlab docs: build docs using mdBook, build in CI, deploy to gitlab pages 2024-03-19 00:17:41 -04:00
arch Rename project from Lattice to Vitis 2026-07-07 12:23:44 +02:00
debian Rename project from Lattice to Vitis 2026-07-07 12:23:44 +02:00
docker Rename project from Lattice to Vitis 2026-07-07 12:23:44 +02:00
docs Rename project from Lattice to Vitis 2026-07-07 12:23:44 +02:00
nix/pkgs Rename project from Lattice to Vitis 2026-07-07 12:23:44 +02:00
quadlet Rename project from Lattice to Vitis 2026-07-07 12:23:44 +02:00
rpm Rename project from Lattice to Vitis 2026-07-07 12:23:44 +02:00
src Rename project from Lattice to Vitis 2026-07-07 12:23:44 +02:00
tests Rename project from Lattice to Vitis 2026-07-07 12:23:44 +02:00
.dockerignore docker: Add hardware perf profiling and plumb sched prios to testees. 2026-06-24 20:18:21 +00:00
.editorconfig apply new rustfmt.toml changes, fix some clippy lints 2024-12-15 01:00:41 -05:00
.envrc load .env file before initializing flake to use DIRENV_DEVSHELL in .env 2024-06-03 00:10:28 -04:00
.git-blame-ignore-revs Additional entries for .git-blame-ignore-revs 2026-02-13 22:14:08 +00:00
.gitattributes Adds .gitattributes to the projects to prevent LN and CLRF conflicts. (#681) 2025-02-04 16:46:00 -05:00
.gitignore ci: Run interop tests against a foreign homeserver image. 2026-06-20 10:47:08 +00:00
.markdownlintignore add markdownlint and run lychee in documentation CI workflow 2024-07-03 11:30:16 -04:00
.typos.toml allow configuring multiple well-known support contacts, cleanup & improve related code, add validation 2026-05-23 11:50:27 +00:00
book.toml Rename project from Lattice to Vitis 2026-07-07 12:23:44 +02:00
Cargo.lock Rename project from Lattice to Vitis 2026-07-07 12:23:44 +02:00
Cargo.toml Rename project from Lattice to Vitis 2026-07-07 12:23:44 +02:00
clippy.toml Rename project from Lattice to Vitis 2026-07-07 12:23:44 +02:00
CODE_OF_CONDUCT.md Rename project from Lattice to Vitis 2026-07-07 12:23:44 +02:00
CONTRIBUTING.md Rename project from Lattice to Vitis 2026-07-07 12:23:44 +02:00
default.nix Format all nix files with new nixfmt 2026-01-30 16:56:39 -05:00
development.md docs: add some more conduwuit development info 2024-09-06 20:33:02 -04:00
flake.lock Rename project from Lattice to Vitis 2026-07-07 12:23:44 +02:00
flake.nix Rename project from Lattice to Vitis 2026-07-07 12:23:44 +02:00
LICENSE remove nightly only feature, small housekeeping stuff 2023-11-29 21:59:18 -05:00
README.md Rename project from Lattice to Vitis 2026-07-07 12:23:44 +02:00
RELEASE.md Rename project from Lattice to Vitis 2026-07-07 12:23:44 +02:00
renovate.json renovate: exclude rust deps we forked / cant easily bump or upgrade 2024-08-30 12:57:50 -04:00
rust-toolchain.toml Bump Rust 1.95.0. 2026-06-30 07:25:17 +00:00
rustfmt.toml Add explicit edition in rustfmt.toml for wider editor/ide compat. 2026-02-25 15:13:03 +00:00
vitis-example.toml Rename project from Lattice to Vitis 2026-07-07 12:23:44 +02:00

Vitis💕

GitHub License GitHub Created At GitHub Commit Activity Docker Pulls GitHub Repo Stars CI/CD

High Performance Matrix Homeserver in Rust!

Documentation Demo Server Support Chat

Vitis is a featureful Matrix homeserver you can use instead of Synapse with your favorite client, bridge or bot. It is written entirely in Rust to be a scalable, low-cost, enterprise-ready, community-driven alternative, fully implementing the Matrix Specification for all but the most niche uses.

This project is the official successor to conduwuit after it reached stability. Vitis is now used by many companies with a vested interest in its continued development by full-time staff. It is primarily sponsored by the government of Switzerland 🇨🇭 where it is currently deployed for citizens.

Getting Started

1. Configure by copying and editing the vitis-example.toml. The server_name and database_path must be configured. Most users deploy via docker or a distribution package and should follow the appropriate guide instead. This is just a summary for the impatient. See the full documentation.

Tip

Avoid using a sub-domain for your server_name. You can always delegate later with a .well-known file, but you can never change your server_name.

2. Setup TLS certificates. Most users enjoy the Caddy reverse-proxy which automates their certificate renewal. Advanced users can load their own TLS certificates using the configuration and Vitis can be deployed without a reverse proxy. Example /etc/caddy/Caddyfile configuration with Element unzipped to /var/www/element:

vitis.me, vitis.me:8448 {
    reverse_proxy localhost:8008
}
web.vitis.me {
    root * /var/www/element/
    file_server
}

caddy reload --config /etc/caddy/Caddyfile

3. Start the server, connect your client and register your username. The first registration is granted server admin.

Tip

Configure a secret registration_token and set allow_registration = true

🤗 Did you find this and other documentation helpful? We would love to hear feedback about setting up Vitis.

Migrating to Vitis

Can I migrate from
conduwuit? Yes. This will be supported at a minimum for one year, but likely indefinitely.
A fork of conduwuit? Yes. The database migrates in place on first boot.
Conduit? Yes. The RocksDB database migrates in place on first boot.
Synapse? Not yet, but this is planned and an important issue. Subscribe to #2.
Any other Conduit fork? No. The migration must be explicitly listed in this table.

Caution

Always back up your database before migrating. Migrating into Vitis from a source listed above is safe: Vitis recognizes a foreign database and reconciles its schema version on first boot. Switching a database between two other forks of Conduit can still permanently corrupt it, because all derivatives share one linear database version with no awareness of each other.

Migrating from conduwuit

Migrating from conduwuit to Vitis just works. In technical parlance it is a "binary swap." All you have to do is update to the latest Vitis and change the path to the executable from conduwuit to vitis.

Anything else named "conduwuit" is still recognized, this includes environment variables with prefixes such as CONDUWUIT_. In fact, CONDUIT_ is still recognized for our legacy users. You may have noticed that various configs, yamls, services, users, and other items were renamed, but if you were a conduwuit user we recommend against changing anything at all. This will keep things simple. If you are not sure please ask. If you found out that something did in fact need to be changed please open an issue immediately.

Migrating from Conduit or a fork of conduwuit

A RocksDB database from Conduit or a fork of conduwuit migrates in place on first boot. Stop the source server, back up its data directory and media, then start Vitis against it. Vitis recognizes the foreign database, reconciles its schema version, and carries over room history, account data, and media automatically; no flags are required. See the deploying guide for media-layout notes that apply to older Conduit databases.

Upgrading & Downgrading Vitis

We strive to make moving between versions of Vitis safe and easy. Downgrading Vitis is always safe but often prevented by a guard. An error will indicate the downgrade is not possible and a newer version which does not error must be sought.

Branches

The main branch is always reasonably safe to run. We understand the propensity for users to simply clone the main branch to get up and running, and we're obliged to ensure it's always viable. Nevertheless, only tagged releases are true releases.

Container Tracking

Important

We strongly advise tracking the :latest tag when automatically updating.

Tracking :latest gives us the necessary discretion to keep you on the appropriate stable release version. Tracking the :preview tag provides select updates of higher confidence between releases. Tracking the :main branch provides the most frequent updates which have been reviewed and tested with confidence for release, the only remaining risk being the unknown. The publication frequency for these tags are on average monthly, weekly and daily, respectively.

Getting Help & Support

If you are opposed to using github, or if private discussion is required such as for security disclosures, or for any other reason, I would be happy to receive your DM at @jason:vitis.me. This will not be bothering me as it would be my pleasure to help you when possible. As an emergency contact you can send an email to jasonzemos@gmail.com.

Vitis Fanclub

We have an unofficial community-run chat which is publicly accessible at #vitis:matrix.org. The members, content, or moderation decisions of this room are not in any way related or endorsed by this project or its sponsors, and not all project staff will be present there. There will be at least some presence by staff to offer assistance so long as the room remains in minimally good standing.

Vitis💕

Vitis's theme is empathy in communication defined by the works of Edith Stein. Empathy is the basis for how we approach every message and our responsibility to the other in every conversation.