An IRCd implementation backed by Matrix.
Clone or download

Matrix IRCd

Build Status

An IRCd implementation backed by Matrix. Inspired by PTO!

Join the discussion on the Matrix channel:


This is a work in progress. Matrix IRCd should be stable enough to hack on and test, but has not been tested in production or for any length of time.

See the GitHub issues page for a more detailed breakdown of what is left to do.


Matrix IRCd currently requires using a nightly compiler of rust1. Building and installing uses the standard cargo commands.

To run a plain debug version:

cargo run -- --url ""

To build with trace logging:

cargo build --features trace_logging

1 It is recommended to use a tool such as to manage the rust compiler toolchains. See "Working with nightly Rust" for instructions on how to do so with rustup.


IRC Matrix Daemon 0.1.0

    matrix-ircd [OPTIONS] --url <MATRIX_HS>

    -h, --help       Prints help information
    -V, --version    Prints version information

    -b, --bind <BIND>            Sets the address to bind to. Defaults to
        --url <MATRIX_HS>        The base url of the Matrix HS
        --password <PASSWORD>    The password of the PKCS#12 file
        --pkcs12 <PKCS12>        Sets the PKCS#12 file to read TLS cert and pkeyfrom

The MATRIX_HS URL should be of the form: Plain HTTP is also supported but should only be used for testing and development.

Supplying both pkcs12 and password arguments will cause Matrix IRCd to listen on TLS, otherwise it will use plain TCP.

The credentials for the matrix account are taken from the user name and server password specified by the IRC connection.


Matrix IRCd aims to build with zero standard warning and no clippy warnings.

To run clippy use (after install clippy):

cargo clippy --features clippy

The feature flag disables certain spurious warnings related to third party crates.

Some high level development documentation can be generated by:

cargo doc --open

To generate the full documentation, including private APIs, use:

cargo rustdoc -- --no-defaults --passes "collapse-docs" --passes "unindent-comments" --open