Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Persistent IRC presence using ii (minimalist file-based IRC client) with event-driven mention detection. Use when setting up an AI agent on IRC, monitoring IRC channels, sending IRC messages, or integrating OpenClaw with IRC via ii. Covers ii setup, mention watcher, systemd services, and message sending/reading.
Persistent IRC presence using ii (minimalist file-based IRC client) with event-driven mention detection. Use when setting up an AI agent on IRC, monitoring IRC channels, sending IRC messages, or integrating OpenClaw with IRC via ii. Covers ii setup, mention watcher, systemd services, and message sending/reading.
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
ii writes all channel activity to plain files. A watcher script monitors for mentions and triggers OpenClaw system events. Responses are sent by writing to a FIFO.
~/irc/ โโโ irc.sh # Management script (start/stop/status/send) โโโ watch-daemon.sh # Mention watcher โ openclaw system event โโโ <server>/ โโโ <channel>/ โโโ in # FIFO - write here to send messages โโโ out # Append-only log of all channel messages
ii is in most package managers. On Arch: pacman -S ii. On Debian/Ubuntu: apt install ii. Or build from suckless.org.
Run the bundled setup script (creates ~/irc/irc.sh and ~/irc/watch-daemon.sh): bash scripts/setup.sh --server irc.example.org --port 6667 --nick MyBot --channel "#mychannel" Or create them manually โ see scripts/irc.sh.template and scripts/watch-daemon.sh.template.
For auto-start on boot: mkdir -p ~/.config/systemd/user # IRC connection service cat > ~/.config/systemd/user/irc-bot.service << 'EOF' [Unit] Description=IRC connection (ii) After=network-online.target Wants=network-online.target [Service] Type=simple ExecStart=/usr/bin/ii -s SERVER -p PORT -n NICK -i %h/irc ExecStartPost=/bin/bash -c 'sleep 3 && echo "/j CHANNEL" > %h/irc/SERVER/in' Restart=always RestartSec=10 [Install] WantedBy=default.target EOF # Mention watcher service cat > ~/.config/systemd/user/irc-watcher.service << 'EOF' [Unit] Description=IRC mention watcher After=irc-bot.service Wants=irc-bot.service [Service] Type=simple ExecStart=%h/irc/watch-daemon.sh Restart=always RestartSec=5 [Install] WantedBy=default.target EOF # Replace SERVER, PORT, NICK, CHANNEL in the service files, then: systemctl --user daemon-reload systemctl --user enable --now irc-bot.service irc-watcher.service
# Via the management script ~/irc/irc.sh send "Hello, world!" # Or write directly to the FIFO echo "Hello, world!" > ~/irc/<server>/<channel>/in Important: ii splits long messages at byte boundaries, which can break mid-word or mid-UTF8 character. Keep messages under ~400 characters. For longer content, split into multiple messages with brief pauses between them.
# Last N messages (token-efficient) tail -n 20 ~/irc/<server>/<channel>/out # Quick status (last 5 messages) ~/irc/irc.sh status Never read the entire out file โ it grows indefinitely. Always use tail with a limit.
watch-daemon.sh runs tail -F on the channel's out file Each new line is checked (case-insensitive) for the bot's nick Own messages and join/part notices are skipped On match โ openclaw system event --text "IRC mention: <message>" --mode now OpenClaw wakes and can respond via the in FIFO This is event-driven โ zero polling, instant response, minimal resource usage.
ii supports multiple channels on the same server. For each additional channel: echo "/j #other-channel" > ~/irc/<server>/in To watch multiple channels, either run separate watcher instances or modify watch-daemon.sh to monitor multiple out files.
Not connecting: Check ii is running (pgrep -f "ii -s"), verify server/port Not joining channel: The in FIFO must exist; check ExecStartPost timing (increase sleep if needed) Mentions not triggering: Verify watcher is running (pgrep -f watch-daemon), check nick matches Messages splitting weirdly: Shorten messages; ii has a ~512 byte IRC protocol limit Reconnection: systemd Restart=always handles this; ii exits on disconnect, systemd restarts it
Workflow acceleration for inboxes, docs, calendars, planning, and execution loops.
Largest current source with strong distribution and engagement signals.