-
Notifications
You must be signed in to change notification settings - Fork 0
Troubleshooting
computator1200 edited this page Jun 24, 2026
·
2 revisions
Logs live in your profile's logs/ dir (gateway.log, agent.log). Set IRCX_LOG_DIR to also capture raw channel lines.
-
irctokens/ircstatesnot installed - the plugin disables itself with an install hint. Install into the same env your gateway runs from:<hermes-venv>/bin/python -m pip install irctokens ircstates - Confirm it's discovered:
ircxshould appear inhermes status/ the platform registry onceIRCX_SERVER+IRCX_CHANNELare set.
- Symptom:
IRC registration timed out (no RPL_WELCOME). - Usually a bad
USER/identity or the server is waiting on CAP. IRCX sendsCAP ENDafter negotiation; if you patched the code, ensure theUSERline has a non-empty username (it falls back to the nick). - Check TLS/port: TLS default is 6697; plaintext is 6667 with
IRCX_USE_TLS=false.
-
connect_failed→ wrong host/port, firewall, or TLS verification failure. - Self-signed test server:
IRCX_TLS_VERIFY=false(test only). - Outbound 6697 blocked on your host? Try a bouncer or a different port the network offers.
-
Channel key required → use
#chan key(inline) or thekeyfield. -
+n(no external messages) /+i(invite-only) /+k(keyed) → the bot must actually JOIN before speaking; keyed/invite channels need the key/invite. - Channel name typo or
IRCX_GROUP_POLICY=allowlistexcluding it.
- In channels,
require_mentionis on by default - address it by nick (botnick: hi). Add alternate names viamention_aliases. -
Authorization: by default only verified accounts are allowed. If you're testing, set
IRCX_ALLOW_ALL_USERS=true, or add your account toIRCX_ALLOWED_USERS. See Authentication and SASL. - Via a Matrix/heisenbridge puppet, your IRC-side nick is the bridge puppet (e.g.
yourname), not your Matrix handle - that's the identity the bot sees.
-
SASL failed (904/905)→ wrong account/password, or the mechanism isn't offered. Check the server's advertisedsasl=list (in theCAP LS). -
Mechanism mismatch: Libera.Chat offers
SCRAM-SHA-512(not 256) andEXTERNAL/PLAIN. Pick one the server advertises.
- On a dropped link or ping timeout, IRCX marks a retryable failure; Hermes' background reconnect watcher re-runs
connect(), which re-auths and rejoins all channels (including ones added at runtime viairc_join). - The agent's conversation memory is not lost on reconnect - it's persisted in Hermes' state DB. Only messages sent while offline are missed; see persistence options in Interactive Behaviours.
- Too chatty → lower
IRCX_SPONTANEOUS_PROBABILITYand/or raiseIRCX_SPONTANEOUS_COOLDOWN. - Never fires → ensure
IRCX_OBSERVE_MODE=trueand probability> 0; low-traffic channels naturally fire rarely.
- Set
IRCX_ALLOW_AGENT_JOIN=true, ensure the target is withinIRCX_JOINABLE_CHANNELS(or leave it empty for any), and make sure theircxtoolset is enabled for the platform (platform_toolsets.ircx).
-
groups.<chan>.tools/tools_by_senderenforcement needs the small core hook in CORE_PATCH.md. Without it the plugin runs fine but the scope is ignored.