Skip to content

Limits & Defaults

Every bound in the system, in one place. Config-adjustable limits live in [limits] (see the configuration reference); fixed limits are protocol constants or deliberate hard bounds.

Wire & parsing

LimitValueAdjustableNotes
Message-tags budget8,191 Bmax_tag_bytesIRCv3 tag-section budget, separate from the body
Message-body budget512 Bmax_body_bytesclassic RFC 1459 line
Fatal frame length8,704 Bmax_line_byteslonger frames drop the connection; must be ≥ tags + body
S2S link frame16,384 Bfixedseparate budget for server links
UTF-8expectedUTF8ONLY advertised

Connection lifecycle

LimitDefaultAdjustableConsequence when hit
TLS handshake time15 shandshake_timeout_secsconnection aborted
Registration time30 sregistration_timeout_secsdisconnect (Registration timeout)
Idle ping interval120 sping_interval_secsserver PINGs; second miss disconnects (Ping timeout)
Connections per IP10max_clients_per_ipfurther connections refused

Flood & queue controls

LimitDefaultAdjustableConsequence when hit
Inbound burst20 commandsrecv_bursttoken bucket —
Inbound sustained rate10 commands/srecv_ratedisconnect (Excess Flood)
Outbound SendQ2,048 linessendq_linesdisconnect (SendQ exceeded)
S2S link mailbox4,096 framesfixedlink dropped

Names & content

LimitValueAdjustableNotes
Nick length30fixedNICKLEN — enforced
Channel-name length50fixedCHANNELLEN — enforced
Topic length390fixedTOPICLEN — enforced (truncated)
Kick-reason length300fixedKICKLEN — enforced (truncated)
Away-reason length200fixedAWAYLEN — enforced (truncated)
Targets per PRIVMSG/NOTICE1fixedTARGMAX=PRIVMSG:1,NOTICE:1
Mode changes per MODE6fixedMODES=6
Ban/exception/invite entries100 per listfixedMAXLIST
Channels per client50max_channelsCHANLIMIT; opers exempt
MONITOR entries100fixedERR_MONLISTFULL beyond
SILENCE entries32fixedSILENCE=32; ERR_SILELISTFULL beyond
Metadata subscriptions20 keysfixedFAIL METADATA TOO_MANY_SUBS beyond
Multiline batch100 lines / 4096 bytesfixedadvertised as the draft/multiline cap value; exceeding either kills the batch with FAIL BATCH MULTILINE_MAX_LINES/MULTILINE_MAX_BYTES

Metadata (draft/metadata-2)

LimitValue
Keys per target20
Key length32
Value length300

SASL & accounts

LimitValueNotes
SASL buffer8,192 BERR_SASLTOOLONG beyond
AUTHENTICATE chunk400 Bper spec
Password hashingArgon2idconstant-time verify
SCRAM iterations4,096PBKDF2, stored-key scheme

History

LimitDefaultAdjustableNotes
Messages per target (RAM)500history_lenring buffer
Distinct targets (RAM)50,000history_max_targetsLRU batch eviction
Messages per CHATHISTORY request100 max, 50 defaultfixedCHATHISTORY=100
Rows on disk100,000fixedpruned at startup
Startup load5,000 rowsload_limit[persistence]
Write batching256 inserts/txnfixedwrite-behind thread
Shutdown flush grace2 sfixedthen the writer is aborted
LimitDefaultAdjustableNotes
Plugin fuel per call5,000,000 instructions[plugins].fueltrap on exhaustion (fail-open)
Plugin log line4,096 Bfixedtruncated
Link reconnect delay30 sfixeddial-side retry

Disconnect reasons → metrics

Reason stringMetric
SendQ exceededferrixd_sendq_drops_total
Excess Floodferrixd_flood_disconnects_total
Registration timeoutferrixd_registration_timeouts_total

Dual-licensed under MIT or Apache-2.0.