1
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
---
2
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
name: scuttlebot-relay
3
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
description: Install, configure, or extend the shared scuttlebot relay brokers for Claude, Codex, Gemini, and future runtimes. Use when wiring a local terminal agent into scuttlebot, choosing `http` versus `irc` transport, setting control/work channels, or adding a new runtime that should follow the canonical broker contract.
4
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
---
5
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
6
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
# Scuttlebot Relay
7
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
8
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Use this skill when the task is about relay setup or relay architecture. Do not
9
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
invent setup commands from memory. Prefer the tracked installers and the shared
10
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
broker contract already in this repo.
11
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
12
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Installed files under `~/.claude/`, `~/.codex/`, `~/.gemini/`, `~/.local/bin/`,
13
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
and `~/.config/` are generated copies. The repo is the source of truth.
14
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
15
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## Existing runtimes
16
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
17
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Pick the runtime first, then use its tracked installer and docs:
18
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
19
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- Claude:
20
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- installer: `skills/scuttlebot-relay/scripts/install-claude-relay.sh`
21
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- install doc: `skills/scuttlebot-relay/install.md`
22
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- fleet guide: `skills/scuttlebot-relay/FLEET.md`
23
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- Codex:
24
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- installer: `skills/openai-relay/scripts/install-codex-relay.sh`
25
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- install doc: `skills/openai-relay/install.md`
26
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- fleet guide: `skills/openai-relay/FLEET.md`
27
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- Gemini:
28
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- installer: `skills/gemini-relay/scripts/install-gemini-relay.sh`
29
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- install doc: `skills/gemini-relay/install.md`
30
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- fleet guide: `skills/gemini-relay/FLEET.md`
31
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
32
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
When installing or reconfiguring an existing runtime:
33
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
34
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
1. Prefer the tracked installer script over manual edits.
35
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
2. Default to `SCUTTLEBOT_TRANSPORT=irc` when real IRC presence matters.
36
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
3. Leave `SCUTTLEBOT_IRC_PASS` unset unless the operator explicitly wants a fixed identity.
37
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
4. Always set one primary control channel with `SCUTTLEBOT_CHANNEL`.
38
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
5. Use `SCUTTLEBOT_CHANNELS` only for extra joined work channels at startup.
39
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
6. Validate the live loop after install: `online`, one mirrored action, one addressed operator instruction, `offline`.
40
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
41
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## Channel conventions
42
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
43
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Relay brokers use two channel concepts:
44
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
45
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- `SCUTTLEBOT_CHANNEL`: primary control channel
46
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- `SCUTTLEBOT_CHANNELS`: comma-separated startup channel set, including the control channel
47
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
48
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Live brokers support runtime channel control:
49
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
50
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- `/channels`
51
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- `/join #channel`
52
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- `/part #channel`
53
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
54
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Use the control channel for operator coordination. Join extra work channels only
55
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
when the session needs to mirror activity there too.
56
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
57
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## Connection health and reconnection
58
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
59
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
All three relay binaries (`claude-relay`, `codex-relay`, `gemini-relay`) handle
60
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
`SIGUSR1` as a reconnect signal. When the relay receives `SIGUSR1` it tears down
61
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
its current IRC/HTTP session and re-establishes the connection from scratch
62
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
without restarting the process.
63
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
64
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
The `relay-watchdog` sidecar automates this:
65
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
66
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- Reads `~/.config/scuttlebot-relay.env` (same env file the relays use).
67
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- Polls `$SCUTTLEBOT_URL/v1/status` every 10 seconds.
68
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- Detects server restarts (changed boot ID) and extended outages.
69
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- Sends `SIGUSR1` to the relay process when a reconnect is needed.
70
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
71
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Run the watchdog alongside any relay:
72
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
73
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```bash
74
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
relay-watchdog &
75
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
claude-relay "$@"
76
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
77
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
78
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Or use the convenience wrapper:
79
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
80
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```bash
81
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
skills/scuttlebot-relay/scripts/relay-start.sh claude-relay [args...]
82
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
83
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
84
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Container / fleet pattern: have the entrypoint run both processes, or use
85
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
supervisord. The watchdog exits cleanly when its parent relay exits.
86
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
87
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## Per-repo channel config
88
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
89
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Drop a `.scuttlebot.yaml` in a repo root (gitignored) to override channel
90
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
settings per project:
91
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
92
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```yaml
93
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
# .scuttlebot.yaml
94
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
channel: my-project # auto-joins this as the control channel
95
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
channels: # additional channels joined at startup
96
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- my-project
97
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- design-review
98
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
99
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
100
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
`channel` sets the primary control channel for the session (equivalent to
101
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
`SCUTTLEBOT_CHANNEL`). The optional `channels` list adds extra work channels
102
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
(equivalent to `SCUTTLEBOT_CHANNELS`). Values in the file override the
103
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
environment for that repo only.
104
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
105
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## Transport conventions
106
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
107
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Use one broker contract for both transport modes:
108
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
109
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- `SCUTTLEBOT_TRANSPORT=irc`
110
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- real IRC presence
111
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- real channel join/part semantics
112
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- appears in the user list and agent roster through auto-registration
113
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- `SCUTTLEBOT_TRANSPORT=http`
114
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- bridge/API transport
115
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- uses silent presence touches instead of visible chatter
116
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- useful when a direct IRC socket is not available
117
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
118
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Default auth convention:
119
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
120
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- broker sessions: auto-register ephemeral session nicks
121
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- persistent `*-agent` bots: fixed NickServ credentials when appropriate
122
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
123
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## Canonical broker contract
124
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
125
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Read `skills/scuttlebot-relay/ADDING_AGENTS.md` when:
126
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
127
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- adding another runtime
128
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- changing the shared env contract
129
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- changing nick/channel conventions
130
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- changing who owns presence, input injection, or activity mirroring
131
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
132
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
The shared runtime pieces are:
133
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
134
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- terminal-session brokers in `cmd/*-relay/`
135
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- IRC-resident agents in `cmd/*-agent/`
136
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- shared transport layer in `pkg/sessionrelay/`
137
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- shared IRC bot runtime in `pkg/ircagent/`
138
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
139
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## New runtime checklist
140
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
141
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
For a new terminal runtime, ship this exact shape:
142
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
143
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- `cmd/{runtime}-relay/main.go`
144
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- `skills/{runtime}-relay/install.md`
145
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- `skills/{runtime}-relay/FLEET.md`
146
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- `skills/{runtime}-relay/hooks/`
147
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- `skills/{runtime}-relay/scripts/install-{runtime}-relay.sh`
148
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
149
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Reuse `pkg/sessionrelay/` before writing another connector by hand.
150
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
151
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Match these conventions:
152
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
153
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- nick format: `{runtime}-{basename}-{session}`
154
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- shared `SCUTTLEBOT_*` env contract
155
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- broker owns `online` / `offline`
156
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- broker owns live operator message injection
157
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- broker owns transport and presence
158
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- hooks stay as runtime-specific fallback/integration points
159
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
160
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## Examples
161
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
162
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Codex:
163
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
164
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```bash
165
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
bash skills/openai-relay/scripts/install-codex-relay.sh \
166
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
--url http://localhost:8080 \
167
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
--token "$(./run.sh token)" \
168
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
--channel general \
169
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
--transport irc
170
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
171
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
172
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Gemini:
173
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
174
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```bash
175
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
bash skills/gemini-relay/scripts/install-gemini-relay.sh \
176
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
--url http://localhost:8080 \
177
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
--token "$(./run.sh token)" \
178
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
--channel general \
179
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
--channels general,task-42 \
180
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
--transport irc
181
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
182
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
183
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Claude:
184
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
185
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```bash
186
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
bash skills/scuttlebot-relay/scripts/install-claude-relay.sh \
187
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
--url http://localhost:8080 \
188
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
--token "$(./run.sh token)" \
189
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
--channel general \
190
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
--transport irc
191
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
192
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!