relmio 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +51 -0
- package/README.md +126 -36
- package/docs/architecture.md +57 -0
- package/docs/images/examples/gpt-56-model-selector.png +0 -0
- package/docs/images/examples/n8n-openai-credential-connected.png +0 -0
- package/docs/images/examples/telegram-model-results.png +0 -0
- package/docs/images/examples/telegram-n8n-workflow-execution.png +0 -0
- package/docs/images/setup/00-install-methods.png +0 -0
- package/docs/images/setup/01-local-sign-in-ready.png +0 -0
- package/docs/images/setup/02-vps-identity-confirmed.png +0 -0
- package/docs/images/setup/03-n8n-detected.png +0 -0
- package/docs/images/setup/04-install-plan.png +0 -0
- package/docs/images/setup/05-bridge-ready.png +0 -0
- package/docs/local-endpoints-spec.md +370 -0
- package/docs/local-endpoints.md +374 -0
- package/docs/npm-publish.md +121 -201
- package/docs/security.md +92 -3
- package/package.json +2 -2
- package/src/domain/local-endpoints.js +460 -0
- package/src/gateway/openai.js +834 -0
- package/src/infrastructure/local-process.js +375 -0
- package/src/services/codex-login.js +711 -0
- package/src/services/local-installer.js +1120 -0
- package/src/ui/app.js +4 -0
- package/src/ui/index.html +119 -108
- package/src/ui/local.css +262 -0
- package/src/ui/local.html +442 -0
- package/src/ui/local.js +550 -0
- package/src/ui/styles.css +577 -278
- package/src/web/server.js +247 -12
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,57 @@ checks the registry separately after publication.
|
|
|
7
7
|
|
|
8
8
|
## Unreleased
|
|
9
9
|
|
|
10
|
+
## [0.4.0] - 2026-08-13
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- Add a local Docker wizard for private compatible clients through a
|
|
15
|
+
Platform-key-backed OpenAI-compatible `/v1` endpoint, plus a separate
|
|
16
|
+
official experimental Codex App Server target for trusted ChatGPT-sign-in
|
|
17
|
+
clients.
|
|
18
|
+
- Add compact Ko-fi support links to the hosted navigation and public package
|
|
19
|
+
guides.
|
|
20
|
+
|
|
21
|
+
### Changed
|
|
22
|
+
|
|
23
|
+
- Make the local credential boundary explicit across the product: a Platform
|
|
24
|
+
API key powers compatible `/v1` requests, while ChatGPT sign-in powers only
|
|
25
|
+
the experimental Codex App Server protocol.
|
|
26
|
+
|
|
27
|
+
### Fixed
|
|
28
|
+
|
|
29
|
+
- Keep the controlling terminal attached when the macOS/Linux installer is
|
|
30
|
+
piped through `sh`, so the Relmio wizard can open its interactive browser
|
|
31
|
+
setup flow.
|
|
32
|
+
- Install Homebrew dependencies in their required order during release-candidate
|
|
33
|
+
validation.
|
|
34
|
+
|
|
35
|
+
### Security
|
|
36
|
+
|
|
37
|
+
- Bind local endpoints exclusively to loopback, require one-time Relmio
|
|
38
|
+
capabilities, pin every managed operation to an attested local Docker
|
|
39
|
+
socket, and isolate provider credentials in target-specific containers.
|
|
40
|
+
- Restrict the managed Codex endpoint to the ChatGPT login method.
|
|
41
|
+
|
|
42
|
+
## [0.3.1] - 2026-08-10
|
|
43
|
+
|
|
44
|
+
### Changed
|
|
45
|
+
|
|
46
|
+
- Make the browser wizard beginner-friendly with a modern fixed-viewport
|
|
47
|
+
layout: all five active steps fit without document scrolling on common
|
|
48
|
+
1280x720 laptops, while progress and safety context stay persistent beside
|
|
49
|
+
the active task.
|
|
50
|
+
- Keep narrow-phone documents fixed to the viewport and contain unavoidable
|
|
51
|
+
long-form overflow within the active task panel instead of the page.
|
|
52
|
+
- Expand the GitHub and npm walkthroughs with a hosted-install selector and
|
|
53
|
+
packaged, sanitized screenshots that document the current n8n workflow.
|
|
54
|
+
|
|
55
|
+
### Security
|
|
56
|
+
|
|
57
|
+
- Restore a clean hosted-web dependency audit by pinning patched `js-yaml`
|
|
58
|
+
and `nanoid` releases and using the compatible `vinext` release that does
|
|
59
|
+
not include the currently vulnerable `image-size` parser.
|
|
60
|
+
|
|
10
61
|
## [0.3.0] - 2026-08-05
|
|
11
62
|
|
|
12
63
|
### Added
|
package/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<div align="center">
|
|
2
2
|
<img src="https://cdn.jsdelivr.net/npm/relmio@latest/docs/images/brand/relmio-mark.svg" alt="Relmio logo" width="88">
|
|
3
3
|
<h1>Relmio</h1>
|
|
4
|
-
<p>
|
|
4
|
+
<p>Set up private n8n relays, Platform-key OpenAI-compatible local endpoints, and experimental Codex App Server sessions.</p>
|
|
5
5
|
<p>
|
|
6
6
|
<a href="https://github.com/Demonbane18/relmio">Full guide</a>
|
|
7
7
|
·
|
|
@@ -11,32 +11,44 @@
|
|
|
11
11
|
·
|
|
12
12
|
<a href="https://github.com/Demonbane18/relmio/blob/main/docs/roadmap.md">Roadmap</a>
|
|
13
13
|
</p>
|
|
14
|
+
<p>
|
|
15
|
+
<a href="https://ko-fi.com/paldogies"><img src="https://img.shields.io/badge/Ko--fi-support-ff5e5b.svg?logo=ko-fi&logoColor=white" alt="Support Relmio on Ko-fi"></a>
|
|
16
|
+
</p>
|
|
14
17
|
</div>
|
|
15
18
|
|
|
16
19
|
## See it working first
|
|
17
20
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
+
This documented example follows a tested n8n OpenAI credential through a
|
|
22
|
+
published Telegram-triggered workflow. It is a product-operation record, not
|
|
23
|
+
an endorsement, sponsorship, or affiliation by OpenAI, n8n, Hostinger,
|
|
24
|
+
Telegram, or AppBuildersPH.
|
|
25
|
+
|
|
26
|
+
<figure>
|
|
27
|
+
<img src="https://cdn.jsdelivr.net/npm/relmio@latest/docs/images/examples/n8n-openai-credential-connected.png" alt="n8n OpenAI credential dialog showing that the connection test succeeded" width="960">
|
|
28
|
+
<figcaption>The n8n OpenAI credential connection test succeeded; the credential value itself is obscured.</figcaption>
|
|
29
|
+
</figure>
|
|
21
30
|
|
|
22
31
|
<figure>
|
|
23
|
-
<img src="https://cdn.jsdelivr.net/npm/relmio@latest/docs/images/examples/gpt-56-model-selector.png" alt="
|
|
24
|
-
<figcaption>
|
|
32
|
+
<img src="https://cdn.jsdelivr.net/npm/relmio@latest/docs/images/examples/gpt-56-model-selector.png" alt="n8n model selector with gpt-5.6-terra selected and an account-specific model list" width="500">
|
|
33
|
+
<figcaption>This signed-in account's n8n model list includes <code>gpt-5.6-terra</code>; model availability is account-dependent and can change.</figcaption>
|
|
25
34
|
</figure>
|
|
26
35
|
|
|
27
|
-
|
|
28
|
-
|
|
36
|
+
<figure>
|
|
37
|
+
<img src="https://cdn.jsdelivr.net/npm/relmio@latest/docs/images/examples/telegram-n8n-workflow-execution.png" alt="Successful n8n execution of a Telegram-triggered workflow with HTTP Request, Basic LLM Chain, and AI Agent branches" width="960">
|
|
38
|
+
<figcaption>The published Telegram-triggered n8n workflow completed successfully across its HTTP Request, Basic LLM Chain, and AI Agent branches.</figcaption>
|
|
39
|
+
</figure>
|
|
29
40
|
|
|
30
41
|
<figure>
|
|
31
|
-
<img src="https://cdn.jsdelivr.net/npm/relmio@latest/docs/images/examples/
|
|
32
|
-
<figcaption>
|
|
42
|
+
<img src="https://cdn.jsdelivr.net/npm/relmio@latest/docs/images/examples/telegram-model-results.png" alt="Telegram conversation receiving HTTP Request, Basic LLM Chain, and AI Agent outputs" width="682">
|
|
43
|
+
<figcaption>Telegram received the HTTP Request, Basic LLM Chain, and AI Agent outputs sent by that workflow.</figcaption>
|
|
33
44
|
</figure>
|
|
34
45
|
|
|
35
|
-
Relmio is a local browser wizard
|
|
46
|
+
Relmio is a local browser wizard with separate setup paths. Its existing
|
|
47
|
+
VPS/n8n path installs a private
|
|
36
48
|
[openai-oauth](https://github.com/EvanZhouDev/openai-oauth) Docker sidecar
|
|
37
|
-
beside an existing self-hosted n8n instance.
|
|
38
|
-
|
|
39
|
-
|
|
49
|
+
beside an existing self-hosted n8n instance. Its local Docker path can install
|
|
50
|
+
either an OpenAI-compatible gateway backed by a Platform API key or the
|
|
51
|
+
official Codex App Server backed by ChatGPT sign-in.
|
|
40
52
|
|
|
41
53
|
The existing n8n image, Compose file, container, and workflows stay untouched.
|
|
42
54
|
|
|
@@ -52,7 +64,7 @@ adds the missing capability without changing n8n.
|
|
|
52
64
|
Try the hosted browser demo at
|
|
53
65
|
[relmio.vercel.app](https://relmio.vercel.app/). It is a separate
|
|
54
66
|
request-bound ChatGPT experience; the npm package remains the local wizard for
|
|
55
|
-
|
|
67
|
+
the private VPS/n8n sidecar and the separate local Docker endpoint paths.
|
|
56
68
|
|
|
57
69
|
> **Warning — Hosted chat requires the browser extension.** Install the
|
|
58
70
|
> open-source [Sign in with ChatGPT extension for
|
|
@@ -80,10 +92,57 @@ tailored to the current self-hosted n8n and Hostinger VPS setup path.
|
|
|
80
92
|
The hosted site and local wizard keep the original Relmio relay layout while
|
|
81
93
|
adding a compact **System / Light / Dark** appearance control. System follows
|
|
82
94
|
the computer's preference; Light and Dark are remembered on that browser only.
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
95
|
+
On desktop, the local wizard keeps progress and sidecar-only safety notes in a
|
|
96
|
+
persistent rail beside the active task; its compact fixed-screen shell avoids
|
|
97
|
+
document scrolling on common laptop screens. On narrow phones, it switches to
|
|
98
|
+
a horizontal progress strip and keeps task scrolling inside the active panel.
|
|
99
|
+
The hosted site keeps the live GitHub star/version control visible.
|
|
100
|
+
|
|
101
|
+
## Local Docker endpoints
|
|
102
|
+
|
|
103
|
+
Choose **Local endpoints** in the browser wizard to install one of these
|
|
104
|
+
Docker services on the same computer as your app:
|
|
105
|
+
|
|
106
|
+
This local Docker path supports macOS, Linux, and Linux under WSL2. Native
|
|
107
|
+
Windows is not supported in this release because its filesystem permissions do
|
|
108
|
+
not provide the owner-only POSIX mode guarantees used for local credentials.
|
|
109
|
+
The existing VPS/n8n wizard remains available from native Windows.
|
|
110
|
+
|
|
111
|
+
| Option | Local endpoint | Provider credential | Client type |
|
|
112
|
+
|---|---|---|---|
|
|
113
|
+
| **OpenAI API: compatible clients** | `http://127.0.0.1:12435/v1` by default | Server-side OpenAI Platform API key only | Private local app, SDK, or same-owner development web app |
|
|
114
|
+
| **Codex with ChatGPT: agent clients** | `ws://127.0.0.1:14500` by default | ChatGPT sign-in through Codex | Trusted native Codex/App Server client |
|
|
115
|
+
|
|
116
|
+
The OpenAI-compatible `/v1` endpoint is powered only by a Platform API key,
|
|
117
|
+
which the wizard seeds over stdin into a private, labeled Docker volume; it
|
|
118
|
+
does not create a host key file. Your app uses a
|
|
119
|
+
separate Relmio capability that the wizard displays once.
|
|
120
|
+
The bearer remains valid until it is rotated. Browser requests
|
|
121
|
+
must come from an exact origin entered during setup; wildcards are not allowed,
|
|
122
|
+
and the capability must never be embedded in a public frontend bundle. Platform
|
|
123
|
+
requests use that API project's billing, credits, limits, and permissions, not
|
|
124
|
+
a ChatGPT subscription.
|
|
125
|
+
|
|
126
|
+
ChatGPT sign-in powers only the official experimental Codex App Server JSON-RPC
|
|
127
|
+
protocol. It does not expose `/v1`, and Relmio never translates a ChatGPT
|
|
128
|
+
OAuth/session token into a general API credential. OpenAI documents the WebSocket transport as
|
|
129
|
+
experimental and unsupported for production, and it rejects browser-origin
|
|
130
|
+
connections. Use it only with a trusted native client owned by the same person.
|
|
131
|
+
Its capability is high-trust because it can operate the signed-in
|
|
132
|
+
Codex session and files inside the isolated container workspace.
|
|
133
|
+
|
|
134
|
+
Both services bind exactly to `127.0.0.1`, require the generated capability,
|
|
135
|
+
and mount no host directory or Docker socket. The Codex service gets private
|
|
136
|
+
named credential and workspace volumes. This local path does not connect to a
|
|
137
|
+
VPS or modify n8n.
|
|
138
|
+
|
|
139
|
+
Read the complete [Local Docker endpoints
|
|
140
|
+
guide](https://github.com/Demonbane18/relmio/blob/main/docs/local-endpoints.md)
|
|
141
|
+
before installing. It includes the wizard steps, client settings, exact-origin
|
|
142
|
+
rules, billing boundary, container isolation, and official OpenAI documentation
|
|
143
|
+
links. The design is documentation-backed engineering guidance, not legal
|
|
144
|
+
advice or an OpenAI approval. Codex for Open Source membership is not treated
|
|
145
|
+
as permission to broaden credential scope or bypass another agreement.
|
|
87
146
|
|
|
88
147
|
## Quick start
|
|
89
148
|
|
|
@@ -149,6 +208,10 @@ a browser.
|
|
|
149
208
|
|
|
150
209
|
### Requirements
|
|
151
210
|
|
|
211
|
+
These requirements are for the VPS/n8n path. For a local Docker endpoint, see
|
|
212
|
+
the [local endpoint
|
|
213
|
+
requirements](https://github.com/Demonbane18/relmio/blob/main/docs/local-endpoints.md#requirements).
|
|
214
|
+
|
|
152
215
|
- On macOS/Linux/WSL/Git Bash: `curl`, `awk`, `tar`, and either `sha256sum` or
|
|
153
216
|
`shasum`; Git Bash also needs `unzip`
|
|
154
217
|
- On native Windows: Command Prompt uses its built-in `curl`, `certutil`, and
|
|
@@ -169,43 +232,68 @@ n8n AI node or HTTP Request
|
|
|
169
232
|
-> upstream OpenAI service
|
|
170
233
|
```
|
|
171
234
|
|
|
172
|
-
Relmio
|
|
235
|
+
Relmio's existing VPS/n8n path provides tested setup instructions for:
|
|
173
236
|
|
|
174
237
|
- OpenAI Chat Model
|
|
175
238
|
- AI Agent
|
|
176
239
|
- Basic LLM Chain
|
|
177
240
|
- HTTP Request
|
|
178
241
|
|
|
179
|
-
The
|
|
180
|
-
|
|
181
|
-
|
|
242
|
+
The local endpoint path described above now supports compatible private apps
|
|
243
|
+
through a Platform-backed gateway and trusted native clients through Codex App
|
|
244
|
+
Server. The broader direction is to add providers and client adapters without
|
|
245
|
+
weakening their authentication boundaries or tying the public product name to
|
|
246
|
+
n8n. SuperGrok/xAI OAuth is a gated feasibility item on the
|
|
182
247
|
[provider roadmap](https://github.com/Demonbane18/relmio/blob/main/docs/roadmap.md);
|
|
183
248
|
it is not currently advertised as supported.
|
|
184
249
|
|
|
185
250
|
## Visual walkthrough
|
|
186
251
|
|
|
187
|
-
|
|
188
|
-
|
|
252
|
+
These current product screenshots use sanitized sample values wherever a setup
|
|
253
|
+
field might otherwise identify an environment. The VPS identity screen shows a
|
|
254
|
+
reserved sample address and sample SSH fingerprint; none of the images includes
|
|
255
|
+
an OAuth token, password, private key, or live wizard session URL.
|
|
256
|
+
|
|
257
|
+
### 1. Choose a hosted installation method
|
|
258
|
+
|
|
259
|
+
<img src="https://cdn.jsdelivr.net/npm/relmio@latest/docs/images/setup/00-install-methods.png" alt="Hosted Relmio installation page with macOS/Linux, Homebrew, PowerShell, Command Prompt, and NPX choices" width="720">
|
|
260
|
+
|
|
261
|
+
The hosted page starts with the installation-method selector. Run the selected
|
|
262
|
+
command locally, not on the VPS.
|
|
263
|
+
|
|
264
|
+
### 2. Complete the local ChatGPT/Codex sign-in
|
|
265
|
+
|
|
266
|
+
<img src="https://cdn.jsdelivr.net/npm/relmio@latest/docs/images/setup/01-local-sign-in-ready.png" alt="Sanitized preview-mode sample credential state, not a real saved-login confirmation" width="626">
|
|
267
|
+
|
|
268
|
+
This image shows a sanitized preview-mode sample credential state; it does not
|
|
269
|
+
confirm that a real local ChatGPT login was saved. During a real fresh login,
|
|
270
|
+
the browser confirmation states that the credentials were saved locally.
|
|
271
|
+
|
|
272
|
+
### 3. Verify the VPS identity
|
|
189
273
|
|
|
190
|
-
|
|
274
|
+
<img src="https://cdn.jsdelivr.net/npm/relmio@latest/docs/images/setup/02-vps-identity-confirmed.png" alt="VPS identity confirmation with a sanitized sample address and SSH fingerprint" width="720">
|
|
191
275
|
|
|
192
|
-
|
|
276
|
+
Confirm the SSH host fingerprint before authentication. The screenshot uses the
|
|
277
|
+
reserved sample host `vps.example.test`, a sample fingerprint, and a blank
|
|
278
|
+
password field.
|
|
193
279
|
|
|
194
|
-
###
|
|
280
|
+
### 4. Choose the detected n8n container and network
|
|
195
281
|
|
|
196
|
-
<img src="https://cdn.jsdelivr.net/npm/relmio@latest/docs/images/setup/
|
|
282
|
+
<img src="https://cdn.jsdelivr.net/npm/relmio@latest/docs/images/setup/03-n8n-detected.png" alt="Detected n8n container and shared Docker network" width="720">
|
|
197
283
|
|
|
198
|
-
|
|
284
|
+
Discovery is read-only; choose the existing n8n container and shared Docker
|
|
285
|
+
network.
|
|
199
286
|
|
|
200
|
-
|
|
287
|
+
### 5. Review the exact sidecar-only plan
|
|
201
288
|
|
|
202
|
-
|
|
289
|
+
<img src="https://cdn.jsdelivr.net/npm/relmio@latest/docs/images/setup/04-install-plan.png" alt="Exact sidecar-only installation plan, including forbidden actions" width="720">
|
|
203
290
|
|
|
204
|
-
|
|
291
|
+
The plan names the allowed sidecar work and explicitly excludes edits or
|
|
292
|
+
restarts of n8n, a published host port, and a Traefik route.
|
|
205
293
|
|
|
206
|
-
###
|
|
294
|
+
### 6. Copy the verified n8n settings
|
|
207
295
|
|
|
208
|
-
<img src="https://cdn.jsdelivr.net/npm/relmio@latest/docs/images/setup/05-bridge-ready.png" alt="
|
|
296
|
+
<img src="https://cdn.jsdelivr.net/npm/relmio@latest/docs/images/setup/05-bridge-ready.png" alt="Private bridge ready screen with n8n OpenAI credential settings" width="720">
|
|
209
297
|
|
|
210
298
|
Use these values in an n8n OpenAI credential:
|
|
211
299
|
|
|
@@ -265,7 +353,8 @@ has the importable cURL version.
|
|
|
265
353
|
- Relmio never edits, rebuilds, recreates, stops, or restarts the existing n8n
|
|
266
354
|
container.
|
|
267
355
|
- This is an unofficial community project, not affiliated with or endorsed by
|
|
268
|
-
OpenAI, xAI,
|
|
356
|
+
OpenAI, xAI, n8n, Hostinger, Telegram, or AppBuildersPH. Provider access,
|
|
357
|
+
models, limits, and policies can change.
|
|
269
358
|
- Use it only where your account, subscription, provider terms, and applicable
|
|
270
359
|
policies allow.
|
|
271
360
|
|
|
@@ -315,6 +404,7 @@ OpenAI may change or disable the underlying services at any time.
|
|
|
315
404
|
## Documentation
|
|
316
405
|
|
|
317
406
|
- [Complete GitHub README and manual fallback](https://github.com/Demonbane18/relmio#readme)
|
|
407
|
+
- [Local Docker endpoints](https://github.com/Demonbane18/relmio/blob/main/docs/local-endpoints.md)
|
|
318
408
|
- [Configure n8n AI and HTTP nodes](https://github.com/Demonbane18/relmio/blob/main/docs/n8n-configuration.md)
|
|
319
409
|
- [Troubleshooting](https://github.com/Demonbane18/relmio/blob/main/docs/troubleshooting.md)
|
|
320
410
|
- [Security and limitations](https://github.com/Demonbane18/relmio/blob/main/docs/security.md)
|
package/docs/architecture.md
CHANGED
|
@@ -17,6 +17,52 @@ flowchart LR
|
|
|
17
17
|
S --> C["OpenAI service used by<br>the upstream helper"]
|
|
18
18
|
```
|
|
19
19
|
|
|
20
|
+
## Local endpoint architecture
|
|
21
|
+
|
|
22
|
+
The local installer is a separate path in the same browser wizard. It uses the
|
|
23
|
+
local Docker Engine and never opens SSH, writes to a VPS, or changes the
|
|
24
|
+
existing n8n sidecar project.
|
|
25
|
+
|
|
26
|
+
```mermaid
|
|
27
|
+
flowchart LR
|
|
28
|
+
B["Local browser<br>127.0.0.1"] --> W["Local Node wizard"]
|
|
29
|
+
W --> D["Local Docker Engine"]
|
|
30
|
+
D --> G["OpenAI-compatible gateway<br>127.0.0.1:12435/v1"]
|
|
31
|
+
D --> A["Codex App Server<br>127.0.0.1:14500"]
|
|
32
|
+
G -->|"Platform API key"| P["OpenAI Platform API"]
|
|
33
|
+
A -->|"Official Codex sign-in"| C["ChatGPT/Codex service"]
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
The two services are intentionally not interchangeable:
|
|
37
|
+
|
|
38
|
+
| Target | Wire protocol | Upstream credential |
|
|
39
|
+
|---|---|---|
|
|
40
|
+
| `openai-api` | OpenAI-compatible HTTP `/v1` | OpenAI Platform API key |
|
|
41
|
+
| `codex-chatgpt` | Official Codex App Server JSON-RPC | ChatGPT sign-in managed by Codex |
|
|
42
|
+
|
|
43
|
+
Relmio never adapts a ChatGPT/Codex credential into the local `/v1` gateway.
|
|
44
|
+
The OpenAI gateway replaces the caller's Relmio capability with the
|
|
45
|
+
protected Platform key only at the upstream boundary. The Codex service keeps
|
|
46
|
+
the native initialization, thread, turn, approval, and event protocol.
|
|
47
|
+
|
|
48
|
+
Both projects publish exactly one literal `127.0.0.1` binding and require a
|
|
49
|
+
generated bearer capability. Their managed roots are
|
|
50
|
+
`~/.relmio/local/openai-api` and `~/.relmio/local/codex-chatgpt`. The Codex
|
|
51
|
+
credential and workspace use private named Docker volumes; no host directory
|
|
52
|
+
or Docker socket is mounted. See [Local Docker endpoints](local-endpoints.md)
|
|
53
|
+
for setup and trust limitations.
|
|
54
|
+
|
|
55
|
+
Before installation, Relmio resolves the selected Docker context to a local
|
|
56
|
+
Unix socket and pins that exact socket on every later Docker command. Remote
|
|
57
|
+
Docker contexts and Docker environment overrides are rejected. Each endpoint
|
|
58
|
+
gets a random installation ID, a unique Compose project name, and matching
|
|
59
|
+
ownership labels; existing resources must attest to that identity before an
|
|
60
|
+
update or recovery action can run.
|
|
61
|
+
|
|
62
|
+
The local endpoint installer supports macOS, Linux, and Linux under WSL2.
|
|
63
|
+
Native Windows is rejected before filesystem or Docker mutation because this
|
|
64
|
+
release relies on owner-only POSIX modes for managed credentials.
|
|
65
|
+
|
|
20
66
|
## Why this integration is possible
|
|
21
67
|
|
|
22
68
|
The design combines four existing interfaces rather than changing n8n:
|
|
@@ -114,6 +160,9 @@ sidecar authenticates upstream with the mounted OAuth file.
|
|
|
114
160
|
- [Docker Compose networking](https://docs.docker.com/compose/how-tos/networking/)
|
|
115
161
|
- [Docker Compose `expose`](https://docs.docker.com/reference/compose-file/services/#expose)
|
|
116
162
|
- [Docker port publishing](https://docs.docker.com/engine/network/port-publishing/)
|
|
163
|
+
- [OpenAI API authentication](https://developers.openai.com/api/reference/overview#authentication)
|
|
164
|
+
- [Codex authentication](https://learn.chatgpt.com/docs/auth)
|
|
165
|
+
- [Codex App Server](https://learn.chatgpt.com/docs/app-server)
|
|
117
166
|
|
|
118
167
|
## Failure behavior
|
|
119
168
|
|
|
@@ -125,3 +174,11 @@ sidecar authenticates upstream with the mounted OAuth file.
|
|
|
125
174
|
- A failed build or start does not trigger an n8n action.
|
|
126
175
|
- An unexpected host-port mapping causes verification to fail.
|
|
127
176
|
- The SSH connection closes after installation or when the wizard stops.
|
|
177
|
+
- A local port collision blocks a new local install or port change.
|
|
178
|
+
- An existing unmanaged or symlinked local path is never overwritten.
|
|
179
|
+
- A local service fails verification unless Docker reports the exact planned
|
|
180
|
+
`127.0.0.1` publication.
|
|
181
|
+
- A remote Docker context, inherited Docker selector, foreign Compose resource,
|
|
182
|
+
or mismatched managed identity blocks local mutation.
|
|
183
|
+
- A Codex login failure returns a sanitized status without returning App
|
|
184
|
+
Server output or ChatGPT tokens.
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|