Start here. This page contains the
project introduction, and provides information about it, such as its status,
how to contact the developers, and what the source code license
Telodendria is an open source Matrix
homeserver written entirely from scratch in ANSI C and designed to be
lightweight and simple, yet functional.
Telodendria differentiates itself from the
other Matrix homeserver implementations because it:
- Is written in C, a stable, low-level programming language with a long history, low build and runtime overhead, and wide compatibility.
- Is written with minimalism as a primary design goal. Whenever possible and
practical, no third-party libraries are pulled into the source code.
Telodendrianeeds is custom written. As a result,
Telodendriadepends only on a standard C compiler and a POSIX C library to be built, both of which should come with any good Unix-style operating system already, which means you shouldn't have to install anything extra.
- Uses a flat-file directory structure to store data instead of a database.
This has a number of advantages:
- It makes setup and maintenance much easier.
- It allows
Telodendriato run on systems with fewer resources.
- Is packaged as a single small, statically-linked and highly-optimized binary that can be run just about anywhere. It is designed to be extremely easy to set up and consume as few resources as possible.
- Is permissively licensed.
Telodendriais licensed under a modified MIT license, which imposes very few restrictions on what you can do with it.
Telodendria is on Matrix! Check out the
official Matrix rooms:
|#telodendria:bancino.net||The public "space" room.|
|#telodendria-releases:bancino.net||Get notified of new releases.|
|#telodendria-general:bancino.net||General discussion and support.|
|#telodendria-newsletter:bancino.net||Periodic status updates.|
|#telodendria-issues:bancino.net||Report bugs and issues.|
|#telodendria-patches:bancino.net||Submit code patches to the project.|
|#telodendria-ports:bancino.net||Discussion about porting and packaging.|
Telodendria is designed to be fairly
straightforward, but that doesn't mean there won't be hiccups along the way.
If you're struggling to get
Telodendria up and
running, you're more than welcome to reach out for support. Just hop into
the appropriate Matrix rooms and talk to me!
I want a lightweight Matrix homeserver designed specifically for OpenBSD, and other Unix-like operating systems. I want a homeserver that can be developed and compiled with built-in tools. I want it to function entirely on a base OS install without having to install any packages whatsoever. I've found that as far as these goals are concerned, the existing homeserver implementations fall short. This project aims to prove that Matrix homeservers can be lightweight and written in such a way that very few, if any, third-party libraries need to be pulled in.
I also want to learn how Matrix works, and I want to understand the code I'm running on my server, which is why I'm writing every component from scratch, even the HTTP server and router.
The advantage of using a flat-file database instead of a real database is that your data remains in a format that is incredibly easy to digest. Backups are incredibly easy as well—just tar(1) up the data directory and you're good to go.
The goals of this project are generally divided into user goals and developer goals, depending on who they impact the most. This isn't an exaustive list of the project's goals, but it is a list of things that I want to prioritize, because other server implementations lack them.
The user goals are as follows:
- To implement the latest Matrix specification as fully and completely as
possible. All features defined by the specification should eventually be
- To be as privacy-friendly as possible.
Telodendriashould not store any information it does not absolutely need to function as a Matrix homeserver. While
Telodendriastrives to be feature-complete, it should not implement anything not explicitly defined in the Matrix specification.
- To be a production-ready Matrix server capable of working in constrained
environments, such as embedded devices, cheap VPSs, or a peer-to-peer
Telodendriashould also work on traditional setups as well, and be able to handle a decent amount of users. It should work well for personal Matrix homeservers that also host a few friends and/or family members.
- To be easier to get up and running, and yet also be more configurable than other Matrix homeserver implementations. The configuration file should be flexible, well-documented, and easy to understand and modify. An intuitive command-line tool for administrative tasks should also be available.
The developer goals are as follows:
- To have as few build and runtime dependencies as possible. It should be
possible to compile and run
Telodendriaon any POSIX operating system right out of the box.
Telodendriashould be fully statically-linked, so it can run under a chroot(3). Furthermore, it should be possible to read all the documentation offline, and without any overly complicated tools. You'll notice that this documentation is a collection of man(1) pages, not HTML or Markdown, to remove the dependency on a browser or Markdown parser. Any Unix-like system has a manual page viewer, which makes the documentation more accessible, even on remote systems that have no graphical interface to read the documentation. This ensures that you can read the documentation for the installed version of
Telodendriawithout having to go online.
- To have a simple yet elegant workflow, and not depend on any large or complex development tools such as code forges. The entire development workflow should be able to be successfully and efficiently completed on a base OpenBSD install. Of course, you don't have to use OpenBSD for development, but the point is that the workflow should require fairly standardized and simple tools.
- To write clean, elegant, well-tested, and well-documented code. The goal is to build a Matrix homeserver from the ground up, not just because I don't like the way existing homeservers are implemented, but also because I want to learn how Matrix works, make it more accessible, and potentially teach others a little bit along the way.
- To foster a welcoming community. Many big communities such as Linux and
OpenBSD have hostile leaders.
Telodendriashouldn't have a hostile leader. I want to be as understanding as I can, and talk through issues politely and in a civil manner. If I'm failing in this way, don't be afraid to call me out!
telodendria(8), telodendria.conf(5), td(8)
The installed version of
conforms to the latest Matrix specification available at the time of its
Telodendria was started in early July of
2022. For a change log of this project, see
Telodendria was started by and is almost
exclusively developed by Jordan Bancino <@jordan:bancino.net>.
Contributions to the code, website, documentation, or other components of
this project have been made by various open source developers.
All of the code and documentation for
Telodendria is licensed under a modified MIT
license. Please consult the LICENSE.txt file for the
actual license text. The
Telodendria license text
differs from the MIT license in the following ways:
- Where the MIT license states that the copyright notice and permission
notice shall be included in all copies or
substantial portions of the software, the
Telodendrialicense requires the copyright notice and permission notice be included with all portions, regardless of the size, of the software by omitting the word substantial.
Telodendria logo in all forms,
including the ASCII representation, belongs solely to the
Telodendria project. It must only be used to
represent the official
Telodendria project, and may
only appear in official
Telodendria media. If
Telodendria is forked, the logo must be removed
completely from the project, and optionally replaced with a different one.
The logo may not be modified in any way or for any purpose.