1
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
# Codex Relay Fleet Launch
2
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
3
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
This is the rollout guide for making local Codex terminal sessions IRC-visible and
4
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
operator-addressable through scuttlebot.
5
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
6
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Codex and Gemini are the canonical terminal-broker reference implementations in
7
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
this repo. The normative path and convention contract lives in
8
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
[`../scuttlebot-relay/ADDING_AGENTS.md`](../scuttlebot-relay/ADDING_AGENTS.md).
9
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
10
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Source of truth:
11
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- installer: [`scripts/install-codex-relay.sh`](scripts/install-codex-relay.sh)
12
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- broker: [`../../cmd/codex-relay/main.go`](../../cmd/codex-relay/main.go)
13
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- shared connector: [`../../pkg/sessionrelay/`](../../pkg/sessionrelay/)
14
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- dev wrapper: [`scripts/codex-relay.sh`](scripts/codex-relay.sh)
15
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- hooks: [`hooks/scuttlebot-post.sh`](hooks/scuttlebot-post.sh), [`hooks/scuttlebot-check.sh`](hooks/scuttlebot-check.sh)
16
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- runtime docs: [`install.md`](install.md), [`hooks/README.md`](hooks/README.md)
17
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- canonical relay contract: [`../scuttlebot-relay/ADDING_AGENTS.md`](../scuttlebot-relay/ADDING_AGENTS.md)
18
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
19
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Installed files under `~/.codex/`, `~/.local/bin/`, and `~/.config/` are generated
20
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
copies. Point other engineers and agents at the repo docs and installer, not at one
21
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
person's home directory.
22
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
23
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Runtime prerequisites:
24
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- `codex`
25
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- `go`
26
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- `curl`
27
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- `jq`
28
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
29
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## Canonical pattern
30
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
31
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Future terminal runtimes should copy this shape:
32
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- broker entrypoint in `cmd/{runtime}-relay/main.go`
33
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- tracked installer in `skills/{runtime}-relay/scripts/install-{runtime}-relay.sh`
34
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- rollout guide in `skills/{runtime}-relay/FLEET.md`
35
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- install primer in `skills/{runtime}-relay/install.md`
36
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- runtime hook docs in `skills/{runtime}-relay/hooks/README.md`
37
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- shared transport and presence logic in `pkg/sessionrelay/`
38
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
39
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Ownership conventions:
40
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- the broker owns `online` / `offline`
41
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- the broker owns addressed operator message injection into the live terminal
42
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- the broker owns outbound activity and assistant-message mirroring when the runtime exposes a reliable session log
43
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- hooks remain the pre-action fallback and non-broker compatibility layer
44
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
45
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## What this gives you
46
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
47
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
For each local Codex session launched through `codex-relay`:
48
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- a stable nick: `codex-{repo}-{session}`
49
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- immediate `online` post when the session starts
50
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- mirrored tool activity from the active session log
51
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- mirrored assistant messages from the active session log
52
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- continuous addressed IRC input injection into the live terminal session
53
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- explicit pre-tool fallback interrupts before the next action
54
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- `offline` post on exit
55
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
56
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Transport choice:
57
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- `SCUTTLEBOT_TRANSPORT=http` keeps the bridge/API path and now uses presence heartbeats
58
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- `SCUTTLEBOT_TRANSPORT=irc` logs the session nick directly into Ergo for real presence
59
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
60
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
This is the production control path for a human-operated Codex terminal. If you
61
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
want an always-on IRC-resident bot instead, use `cmd/codex-agent`.
62
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
63
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## One-machine install
64
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
65
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Run from the repo checkout:
66
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
67
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```bash
68
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
bash skills/openai-relay/scripts/install-codex-relay.sh \
69
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
--url http://localhost:8080 \
70
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
--token "$(./run.sh token)" \
71
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
--channel general
72
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
73
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
74
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Then launch:
75
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
76
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```bash
77
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
~/.local/bin/codex-relay
78
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
79
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
80
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## Fleet rollout
81
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
82
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
For multiple workstations or VM images:
83
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
84
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
1. Distribute this repo revision.
85
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
2. Run the tracked installer on each machine.
86
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
3. Launch Codex through `~/.local/bin/codex-relay` instead of `codex`.
87
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
88
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Example:
89
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
90
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```bash
91
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
bash skills/openai-relay/scripts/install-codex-relay.sh \
92
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
--url http://scuttlebot.example.com:8080 \
93
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
--token "$SCUTTLEBOT_TOKEN" \
94
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
--channel fleet \
95
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
--transport irc \
96
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
--irc-addr scuttlebot.example.com:6667
97
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
98
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
99
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
If you need hooks present but inactive until the server is live:
100
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
101
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```bash
102
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
bash skills/openai-relay/scripts/install-codex-relay.sh --disabled
103
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
104
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
105
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Later, re-enable by editing `~/.config/scuttlebot-relay.env` or rerunning:
106
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
107
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```bash
108
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
bash skills/openai-relay/scripts/install-codex-relay.sh --enabled
109
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
110
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
111
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## What the installer changes
112
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
113
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
The installer is intentionally narrow. It:
114
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- copies the tracked hook scripts into `~/.codex/hooks/`
115
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- builds and installs `codex-relay` into `~/.local/bin/`
116
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- merges required hook entries into `~/.codex/hooks.json`
117
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- ensures `features.codex_hooks = true` in `~/.codex/config.toml`
118
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- writes `SCUTTLEBOT_*` settings into `~/.config/scuttlebot-relay.env`
119
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- defaults IRC auth to auto-registration by removing any stale `SCUTTLEBOT_IRC_PASS`
120
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- keeps one backup copy as `*.bak` before overwriting an existing installed file
121
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
122
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
It does not:
123
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- replace the real `codex` binary in `PATH`
124
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- force a fixed nick across sessions
125
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- require IRC to be up at install time
126
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
127
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Useful shared env knobs:
128
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- `SCUTTLEBOT_TRANSPORT=http|irc` selects the connector backend
129
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- `SCUTTLEBOT_CHANNEL` is the primary control channel
130
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- `SCUTTLEBOT_CHANNELS=general,task-42` seeds extra startup work channels
131
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- `SCUTTLEBOT_IRC_ADDR=127.0.0.1:6667` sets the real IRC address when transport is `irc`
132
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- `SCUTTLEBOT_IRC_PASS=...` uses a fixed NickServ password instead of auto-registration; leave it unset for the default broker convention
133
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- `SCUTTLEBOT_IRC_DELETE_ON_CLOSE=0` keeps auto-registered session nicks after clean exit
134
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- `SCUTTLEBOT_INTERRUPT_ON_MESSAGE=1` interrupts the live Codex session only when Codex appears busy; idle sessions are injected directly and auto-submitted
135
{ 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
136
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- `SCUTTLEBOT_PRESENCE_HEARTBEAT=60s` controls HTTP presence touches; set `0` to disable
137
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- `SCUTTLEBOT_MIRROR_REASONING=1` mirrors Codex reasoning blocks to IRC, prefixed with `💭` (off by default)
138
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- `SCUTTLEBOT_ACTIVITY_VIA_BROKER=1` tells `scuttlebot-post.sh` to stay quiet so broker-launched sessions do not duplicate activity posts
139
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
140
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Installer auth knobs:
141
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- default or `--auto-register`: scrub `SCUTTLEBOT_IRC_PASS` from the shared env file and let the broker auto-register ephemeral session nicks
142
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- `--irc-pass <passphrase>`: persist a fixed NickServ password in the shared env file
143
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
144
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Live channel commands:
145
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- `/channels`
146
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- `/join #task-42`
147
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- `/part #task-42`
148
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
149
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## Operator workflow
150
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
151
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
1. Watch the configured channel in scuttlebot.
152
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
2. Wait for a new `codex-{repo}-{session}` online post.
153
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
3. Mention that nick when you need to steer the session.
154
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
4. `cmd/codex-relay` injects the addressed IRC message into the live terminal session.
155
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
5. The pre-tool hook still blocks on the next `Bash|Edit|Write` if needed.
156
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
157
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Examples:
158
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
159
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```text
160
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
operator: codex-scuttlebot-a1b2c3d4 stop and re-read bridge.go
161
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
operator: codex-scuttlebot-a1b2c3d4 wrong file, inspect policies.go first
162
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
163
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
164
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Ambient channel chat does not block the loop. Only explicit nick mentions do.
165
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
166
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## When IRC/scuttlebot is down
167
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
168
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Disable without uninstalling:
169
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
170
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```bash
171
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
SCUTTLEBOT_HOOKS_ENABLED=0 ~/.local/bin/codex-relay
172
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
173
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
174
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Or persist the disabled state in the shared env file:
175
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
176
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```bash
177
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
bash skills/openai-relay/scripts/install-codex-relay.sh --disabled
178
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
179
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
180
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
The hooks and broker soft-fail if the HTTP API is unavailable. Codex still runs;
181
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
you just lose the IRC coordination layer until the server comes back.
182
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
183
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## Adding more runtimes
184
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
185
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Do not fork the protocol. Reuse the same control contract:
186
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- post activity out after each action
187
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- mirror assistant progress and replies when the runtime exposes them
188
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- accept addressed operator instructions back in before the next action
189
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- use stable, human-addressable session nicks
190
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- keep the repo as the source of truth
191
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
192
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
The shared authoring contract lives in
193
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
[`../scuttlebot-relay/ADDING_AGENTS.md`](../scuttlebot-relay/ADDING_AGENTS.md).
194
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!