An RFC-compliant IRC daemon written in D
Go to file
Les De Ridder 8e461051cd Add basic PROXY (version 1) debug support 2020-11-16 01:11:23 +01:00
source/ircd Add basic PROXY (version 1) debug support 2020-11-16 01:11:23 +01:00
.gitignore Refactor version info generation 2020-10-16 01:42:26 +02:00
LICENSE Update license year 2020-02-12 15:50:21 +01:00 Add basic PROXY (version 1) debug support 2020-11-16 01:11:23 +01:00
config.template.sdl Convert tabs to spaces 2020-02-11 15:01:08 +01:00
dub.sdl Update readme 2020-11-14 23:10:11 +01:00
dub.selections.json Update dependencies 2020-10-14 05:13:36 +02:00 Refactor version info generation 2020-10-16 01:42:26 +02:00


salty-ircd is an Internet Relay Chat daemon written in D.


The main goals of salty-ircd are strict RFC compliance and security.

RFC compliance

salty-ircd aims to be fully compliant with the IRC RFCs (by default), specifically RFC 1459, RFC 2811, RFC 2812, and RFC 2813 (planned), including all errata. Newer RFCs take precedence over older RFCs.

Any additional features breaking RFC compliance are available through compile-time options.


The following rules apply when any compile-time option is enabled (breaking strict RFC compliance):

  • TLS is required for all connections, except connections from localhost (useful for running a Tor hidden service, which already has encryption)
  • TLS client certificates are required for oper and vhost authentication


Build dependencies:

  • A D compiler
  • dub
  • fish
  • git

Build command:

  • RFC compliant: dub build
  • Modern (all additional features): dub build -c=modern

The 'modern' configuration aims to be mostly compatible with UnrealIRCd user modes/chars.

When -d=ProxyV1 is added to the build command, salty-ircd can accept traffic through the PROXY protocol (version 1), e.g. from an UnrealIRCd server running with a custom module. Please see this module's readme for more information. Note that this is simply a development/debugging option and should not be used for a production server.

TODO: Add a method to supply a custom list of compile-time options.


First, create the configuration file, config.sdl. You can find a template in config.template.sdl.

Then, simply run ./out/salty-ircd.


University of Illinois/NCSA Open Source License.