Compatibility

Two servers,
one single program

Service-Overtchat installs in full — services, moderation, admin panel and website — in front of two IRC servers: Overtchat-Hybrid and UnrealIRCd. What changes from one to the other is not what gets installed, but what the server allows afterwards. Four other servers were tested with IriX, the former services engine, then retired: they remain here as history, and are labelled as such.

Servers

The two servers, and what has actually been tested

An IRC server does more than relay messages: it also talks to its peers, in a language of its own. That language — the server-to-server protocol — decides what a service like this one can ask for. The families below are not variants of one dialect: P10 is another protocol, with its own identifiers and its own verbs.

Four servers are history, not the offer: ircd-Hybrid, InspIRCd, Bahamut, ircu (Undernet). They were tested with IriX, the former services engine in Tcl, stopped for good on 18 October 2026; they left the installer on 22 October, and OverCore, which has served the services since, only speaks the dialect of Overtchat-Hybrid and UnrealIRCd 6. Their rows and columns stay below, marked “tested with IriX, retired”, because what was measured remains true — but nothing of this project installs on them any more.

Server Version tested Protocol State
Overtchat-Hybrid Written for this network, in C11 1.x och in production The public network’s server since July 28, 2026. It speaks the vocabulary of UnrealIRCd 6, from which it derives.
UnrealIRCd unrealircd.org 6.x unreal link tested The most complete dialect: the one IriX was first written for, and nothing is missing.
ircd-Hybrid historical ircd-hybrid.org 8.2.47 hybrid tested with IriX, retired Link brought up and verified with IriX on 30/07/2026, service channel operators from the first try. Removed from the installer on 22/10/2026; OverCore does not speak this dialect.
InspIRCd historical inspircd.org 4.11.0 inspircd tested with IriX, retired Link brought up by IriX itself on 31/07/2026: probe answered, burst of an already populated channel read, five operator pseudo-clients seen by a witness client. Removed from the installer on 22/10/2026; OverCore does not speak this dialect.
Bahamut historical DALnet 2.2.4 bahamut tested with IriX, retired Link brought up by IriX itself on 01/08/2026. The only server in the list without internal identifiers: its clients are designated by their nickname. Removed from the installer on 22/10/2026; OverCore does not speak this dialect.
ircu (Undernet) historical undernet.org u2.10.12.19 p10 tested with IriX, retired Another protocol, not one more dialect: prefixes without colons, one-letter verbs, base64 identifiers. Tested with IriX on 30/07/2026, with the limits listed below. Removed from the installer on 22/10/2026; OverCore does not speak this protocol.

“Link tested” means something precise: a link was brought up against this server, its five pseudo-clients were introduced on it, and an ordinary client could see they were there — while checking that the opposite did fail when the defect was put back. It is not “it should work”. “Tested with IriX, retired”: the same test, passed at the time by IriX — and no service of this project left to link to it today.

Features

What each server allows the services to do

This table is the same one the IriX services used to publish in the database for the admin panel: the panel grays out what is marked with a cross, and gives the reason rather than showing a button with no effect. The columns marked “historical” describe what IriX could do on those servers — no service links to them any more.

compatible compatible, with a caveat — shown under the row not compatible — the protocol does not allow it
What the service wants to do Overtchat-Hybrid UnrealIRCd ircd-Hybridhistorical (IriX) InspIRCdhistorical (IriX) Bahamuthistorical (IriX) ircu (Undernet)historical (IriX)
Change another client’s modes compatible compatible compatible compatible compatible not compatible
ircu (Undernet) — No SVSMODE: ms_mode rejects a MODE aimed at any client other than its source, and alerts the operators.
Force a nickname change (SVSNICK) compatible compatible compatible compatible compatible not compatible
ircu (Undernet) — No equivalent of SVSNICK: the only recourse is to warn, then disconnect.
Force someone into a channel compatible, with a caveat compatible compatible compatible not compatible not compatible
Overtchat-Hybrid — Goes through the ordinary JOIN: +R, +O, +b and +i apply to the client being brought in. Bahamut — No SVSJOIN: include/msg.h has no trace of it. ircu (Undernet) — No equivalent of SVSJOIN — irix-operjoin.tcl is entirely inoperative.
Force someone out of a channel compatible compatible compatible compatible not compatible not compatible
Bahamut — No SVSPART. ircu (Undernet) — No equivalent of SVSPART.
Mark an account as identified compatible compatible compatible compatible not compatible compatible, with a caveat
Bahamut — The “servicestamp” is set when the client is introduced and can no longer be changed. ircu (Undernet) — AC sets an account, but no operation removes it.
Mask the host (vhost) compatible compatible compatible compatible compatible not compatible
ircu (Undernet) — Masked host derived from the account, with +x: no arbitrary vhost.
Change the ident compatible compatible not compatible compatible not compatible not compatible
ircd-Hybrid — No equivalent of CHGIDENT: no module, not a single occurrence in the 8.2.47 source code. Bahamut — No equivalent of CHGIDENT. ircu (Undernet) — No equivalent of CHGIDENT.
Disconnect someone from the network compatible compatible compatible compatible compatible compatible
Ban from the whole network compatible, with a caveat compatible compatible, with a caveat compatible compatible, with a caveat compatible, with a caveat
Overtchat-Hybrid — Only four types: G, K, Z and Q. ircd-Hybrid — Four separate commands — KLINE, DLINE, XLINE, RESV — where TKL covers as much on its own. Bahamut — AKILL, SQLINE and SGLINE, each with its own form — no single command. ircu (Undernet) — G-line only: no separate Q-line or Z-line.
Notify the operators (GLOBOPS) compatible compatible compatible compatible compatible compatible, with a caveat
ircu (Undernet) — WA/WU only, without the targeting of GLOBOPS.
Restrict a channel to operators (+O) compatible compatible compatible not compatible not compatible not compatible
InspIRCd — The +O comes from the operchans module: built with the server, but not loaded by the example configuration. Bahamut — No channel mode restricted to operators. ircu (Undernet) — No channel mode restricted to operators.
Extended channel ranks (+q, +a, +h) compatible compatible compatible compatible, with a caveat compatible, with a caveat not compatible
InspIRCd — Only +o and +v are core; +q, +a and +h come from the customprefix module, built but not loaded by default. Bahamut — Only +o and +v; no +q, +a or +h. ircu (Undernet) — No +q, +a or +h.

This grid is read from the bot’s database, which republishes it at every startup: it describes the installation serving this page.

Services

What gets added to the network

Service Overtchat-Hybrid UnrealIRCd ircd-Hybridhistorical (IriX) InspIRCdhistorical (IriX) Bahamuthistorical (IriX) ircu (Undernet)historical (IriX)
The services — the five pseudo-clients Accounts, channels, bans, moderation, AI, web panel compatible compatible not compatible not compatible not compatible not compatible
The heart of the project. OverCore (Node.js), which serves the five pseudo-clients, only speaks the dialect of Overtchat-Hybrid and UnrealIRCd 6. ircd-Hybrid, InspIRCd, Bahamut and ircu (P10) were only served by IriX (Tcl), stopped for good on 18/10/2026: on those four servers, no service of this project links any more.
Anope NickServ, ChanServ, OperServ… (optional) compatible compatible compatible compatible not compatible not compatible
Anope 2.1 ships seven protocol modules — hybrid, inspircd, ngircd, plexus, ratbox, solanum, unrealircd — and neither P10 nor Bahamut: the latter only has a module in the 2.0 branch. The panel refuses the configuration instead of attempting it.
Webchat The channel in the browser, over WebSocket compatible compatible compatible compatible compatible compatible
It talks to the server like an ordinary client: the server-to-server dialect does not concern it.
Admin panel Channels, members, moderation, links, status compatible compatible compatible compatible compatible compatible
It reads the capability table and GREYS OUT whatever the server on the other end cannot do, with the reason — rather than offering a button that does nothing.
Security

What security gains, and where it hits a wall

The hardening column describes what the project adds on top of the server’s default settings. That is where the difference lies between “the server can do it” and “it is actually in place”.

Protection Overtchat-Hybrid UnrealIRCd ircd-Hybridhistorical (IriX) InspIRCdhistorical (IriX) Bahamuthistorical (IriX) ircu (Undernet)historical (IriX) Hardening added
Encrypted connections (TLS) ircu 2.10.12 has no TLS layer: a P10 network is encrypted by a relay placed in front of it, or not at all. compatible compatible compatible compatible compatible not compatible Dedicated port 6697, with a self-signed certificate set up by the installer; a Let’s Encrypt certificate can replace it by hand, with a hook that reloads the server on every renewal.
Masking visitors’ hosts On P10, the masked host is derived from the account (+x): there is no arbitrary vhost, hence no mask chosen by the service. compatible compatible compatible compatible compatible compatible, with a caveat Systematic masking on connection, and the real address visible to operators only.
Operator-only channel Without this mode, an operators’ channel is reserved in intent only: the panel announces it, and anyone can walk in. On InspIRCd the mode exists, but in a module — operchans — that the example configuration does not load: “no” therefore describes the default installation, and is fixed by enabling it. Neither Bahamut nor ircu (P10) has a channel mode restricted to operators — there, the restriction rests only on what the services agree to send in. compatible compatible compatible not compatible not compatible not compatible The +O mode is set again on EVERY link recovery, not once and for all: a channel stripped of its modes after a netsplit gets it back on its own.
Network-wide bans P10 only has the G-line: banning a nickname or an address goes through the same mechanism, without distinction. Bahamut has three, each with its own form — AKILL, SQLINE, SGLINE — and no command covering them all. compatible compatible compatible compatible compatible, with a caveat compatible, with a caveat Masks that are too broad are refused — at least four significant characters — on the services side: the server itself only forbids “*” and “*@*”.
Unkickable pseudo-clients ircd-Hybrid 8.2 has NO service mode: the pseudo-clients remain kickable there, and the log says so at every connection rather than keeping quiet about it. InspIRCd, for its part, has one — +k, called servprotect — which protects against KICK and KILL. Bahamut has none either, and it sets a trap: its “S” denotes a TLS connection, not a service. Copying it would have marked the pseudo-clients “encrypted” while leaving them kickable. compatible compatible not compatible compatible not compatible compatible The mode is translated by ROLE, not by letter: +S on UnrealIRCd, +k on ircu — copying the letter would yield a mode that is accepted and wrong.
Protection of registered nicknames On P10, lacking SVSNICK, protection is limited to warning then disconnecting — the module concerned knows it and does not pretend to protect. compatible compatible compatible compatible compatible not compatible The impostor is renamed automatically, then disconnected if they persist.
Proof of identity before moderation Independent of the dialect: it is the client’s +o mode that is checked, and every server has it. compatible compatible compatible compatible compatible compatible The panel does not moderate: it ASKS. The bot only acts if the requester’s nickname is connected AND an operator on the network at that very moment — being signed in to the panel proves nothing.
Visitors’ IPv6 addresses ircu encodes IPv6 addresses in twenty-four characters, which the decoder cannot read yet: on a P10 network, the column stays empty rather than wrong. compatible compatible compatible compatible compatible not compatible The address is decoded and stored as is, unabbreviated, so it stays comparable from one row to the next.
In practice

Which one to choose

You are building a network from scratch

Pick Overtchat-Hybrid: it is the one that serves the public network, and the one on which the project is most thoroughly tested. Where it cannot run, the installer sets up UnrealIRCd 6 in its place, with the Anope services. Nothing is missing: host masking, channel reservation, four kinds of bans, extended ranks, TLS.

You already have a server running

An UnrealIRCd 6: the installer does not plug into a server already in service; it sets up its own (Overtchat-Hybrid, or UnrealIRCd with Anope where the former cannot run), on a machine separate from your network. An ircd-Hybrid, an InspIRCd, a Bahamut or an ircu: their dialect was only spoken by IriX, now stopped — no service of this project links to them any more, and the installer no longer sets them up.

The case of ircu (P10) — historical

Everything works — link, services, moderation, panel — but 8 features do not exist in this protocol, 3 are only partial, and 2 optional services cannot be installed on it (The services — the five pseudo-clients, Anope). Nothing is hidden: the panel greys out what has no purpose and gives the reason, and the modules concerned do not pretend to protect what they cannot protect.

And if your server is not on the list

OverCore, which serves the services, speaks only one language — that of Overtchat-Hybrid and UnrealIRCd 6 — and it refuses to link in a language it could not read, rather than bring up a link that would carry nothing. It is an explicit refusal, at connection time, with its reason.

One thing that depends on no server: the panel never moderates by itself, it asks. The bot only acts after checking that the requester’s nickname is connected and an operator on the network at that very moment. Being signed in to the panel proves nothing to the network.