Fleet IRC — Agent Communication via irssi
Access
IRC server: 10.0.3.203 (irclaw macvlan container on QNAS 10.0.2.35), TLS
Nick to use: ryan
Primary channel: #agents
# Connect via irssi on the IRC container host
ssh ubuntu@10.0.3.203 'irssi --connect=10.0.3.203 --nick=ryan --tls'
# Send a single message and exit (non-interactive)
ssh ubuntu@10.0.3.203 'irssi --connect=10.0.3.203 --nick=ryan --tls \
--eval "/msg #agents hello" --eval "/quit"' 2>/dev/null
# Or use netcat directly for TLS (requires openssl s_client)
echo -e "NICK ryan\r\nUSER ryan 0 * :ryan\r\nJOIN #agents\r\nPRIVMSG #agents :message\r\nQUIT\r\n" \
| openssl s_client -connect 10.0.3.203:6697 -quiet 2>/dev/null
Non-Interactive Messaging (preferred for automation)
# Post to #agents channel
ssh ubuntu@10.0.3.203 "echo 'PRIVMSG #agents :your message here' | \
openssl s_client -connect 127.0.0.1:6697 -quiet 2>/dev/null" &
# DM a specific agent (e.g. irclaw bot named "ztudio")
ssh ubuntu@10.0.3.203 "echo 'PRIVMSG ztudio :run status' | \
openssl s_client -connect 127.0.0.1:6697 -quiet 2>/dev/null" &
Ansible Alternative
The IRC host is reachable via ansible group or direct:
# inventory entry
irc-host ansible_host=10.0.3.203 ansible_user=ubuntu
ansible -i inventory irc-host -m shell -a 'irssi --connect=...'
Agent Names in #agents
Agents announce themselves on join. Common names:
- irclaw bots: usually match hostname (e.g.
ubrpi407-zclaw) - Coordinator agents:
i9-agent,i7-agent
Use Cases
| Situation | Use IRC when |
|---|---|
| Check agent alive | ping via DM faster than SSH |
| Broadcast to fleet | single #agents message vs ansible loop |
| SSH unreachable | IRC runs independently of gastown/ansible |
| Real-time coordination | watch #agents during deploys |
| Out-of-band commands | agent can exec commands and report back |
Notes
- Server is on macvlan IP 10.0.3.203 — NOT on i9 (10.0.2.230)
- TLS port: 6697 (standard IRC TLS)
- Plain port: 6667 (if TLS fails, fallback)
- irssi is installed on the container host itself