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.
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.
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.
| 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.
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. | ||||||
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. |
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.