Skip to content

Feature Inventory

This page is a complete inventory of ElixIRCd features derived from a direct source code audit. It reflects what is actually implemented, not just what is planned.

CommandDescription
CAPCapability negotiation (LS, REQ, ACK, END, LIST, NEW, DEL)
NICKSet or change nickname
USERSet username and real name
PASSSet connection password
OPERObtain IRC operator status
QUITDisconnect from server
WEBIRCSet real IP for WebSocket/proxy connections
AUTHENTICATESASL authentication exchange
CommandDescription
JOINJoin one or more channels
PARTLeave a channel
KICKRemove a user from a channel
INVITEInvite a user to an invite-only channel
TOPICGet or set the channel topic
MODEGet or set user/channel modes
NAMESList users in a channel
LISTList channels matching a pattern
CommandDescription
PRIVMSGSend a message to a user or channel
NOTICESend a notice to a user or channel
TAGMSGSend a message-tags-only message
CommandDescription
WHOISGet information about a user
WHOWASGet information about a recently disconnected nick
WHOList users matching a mask
AWAYSet or clear away status
USERHOSTGet hostmask for up to 5 nicks
SETNAMEChange real name during session
ISONCheck if nicks are online
CommandDescription
KILLDisconnect a user from the server
OPERWALLBroadcast message to all IRC operators
WALLOPSBroadcast message to users with +w mode
GLOBOPSBroadcast to all operators
CHGHOSTChange a user’s visible hostname
REHASHReload server configuration
RESTARTRestart the server process
DIEShut down the server process
CommandDescription
PINGKeepalive ping
PONGKeepalive reply
VERSIONGet server version information
INFOGet server build/info string
ADMINGet administrator contact info
LUSERSGet user/channel/server counts
MOTDGet the message of the day
STATSGet server statistics
TIMEGet server time
CommandDescription
MONITORTrack user presence (add, remove, list, status, clear)

ModeFlagDescription
Bot+BMarks user as a bot
Caller ID+gOnly receive messages from known users
Hidden Oper+HHides operator status from non-operators
Invisible+iNot shown in /who without specific match
IRC Operator+oServer-level operator status
Registered+rAuthenticated to NickServ account (server-set)
Registered Only+ROnly registered users can message you
Server Notices+sReceive server event notices
Wallops+wReceive /wallops messages
Cloaked+xReplace real hostname with HMAC-hashed cloak
Secure+ZConnected via TLS (server-set)

ModeFlagDescription
No CTCP+CBlock CTCP messages in channel
No Colors+cStrip/block color-formatted messages
Invite Only+iRequire invite to join
Moderated+mOnly voiced/opped users can speak
Registered Only+MOnly registered users can speak
No External Messages+nBlock messages from non-members
IRC Oper Only+OOnly IRC operators can join
Private+pChannel is hidden from /list
Registered+rChannel is registered (server-set)
Registered Users Only+ROnly registered users can join
Secret+sChannel is hidden from /list and /whois
Topic Lock+tOnly ops can change the topic
No NOTICE+TBlock NOTICE messages in channel
Auditorium+uMembers only see ops in NAMES
TLS Only+zOnly TLS-connected users can join
ModeFlagValue FormatDescription
Message Delay+dsecondsNew joiners must wait N seconds before speaking
Join Throttle+jrate:secondsLimit join rate (e.g., 5:60 = 5 joins per 60s)
Key+kpasswordChannel password required to join
Limit+lcountMaximum number of users
ModeFlagDescription
Ban+bBan hostmask from joining/speaking
Exception+eExempt hostmask from ban matching
Invite Exception+IAllow hostmask to join invite-only channel
ModeFlagDescription
Op+oChannel operator status
Voice+vVoice status (can speak in +m channels)

CommandDescription
HELPShow help text
REGISTERRegister current nickname with password
VERIFYVerify registration with emailed code
IDENTIFYAuthenticate to registered account
LOGOUTLog out of current account
GHOSTDisconnect a session using your nick
RECOVERForce-disconnect and reclaim your nick
REGAINReclaim nick (RECOVER + RELEASE combined)
RELEASERelease an enforced nick hold
DROPDelete your account registration
INFOShow account information
SET HIDEMAILHide/show email address in INFO
ACCESS ADD/DEL/LISTManage trusted hostmasks for auto-login
ALISTList all channels where you have access
STATUSCheck authentication status of a nick

CommandDescription
HELPShow help text
REGISTERRegister current channel
DROPDelete channel registration
INFOShow channel registration info
SETConfigure channel settings (see below)
TRANSFERTransfer channel ownership to another user
SettingDescription
GUARDHave ChanServ join to keep channel alive
KEEPTOPICRestore topic when channel re-forms
PRIVATEHide channel info from non-members
RESTRICTEDBlock users not on access list from joining
FANTASYEnable !op, !voice etc. in channel
DESCRIPTION / DESCSet channel description
URLSet channel URL
EMAILSet channel contact email
ENTRYMSGSet message sent to users on join
OPNOTICENotify ops when members gain op/voice
PEACEPrevent lower-rank ops from acting on higher-rank
SECURERequire authentication before op assignment
TOPICLOCKLock topic — only chanserv op can change
SUCCESSORSet fallback owner if current owner drops

CapabilityAnnouncementDescription
saslSASL=PLAINSASL authentication (PLAIN mechanism)
account-tagaccount-tagAttach account name to message tags
account-notifyaccount-notifyNotify on account login/logout
away-notifyaway-notifyNotify on away status changes
cap-notifycap-notifyNotify on server cap changes
chghostchghostNotify on hostname changes
client-tagsclient-tagsPass +prefix client-only tags
extended-joinextended-joinAccount + real name in JOIN
invite-extendedinvite-extendedAccount info in INVITE
invite-notifyinvite-notifyNotify channel on invites
multi-prefixmulti-prefixAll status prefixes in NAMES
message-tagsmessage-tagsFull message tag support
server-timeserver-timetime= tag on all messages
msgidmsgidUnique msgid= tag on all messages
monitormonitorUser presence tracking
setnamesetnameChange real name during session
uhnamesuhnamesnick!ident@host in NAMES replies
extended-uhlistextended-uhlistExtended user modes in WHO
stssts=...TLS upgrade policy (non-requestable)

TransportBackendDefault PortNotes
tcpThousandIsland6667Plain IRC
tlsThousandIsland6697IRC over TLS
wsBandit8080IRC over WebSocket
wssBandit8443IRC over WebSocket + TLS

FeatureDescription
TLSConfigurable per listener
SASL PLAINRequires TLS by default (configurable)
Argon2id passwordsAll NickServ passwords hashed with Argon2id
HMAC hostname cloakingHMAC-SHA with configurable secret keys
Connection rate limitingToken bucket per IP with violation tracking
Message rate limitingToken bucket per user with disconnect on threshold
Per-command throttleConfigurable stricter limits per IRC command
IP exemptionsWhitelist IPs/CIDRs from rate limits
WebIRCTrusted gateway IP passthrough

The following features are not implemented in the current codebase:

FeatureNotes
SASL EXTERNALTLS client certificate auth
SASL SCRAM-SHA-256Modern SCRAM mechanism
Server-to-server linkingSingle-server only
batch capabilityNo batched message delivery
echo-message capabilityNo message echo to sender
labeled-response capabilityNo response correlation
standard-replies capabilityNo structured error responses
& local channelsOnly # channels
Shunning / Z-linesUse firewall for IP blocks
Server-side message history / playbackNo chathistory support