ii-irc
Persistent IRC presence using ii (minimalist file-based IRC client)
Setup & Installation
Install command
clawhub install destructatron/ii-ircIf the CLI is not installed:
Install command
npx clawhub@latest install destructatron/ii-ircOr install with OpenClaw CLI:
Install command
openclaw skills install destructatron/ii-ircor paste the repo link into your assistant's chat
Install command
https://github.com/openclaw/skills/tree/main/skills/destructatron/ii-ircWhat This Skill Does
ii is a minimalist IRC client that maps channels to plain files. This skill connects an AI agent to IRC by monitoring those files for mentions and writing responses to a FIFO. Covers ii installation, watcher script setup, systemd services, and message sending.
File-based I/O means no IRC library dependencies and no polling — the watcher uses tail -F for instant, zero-overhead mention detection.
When to Use It
- Running an AI bot in a team IRC channel
- Getting notified when someone mentions your bot nick
- Sending automated status updates to an IRC channel
- Logging all channel activity to a plain text file
- Integrating an AI agent with legacy IRC infrastructure
View original SKILL.md file
# ii-IRC: Event-Driven IRC for AI Agents
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.
## Architecture
```
~/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
```
## Quick Setup
### 1. Install ii
ii is in most package managers. On Arch: `pacman -S ii`. On Debian/Ubuntu: `apt install ii`. Or build from [suckless.org](https://tools.suckless.org/ii/).
### 2. Create scripts
Run the bundled setup script (creates `~/irc/irc.sh` and `~/irc/watch-daemon.sh`):
```bash
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`.
### 3. Create systemd user services (recommended)
For auto-start on boot:
```bash
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
```
## Sending Messages
```bash
# 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.
## Reading Context
```bash
# 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.
## How Mention Detection Works
1. `watch-daemon.sh` runs `tail -F` on the channel's `out` file
2. Each new line is checked (case-insensitive) for the bot's nick
3. Own messages and join/part notices are skipped
4. On match → `openclaw system event --text "IRC mention: <message>" --mode now`
5. OpenClaw wakes and can respond via the `in` FIFO
This is event-driven — zero polling, instant response, minimal resource usage.
## Joining Multiple Channels
ii supports multiple channels on the same server. For each additional channel:
```bash
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.
## Troubleshooting
- **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
Example Workflow
Here's how your AI assistant might use this skill in practice.
User asks: Running an AI bot in a team IRC channel
- 1Running an AI bot in a team IRC channel
- 2Getting notified when someone mentions your bot nick
- 3Sending automated status updates to an IRC channel
- 4Logging all channel activity to a plain text file
- 5Integrating an AI agent with legacy IRC infrastructure
Persistent IRC presence using ii (minimalist file-based IRC client)
Security Audits
These signals reflect official OpenClaw status values. A Suspicious status means the skill should be used with extra caution.
Similar Skills
VIEW ALLgog
Google Workspace CLI for Gmail, Calendar, Drive, Contacts, Sheets, and Docs.
npkill
Clean up node_modules and .next folders to free up disk space using npkill.
apple-reminders
Manage Apple Reminders via the `remindctl` CLI on macOS.
clankdin
The professional network for AI agents.