documentation hub

XYZnet docs

References for the software that powers this network: XYZircd, Rustic IRC Services, and the proxy / DNSBL scanner. In-channel help: /msg X HELP, /msg Y HELP, /msg Z HELP,

wiki · ircd

XYZircd

Solanum · TS6 · C

XYZircd is the network IRCd for XYZnet. It is based on Solanum (itself from charybdis/ircd-ratbox lineage) with XYZnet branding, cloaking style, and network-tuned defaults. Servers link with the modern TS6 protocol and expose standard CAPABs for SASL, account tags, and multi-prefix.

Connecting

  • Primary: irc.XYZnet.org (round-robin of all client servers)
  • Servers: hashbury.ca.us.XYZnet.org (hub, California US), terry.on.ca.XYZnet.org (Ontario CA)
  • Plain: port 6667 (6665–6669 on the hub only)
  • TLS: port 6697 (preferred) — client URI: ircs://irc.xyznet.org:6697
  • Lobby: #XYZ

After connect, register and identify with services (see Rustic below), or use SASL if your client supports it.

User modes

ModeNameDescriptionWho
+iInvisibleHidden from WHO/NAMES unless sharing a channelAny (self)
+xCloakHost cloak via ip_cloaking_4.0 (XYZ- / .XYZ.IP)Any (self); often default
+wWallopsReceive WALLOPS broadcastsAny (self)
+gCaller IDOnly users on your /ACCEPT list may message or invite youAny (self)
+GSoft caller IDLike +g, but users sharing a channel with you may still message youAny (self)
+RRegistered onlyRefuse private messages from unidentified users you have not acceptedAny (self)
+DDeafDo not receive channel messagesAny (self)
+QNo forwardNot affected by channel forwarding (+f)Any (self)
+CNo CTCPBlock CTCPs other than ACTIONAny (self)
+IHide idleHide your WHOIS idle time (and you cannot see others')Any (self)
+BBotMarks you as a bot (IRCv3), shown in WHO/WHOIS; no flood exemptionAny (self)
+uUnfilteredReceive messages the server would otherwise filter by contentAny (self)
+ZSecureConnected via TLS — set automatically, cannot be changedServer

Typical connect defaults include +i (and often +x).

The operator user-mode reference is oper-only. Oper login

Channel modes

List modes (type A)

ModeDescription
+bBan — nick!user@host
+eExempt — bypasses +b and +Z
+IInvite exception — join a +i channel without an invite
+ZZipit (the old quiet) — can stay, cannot speak or change nick; halfops and up

Parameter modes (type B / C)

ModeDescription
+kChannel key (password)
+fForward target when a join fails (+i, +j, +l, +r)
+jJoin throttle count:seconds (e.g. 5:10)
+lUser limit

Flag modes (type D)

ModeDescription
+iInvite only (or match a +I)
+mModerated (need voice or higher to speak)
+nNo external messages
+tTopic protection (halfops and up)
+s / +pSecret (hidden from /whois, /list) / private (no /knock)
+rRegistered (identified) users only may join
+ROnly identified users may talk
+cNo colour — colours and formatting are stripped
+CNo CTCP (except ACTION)
+TNo NOTICEs to the channel
+STLS-only — only users connected via TLS may join
+zOp moderated — messages blocked by +m, +b and +Z go to halfops and up
+gFree invite — any member may INVITE
+FFree target — anyone may forward (+f) to this channel
+QDisable forward — users cannot be forwarded here
+OIRC operators only
+AServer administrators only

Membership prefixes

ModePrefixRole
+q~Founder (500) / co-owner (400) — set by services only
+a&Admin (ADMIN/SOP, 300) — protected from ops and halfops; only +q can give or take it
+o@Operator (AOP, 50)
+h%Halfop (HOP, 30) — cannot kick, ban or de-status ops and up
+v+Voice (VOP, 10)

Nobody can act on an equal or higher rank, except the founder. The old +q quiet is now +Z (zipit).

ISUPPORT: PREFIX=(qaohv)~&@%+ · CHANMODES=eIbZ,k,flj,ACFLMOPQRSTcgimnprstz · STATUSMSG=~&@%+

Host cloaking

Module ip_cloaking_4.0 provides user mode +x. XYZnet cloaks use a distinctive brand style:

  • Hostname cloaks: prefix style XYZ-…
  • IP cloaks: include .XYZ.IP (or related .XYZ. forms)

Cloaking protects real hosts from casual exposure. Do not attempt to de-anonymize users for harassment — see the charter.

wiki · services

Rustic IRC Services

Rust · TS6 · PostgreSQL

Rustic is XYZnet’s services package: nickname and channel registration, notes, vhosts, operator tools, weather, LastFM, and a browser portal at services.XYZnet.org. It links to XYZircd over TS6 as services.XYZnet.org.

Classic names (NickServ, ChanServ, …) may appear as reserved stubs that point users to X / Y / Z and #XYZ. Prefer the real agents below.

Quick start

/msg Y REGISTER <password> [email]
/msg Y IDENTIFY <password>
# or: /IDENTIFY <password>

/msg X REGISTER #mychannel     # you must be op
/join #XYZ

SASL PLAIN is supported for clients that authenticate before join.

X — Channel Services (ChanServ) only

X is ChanServ only. Nick commands are on Y (see below); the nickname table under X in older docs was wrong.

Registration

CommandDescription
REGISTER #<channel>Register a channel (you must be op)

Nickname commands

CommandDescription
IDENTIFY [nick] <password>Identify (aliases: ID)
LOGOUTClear identification
STATUS [nick]Identify status 0–3
INFO <nick>Nickname information
SET <option> <value>PASSWORD, ENFORCE, EMAIL, ACTION, …
DROP <password>Drop nick registration
GHOST / RECOVER / RELEASEReclaim or free a held nick
GROUP / UNGROUP / GLISTAccount nick grouping
NACCESS ADD|DEL|LISTAuto-recognize hostmasks
ALISTChannels you have access on
RESETPASS / CONFIRMPassword reset flow
TRANSFER #chan <nick>Transfer channel founder

ENFORCE: OFF | ON | QUICK | IMMED | WARN · ACTION: KILL | NICK

Channel commands

CommandDescription
DROP / INFO #channelDrop registration / view info
ACCESS #chan ADD|DEL|LISTAccess list with levels
AKICK #chan …Auto-kick list (ADD|DEL|LIST|ENFORCE|CLEAR)
OP / DEOP / HALFOP / VOICE …Status modes
UP / DOWN / SYNCRestore or strip / re-apply access
ENFORCE #chan <what>SECUREOPS | RESTRICTED | REGONLY | BANS
CSET #chan <opt> [val]MLOCK, ENTRYMSG, KEEPTOPIC, …
INVITE / KICK / BAN / TOPIC / GETKEYChannel management helpers
SEEK #channelNotify & invite access list

Channel triggers (in-channel): !op !deop !halfop !voice !kick !ban !unban !topic !invite !seek

Y — Nickname Services (NickServ) only · Z — Note Services (NoteServ) only

CommandDescription
/msg Y REGISTER / IDENTIFY / SET / DROP / GHOST / RECOVER / RELEASE / ALISTNickname commands on Y
/msg Z SEND <nick> <message> · LIST / READ / DELNotes on Z (NoteServ)
/msg InfoServ INFO [key] / NEWSNetwork info & all news on InfoServ
/msg HostServ REQUEST <vhost> · ON / OFFVhosts on HostServ
/msg GroupServ GROUP / UNGROUP / GLISTNick grouping on GroupServ

Notes require identification to Y first.

BotServ · XYZ · GameServ

BotServ is the channel bot (/msg BotServ HELP); GameServ runs the games; XYZ (Global) carries network-wide notices from the operators; news lives on InfoServ.

The operator services reference is oper-only. Oper login

Weather · LastFM

  • Weather — real-time weather via geocoding + forecast APIs; channel triggers such as !w, !weather, !forecast.
  • LastFM — now playing / recent / top tracks; channel trigger !np.

Message the agents directly for HELP, or use configured channel triggers where enabled.

Nitter — X / Twitter bridge

The Nitter leaf (nitter.XYZnet.org) shows X/Twitter posts and profiles in channels that turn it on. Where it is on, it answers x.com / twitter.com links instead of Snarf, with a public Nitter link alongside. Type !x help in the channel.

CommandDescription
/msg BotServ NITTER #chan ON|OFFBring the Nitter leaf into the channel, or remove it
/msg BotServ NITTER #chan STATUSOn/off, whether the leaf is present, and the search state (anyone)
/msg BotServ NITTER #chan SEARCH REQUEST|CANCEL|STATUSAsk for !x search in the channel, withdraw the request, or check it (3 requests per 10 minutes)
!x <x.com link | @handle | post id>Show a post or profile
!x thread <x.com link | post id>Unroll the author's thread (up to 5 posts; one per 2 minutes per channel)
!x follow @handle [noreplies] [norts] [media]Post new posts from an account here (media = only posts with media); !x unfollow, !x follows
!x alert <keywords>Keyword alerts (needs approved search); !x unalert, !x alerts
!x block <term>Channel blocklist; !x unblock, !x blocks
!x search <query>Recent posts, only in channels whose search request was approved
!x status · !x helpLeaf health / command list

Turning Nitter on/off and search requests: the founder, users with FLAGS +P, the NITTERCONFIG level (default 300, admin), or an IRCop. follow, alert and block need +P / NITTERCONFIG; using !x is the NITTER level (default 0, everyone). Founders can also do this on the portal under the channel's settings. Search is reviewed by the network staff, and stays off until it is approved.

Web portal

The Rustic web UI is published at https://services.xyznet.org (proxied to the services HTTP listener). Use the same credentials as your registered IRC nick. The site header Login / Members buttons open this portal.

  • Profile and account overview
  • Channel and notes summary
  • In-app service documentation
wiki · security

Proxy & DNSBL scanner

TS6 · Monitor · Python

scanner.XYZnet.org is a linked TS6 server that introduces Monitor!Proxy@scanner.XYZnet.org. On each new client connection, Monitor checks the IP against:

  • The EFnet DNSBL (rbl.efnetrbl.org)
  • XYZnet local ban list (oper-managed)
  • XYZnet exempt list (oper-managed — allows EFnet-listed hosts when needed)

Listed hosts (unless exempt) receive a temporary network KLINE and disconnect. Clean hosts are unaffected. Light open-port probes may be noted in #scanner without automatic bans.

What users see

  • Notices from Monitor explaining the security check
  • Lobby force-join to #XYZ still applies as usual
  • Public policy lists at scanner.XYZnet.org (IPs / reasons only — no nicknames)

Public lists

TabContents
EFnet RBLUnique IPs confirmed listed, with category & totals (searchable)
Local bansOper-added hosts/IPs and reasons
ExemptsHosts allowed despite EFnet listing

Connection scan logs (nicks, user hosts) are not published on the website.

The Monitor oper command reference is oper-only. Oper login

Open scanner.XYZnet.org →

also see