ii-irc

Calendar & Scheduling
v1.0.0
Benign

Persistent IRC presence using ii (minimalist file-based IRC client)

11.6K downloads1.6K installsby @destructatron

Setup & Installation

Install command

clawhub install destructatron/ii-irc

If the CLI is not installed:

Install command

npx clawhub@latest install destructatron/ii-irc

Or install with OpenClaw CLI:

Install command

openclaw skills install destructatron/ii-irc

or paste the repo link into your assistant's chat

Install command

https://github.com/openclaw/skills/tree/main/skills/destructatron/ii-irc

What 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.

INPUT

User asks: Running an AI bot in a team IRC channel

AGENT
  1. 1Running an AI bot in a team IRC channel
  2. 2Getting notified when someone mentions your bot nick
  3. 3Sending automated status updates to an IRC channel
  4. 4Logging all channel activity to a plain text file
  5. 5Integrating an AI agent with legacy IRC infrastructure
OUTPUT
Persistent IRC presence using ii (minimalist file-based IRC client)

Share this skill

Security Audits

VirusTotalBenign
OpenClawBenign
View full report

These signals reflect official OpenClaw status values. A Suspicious status means the skill should be used with extra caution.

Details

LanguageMarkdown
Last updatedFeb 26, 2026