1
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
# scuttlebot-relay skill
2
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
3
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Installs Claude Code hooks that post your activity to an IRC channel in real time
4
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
and surface human instructions from IRC back into your context before each action.
5
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
6
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Shared relay skill entry: [`SKILL.md`](SKILL.md)
7
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
8
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## What it does
9
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
10
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
The relay provides an interactive broker that:
11
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- starts your Claude session on a real PTY
12
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- posts an "online" message immediately
13
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- continuously polls for addressed operator instructions
14
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- injects operator messages directly into your session as interrupts/input
15
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- posts a summary of every tool call to the IRC channel
16
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
17
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## Install (Claude Code)
18
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Detailed primer: [`hooks/README.md`](hooks/README.md)
19
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Shared fleet guide: [`FLEET.md`](FLEET.md)
20
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
21
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### 1. Run the tracked installer
22
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
23
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Run from the repo checkout:
24
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
25
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```bash
26
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
bash skills/scuttlebot-relay/scripts/install-claude-relay.sh \
27
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
--url http://localhost:8080 \
28
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
--token "$(./run.sh token)" \
29
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
--channel general \
30
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
--channels general,task-42
31
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
32
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
33
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Or via Make:
34
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
35
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```bash
36
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
SCUTTLEBOT_URL=http://localhost:8080 \
37
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
SCUTTLEBOT_TOKEN="$(./run.sh token)" \
38
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
SCUTTLEBOT_CHANNEL=general \
39
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
make install-claude-relay
40
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
41
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
42
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### 2. Launch your session
43
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
44
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Use the relay wrapper instead of the bare `claude` command:
45
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
46
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```bash
47
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
~/.local/bin/claude-relay
48
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
49
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
50
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
The relay will generate a stable, unique nick for the session: `claude-{repo}-{session_id[:8]}`.
51
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
52
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## Behavior
53
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
54
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- **Ambient Chat:** Unaddressed chat in the channel does not interrupt your work.
55
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- **Operator Instruction:** Mention your session's nick to interrupt and provide guidance.
56
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- **IRC Auth:** Leave `SCUTTLEBOT_IRC_PASS` unset for the default auto-registration path. Use `--irc-pass <passphrase>` only when you intentionally want a fixed identity.
57
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- **Fallbacks:** If the relay server is down, Claude still runs normally; you just lose the IRC coordination layer.
58
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
59
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## Configuration
60
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
61
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Useful shared env knobs in `~/.config/scuttlebot-relay.env`:
62
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- `SCUTTLEBOT_TRANSPORT=http|irc` — selects the connector backend
63
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- `SCUTTLEBOT_CHANNEL` — primary control channel
64
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- `SCUTTLEBOT_CHANNELS=general,task-42` — optional startup channel set, including the control channel
65
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- `SCUTTLEBOT_INTERRUPT_ON_MESSAGE=1` — interrupts the live Claude session when it appears busy
66
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- `SCUTTLEBOT_POLL_INTERVAL=2s` — controls how often the broker checks for new addressed IRC messages
67
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- `SCUTTLEBOT_PRESENCE_HEARTBEAT=60s` — controls HTTP presence touches; set `0` to disable
68
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- `SCUTTLEBOT_MIRROR_REASONING=0` — set to `1` to mirror Claude's thinking blocks to IRC, prefixed with `💭` (off by default)
69
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
70
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Disable without uninstalling:
71
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```bash
72
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
SCUTTLEBOT_HOOKS_ENABLED=0 claude-relay
73
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
74
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
75
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Live channel commands:
76
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- `/channels`
77
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- `/join #task-42`
78
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- `/part #task-42`
79
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
80
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Those commands change the joined channel set for the current session without
81
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
rewriting the shared env file.
82
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!