relmio 0.6.0 → 0.8.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 CHANGED
@@ -7,6 +7,57 @@ checks the registry separately after publication.
7
7
 
8
8
  ## Unreleased
9
9
 
10
+ ## [0.8.0] - 2026-08-26
11
+
12
+ ### Added
13
+
14
+ - Let trusted local backends and development servers receive Chat Adapter turns
15
+ as opt-in Server-Sent Events, with progress and text deltas followed by one
16
+ explicit terminal outcome so a completed response is distinguishable from a
17
+ redacted failure.
18
+ - Let the setup-token-protected local wizard tester show that incremental
19
+ response flow after a short-lived encrypted credential handoff, without a
20
+ direct browser-to-adapter request.
21
+ - Refresh the hosted chat experience and local installer presentation, and
22
+ adopt the Harbor Gate abstract mark across Relmio surfaces.
23
+
24
+ ### Changed
25
+
26
+ - Document the streaming contract, local tester behavior, and its limits in the
27
+ canonical endpoint/reference guides and generated hosted documentation.
28
+
29
+ ### Security
30
+
31
+ - Keep the Chat Adapter experimental, loopback-only, and limited to trusted
32
+ local backends or development servers; it rejects browser origins and is not
33
+ an OpenAI `/v1` endpoint or a substitute for an OpenAI Platform API key.
34
+
35
+ ## [0.7.0] - 2026-08-16
36
+
37
+ ### Added
38
+
39
+ - Add an encrypted in-wizard tester for the experimental Chat Adapter, plus
40
+ safe sample Chat Adapter and Codex App Server commands for local testing.
41
+ - Add generated hosted guides for getting started, local endpoints, VPS and
42
+ n8n, troubleshooting, FAQ, security, and reference information.
43
+
44
+ ### Changed
45
+
46
+ - Synchronize concise root and npm READMEs around product, installation,
47
+ security, and common-problem overviews that link to hosted guides.
48
+ - Fact-check ChatGPT/Codex token-refresh guidance across documentation: tokens
49
+ refresh during active use, the official documentation specifies no fixed
50
+ 10-day lifetime, and the provider credential remains distinct from Relmio's
51
+ rotatable client capability.
52
+
53
+ ### Security
54
+
55
+ - Limit tester destinations to literal loopback HTTP addresses, retain private
56
+ keys only in memory for a bounded lifetime, encrypt entered credentials
57
+ before they cross the browser boundary, require POST after a completed Chat
58
+ Adapter install, keep sample bearer values out of process arguments, and
59
+ erase or abort sessions when forgotten, rotated, or shut down.
60
+
10
61
  ## [0.6.0] - 2026-08-15
11
62
 
12
63
  ### Added
package/README.md CHANGED
@@ -1,448 +1,66 @@
1
- <div align="center">
2
- <img src="https://cdn.jsdelivr.net/npm/relmio@latest/docs/images/brand/relmio-mark.svg" alt="Relmio logo" width="88">
3
- <h1>Relmio</h1>
4
- <p>Set up private n8n relays, Platform-key OpenAI-compatible local endpoints, and experimental Codex App Server sessions.</p>
5
- <p>
6
- <a href="https://github.com/Demonbane18/relmio">Full guide</a>
7
- &nbsp;·&nbsp;
8
- <a href="https://relmio.vercel.app/">Hosted ChatGPT site</a>
9
- &nbsp;·&nbsp;
10
- <a href="https://github.com/Demonbane18/relmio/issues/new">Report an issue</a>
11
- &nbsp;·&nbsp;
12
- <a href="https://github.com/Demonbane18/relmio/blob/main/docs/roadmap.md">Roadmap</a>
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>
17
- </div>
1
+ # Relmio
18
2
 
19
- ## See it working first
3
+ This package starts Relmio's local setup wizard for a private n8n sidecar or a
4
+ loopback-only local endpoint. It supports Node.js 22 or newer.
20
5
 
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>
30
-
31
- <figure>
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>
34
- </figure>
35
-
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>
40
-
41
- <figure>
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>
44
- </figure>
45
-
46
- Relmio is a local browser wizard with separate setup paths. Its existing
47
- VPS/n8n path installs a private
48
- [openai-oauth](https://github.com/EvanZhouDev/openai-oauth) Docker sidecar
49
- beside an existing self-hosted n8n instance. Its local Docker path can install
50
- an OpenAI-compatible gateway backed by a Platform API key, the official Codex
51
- App Server, or a small server-side Codex chat adapter backed by ChatGPT
52
- sign-in.
53
-
54
- The existing n8n image, Compose file, container, and workflows stay untouched.
55
-
56
- A sidecar is a small helper program that runs beside a larger program. Relmio's
57
- private sidecar adds ChatGPT/Codex sign-in and request translation while your
58
- existing n8n stays unchanged. This follows the sidecar pattern described in
59
- [Justin Rice's beginner-friendly overview](https://medium.com/@justinricedev/what-is-a-software-sidecar-8f89feff09f9).
60
-
61
- Think of it like a motorcycle gaining a sidecar: together they become a
62
- tricycle with extra seats. n8n is the motorcycle; Relmio is the sidecar that
63
- adds the missing capability without changing n8n.
64
-
65
- Try the hosted browser demo at
66
- [relmio.vercel.app](https://relmio.vercel.app/). It is a separate
67
- request-bound ChatGPT experience; the npm package remains the local wizard for
68
- the private VPS/n8n sidecar and the separate local Docker endpoint paths.
69
-
70
- > **Warning — Hosted chat requires the browser extension.** Install the
71
- > open-source [Sign in with ChatGPT extension for
72
- > Chrome](https://chromewebstore.google.com/detail/sign-in-with-chatgpt/odbgboachaefbbbdiffcefhpkekhfcna)
73
- > or [Firefox](https://addons.mozilla.org/firefox/addon/sign-in-with-chatgpt/)
74
- > before connecting. If the hosted chat stays disconnected, confirm the
75
- > extension is installed and enabled, reload the page, and select **Connect
76
- > ChatGPT** again.
77
-
78
- > The local npm wizard uses its own `localhost:1455` callback instead. If an
79
- > OAuth extension captures that callback, temporarily disable it during local sign-in,
80
- > complete the wizard sign-in, and then re-enable it.
81
-
82
- While a fresh local login is pending, **Stop sign-in** terminates the helper
83
- Relmio started before allowing another attempt. Results from older tabs are
84
- rejected after a replacement starts. If cleanup cannot be confirmed, retry
85
- remains disabled; close the wizard and OAuth helper, then restart Relmio.
86
-
87
- <figure>
88
- <img src="https://cdn.jsdelivr.net/npm/relmio@latest/docs/images/examples/hosted-chat-connected.png" alt="Relmio hosted chat showing a connected ChatGPT session and a ready prompt field" width="720">
89
- <figcaption>Successful hosted-chat state: the browser extension completed the OAuth handoff and Relmio shows the ChatGPT session as connected.</figcaption>
90
- </figure>
91
-
92
- Use the site's [Install wizard](https://relmio.vercel.app/install) page for a
93
- clickable macOS/Linux, Homebrew, PowerShell, Command Prompt, and NPX command switcher
94
- tailored to the current self-hosted n8n and Hostinger VPS setup path.
95
-
96
- ### Browser interface and theme modes
97
-
98
- The hosted site and local wizard keep the original Relmio relay layout while
99
- adding a compact **System / Light / Dark** appearance control. System follows
100
- the computer's preference; Light and Dark are remembered on that browser only.
101
- On desktop, the local wizard keeps progress and sidecar-only safety notes in a
102
- persistent rail beside the active task; its compact fixed-screen shell avoids
103
- document scrolling on common laptop screens. On narrow phones, it switches to
104
- a horizontal progress strip and keeps task scrolling inside the active panel.
105
- Both the hosted site and local wizard keep Ko-fi support, GitHub stars, and the
106
- current Relmio version visible beside the appearance control.
107
-
108
- ## Local Docker endpoints
109
-
110
- Choose **Local endpoints** in the browser wizard to install one of these
111
- Docker services on the same computer as your app:
112
-
113
- This local Docker path supports macOS, Linux, and Linux under WSL2. Native
114
- Windows is not supported in this release because its filesystem permissions do
115
- not provide the owner-only POSIX mode guarantees used for local credentials.
116
- The existing VPS/n8n wizard remains available from native Windows.
117
-
118
- | Option | Local endpoint | Provider credential | Client type |
119
- |---|---|---|---|
120
- | **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 |
121
- | **Codex with ChatGPT: agent clients** | `ws://127.0.0.1:14500` by default | ChatGPT sign-in through Codex | Trusted native Codex/App Server client |
122
- | **Codex Chat Adapter: development backends** | `http://127.0.0.1:14501/chat` by default | ChatGPT sign-in through Codex | Trusted local backend or development server |
123
-
124
- The Chat Adapter starts each model turn with network access disabled and an
125
- explicit filesystem policy that permits only Codex's minimal runtime files and
126
- the empty private workspace. The model-accessible sandbox denies
127
- `/home/node/.codex`, where the official Codex client keeps its ChatGPT session.
128
- The adapter bearer must stay in your server-side development environment,
129
- never browser code.
130
-
131
- The OpenAI-compatible `/v1` endpoint is powered only by a Platform API key,
132
- which the wizard seeds over stdin into a private, labeled Docker volume; it
133
- does not create a host key file. Your app uses a
134
- separate Relmio capability that the wizard displays once.
135
- The bearer remains valid until it is rotated. After installation, use
136
- **Rotate client credential** on the Ready screen to replace only that local
137
- capability. Relmio shows the new one-time credential before activation, verifies
138
- the replacement endpoint, and preserves the upstream Platform API key or Codex
139
- credential/workspace volumes. If replacement cannot be verified, Relmio attempts
140
- to restore the previous verifier and re-attest service readiness. It does not
141
- retain the previous raw client credential to replay it during rollback. If
142
- rollback cannot be confirmed, it targets only the exact managed service for
143
- shutdown and reports whether that stopped state could be verified. Browser requests
144
- must come from an exact origin entered during setup; wildcards are not allowed,
145
- and the capability must never be embedded in a public frontend bundle. Platform
146
- requests use that API project's billing, credits, limits, and permissions, not
147
- a ChatGPT subscription.
148
-
149
- ChatGPT sign-in powers Codex, not the OpenAI Platform API. The native target
150
- keeps the official experimental App Server JSON-RPC protocol. The separate
151
- adapter offers only Relmio's `POST /chat` request and returns a conversation ID
152
- plus final text; it is not `/v1/chat/completions`, `/v1/responses`, or an
153
- OpenAI SDK replacement. A local backend can keep its Relmio bearer secret while
154
- a browser calls that backend. Direct browser-origin requests to both Codex
155
- targets are rejected.
156
-
157
- OpenAI documents the underlying App Server WebSocket transport as experimental
158
- and unsupported for production. The raw App Server capability is especially
159
- high-trust because it can operate the signed-in Codex session and files inside
160
- the isolated container workspace. Keep either target loopback-only, same-owner,
161
- and limited to local development.
162
-
163
- All three services bind exactly to `127.0.0.1`, require the generated capability,
164
- and mount no host directory or Docker socket. Each Codex target gets its own
165
- private named credential and workspace volumes. This local path does not
166
- connect to a VPS or modify n8n.
167
-
168
- Read the complete [Local Docker endpoints
169
- guide](https://github.com/Demonbane18/relmio/blob/main/docs/local-endpoints.md)
170
- before installing. It includes the wizard steps, client settings, exact-origin
171
- rules, billing boundary, container isolation, and official OpenAI documentation
172
- links. The design is documentation-backed engineering guidance, not legal
173
- advice or an OpenAI approval. Codex for Open Source membership is not treated
174
- as permission to broaden credential scope or bypass another agreement.
175
-
176
- ## Quick start
177
-
178
- Choose the terminal already on your own computer. Do not run these commands on
179
- the VPS.
180
-
181
- ### macOS, Linux, WSL, or Git Bash
182
-
183
- ```bash
184
- curl -fsSL https://relmio.vercel.app/install.sh | sh
185
- ```
186
-
187
- ### Homebrew (macOS or Linux)
188
-
189
- ```bash
190
- brew tap Demonbane18/relmio && brew install relmio
191
- ```
192
-
193
- ### Windows PowerShell
194
-
195
- ```powershell
196
- irm https://relmio.vercel.app/install.ps1 | iex
197
- ```
198
-
199
- ### Windows Command Prompt
200
-
201
- ```bat
202
- for /f "delims=" %F in ("%TEMP%\relmio-install-%RANDOM%-%RANDOM%-%RANDOM%.cmd") do @if exist "%~F" (exit /b 80) else curl -fsSL --remove-on-error https://relmio.vercel.app/install.cmd -o "%~F" && set "RELMIO_SELF_DELETE=%~F" && call "%~F"
203
- ```
204
-
205
- No Node.js or Git Bash installation is required first. The
206
- [POSIX](https://github.com/Demonbane18/relmio/blob/main/web/public/install.sh)
207
- and [Windows PowerShell](https://github.com/Demonbane18/relmio/blob/main/web/public/install.ps1)
208
- bootstraps, plus the PowerShell-free [Command Prompt](https://github.com/Demonbane18/relmio/blob/main/web/public/install.cmd)
209
- bootstrap, reuse Node.js 22 or newer when available. Otherwise they show
210
- staged **Please wait** messages while they download the matching current
211
- official Node.js 22 runtime to a private temporary directory, verify its
212
- SHA-256 checksum, run Relmio with npm lifecycle scripts disabled, and remove
213
- the temporary runtime when the wizard closes. The Command Prompt path runs as
214
- the current user and does not request administrator access or change Windows
215
- security policy.
216
-
217
- Homebrew is available from the public `Demonbane18/relmio` tap. The WinGet
218
- command stays hidden until Microsoft accepts its catalog pull request and the
219
- catalog updates. Until then, use Homebrew or a direct installer above.
220
-
221
- Users who already have Node.js 22 or newer can run the npm package directly:
222
-
223
- ### NPX (requires Node.js 22+)
6
+ ## Quick install
224
7
 
225
8
  ```bash
226
9
  npx --yes --ignore-scripts relmio@latest
227
10
  ```
228
11
 
229
- Keep the active setup terminal open while using the wizard. If the page says
230
- the wizard link is incomplete, close that tab and open the full `Local wizard:`
231
- URL printed by the current terminal instead of refreshing the stripped page.
232
-
233
- If the browser does not open automatically, press Enter in an interactive
234
- terminal to open it again. The printed `Local wizard:` URL remains the fallback
235
- for a terminal that cannot accept input or when the launcher still cannot open
236
- a browser.
237
-
238
- ### Requirements
239
-
240
- These requirements are for the VPS/n8n path. For a local Docker endpoint, see
241
- the [local endpoint
242
- requirements](https://github.com/Demonbane18/relmio/blob/main/docs/local-endpoints.md#requirements).
243
-
244
- - On macOS/Linux/WSL/Git Bash: `curl`, `awk`, `tar`, and either `sha256sum` or
245
- `shasum`; Git Bash also needs `unzip`
246
- - On native Windows: Command Prompt uses its built-in `curl`, `certutil`, and
247
- `tar` tools; Windows PowerShell 5.1 or PowerShell 7 remains an alternative
248
- bootstrap
249
- - A browser and an eligible ChatGPT/Codex account
250
- - A self-hosted n8n Docker deployment on a VPS
251
- - Docker Compose v2, SSH access, and a Docker network shared with n8n
252
-
253
- Back up your n8n workflows before granting any tool VPS access.
254
-
255
- ## What you get
256
-
257
- ```text
258
- n8n AI node or HTTP Request
259
- -> private Docker endpoint: http://n8n-openai-oauth:10531/v1
260
- -> protected ChatGPT/Codex OAuth session
261
- -> upstream OpenAI service
262
- ```
263
-
264
- Relmio's existing VPS/n8n path provides tested setup instructions for:
265
-
266
- - OpenAI Chat Model
267
- - AI Agent
268
- - Basic LLM Chain
269
- - HTTP Request
270
-
271
- The local endpoint path described above now supports compatible private apps
272
- through a Platform-backed gateway and trusted native clients through Codex App
273
- Server. The broader direction is to add providers and client adapters without
274
- weakening their authentication boundaries or tying the public product name to
275
- n8n. SuperGrok/xAI OAuth is a gated feasibility item on the
276
- [provider roadmap](https://github.com/Demonbane18/relmio/blob/main/docs/roadmap.md);
277
- it is not currently advertised as supported.
278
-
279
- ## Visual walkthrough
280
-
281
- These current product screenshots use sanitized sample values wherever a setup
282
- field might otherwise identify an environment. The VPS identity screen shows a
283
- reserved sample address and sample SSH fingerprint; none of the images includes
284
- an OAuth token, password, private key, or live wizard session URL.
285
-
286
- ### 1. Choose a hosted installation method
12
+ The wizard opens a private `127.0.0.1` page, verifies Docker, and requires a
13
+ final confirmation before it writes files or deploys a VPS sidecar.
287
14
 
288
- <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">
15
+ ## What it can install
289
16
 
290
- The hosted page starts with the installation-method selector. Run the selected
291
- command locally, not on the VPS.
17
+ | Option | Contract | Credential boundary |
18
+ | --- | --- | --- |
19
+ | Local OpenAI gateway | OpenAI-compatible `/v1` | Your OpenAI Platform API key |
20
+ | Codex App Server | Experimental JSON-RPC/WebSocket | ChatGPT sign-in and a high-trust local capability |
21
+ | Codex Chat Adapter | Experimental `POST /chat` (JSON or opt-in SSE) | ChatGPT sign-in and a bearer for trusted local backends |
22
+ | n8n sidecar | Private Docker-network `/v1` bridge | A local ChatGPT sign-in file, never a host port |
292
23
 
293
- ### 2. Complete the local ChatGPT/Codex sign-in
294
-
295
- <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">
296
-
297
- This image shows a sanitized preview-mode sample credential state; it does not
298
- confirm that a real local ChatGPT login was saved. During a real fresh login,
299
- the browser confirmation states that the credentials were saved locally.
300
-
301
- ### 3. Verify the VPS identity
302
-
303
- <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">
304
-
305
- Confirm the SSH host fingerprint before authentication. The screenshot uses the
306
- reserved sample host `vps.example.test`, a sample fingerprint, and a blank
307
- password field.
308
-
309
- ### 4. Choose the detected n8n container and network
310
-
311
- <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">
312
-
313
- Discovery is read-only; choose the existing n8n container and shared Docker
24
+ ChatGPT sign-in does not become an OpenAI Platform API key. Codex transports
25
+ are not generic `/v1` services and should never be exposed on a LAN or public
314
26
  network.
315
27
 
316
- ### 5. Review the exact sidecar-only plan
317
-
318
- <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">
319
-
320
- The plan names the allowed sidecar work and explicitly excludes edits or
321
- restarts of n8n, a published host port, and a Traefik route.
322
-
323
- ### 6. Copy the verified n8n settings
324
-
325
- <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">
326
-
327
- Use these values in an n8n OpenAI credential:
328
-
329
- ```text
330
- API Key: local-only
331
- Base URL: http://n8n-openai-oauth:10531/v1
332
- Organization ID: leave empty
333
- Add Custom Header: Off
334
- ```
335
-
336
- The `local-only` value is a placeholder required by n8n. It is not an OpenAI
337
- Platform API key.
338
-
339
- For an n8n **HTTP Request** node, use **Generic Credential Type** → **Bearer
340
- Auth**, name the credential `openai-oauth`, and enter `local-only` as the
341
- bearer token. Enable **Send Headers** with `Content-Type: application/json`,
342
- then enable **Send Body** → **JSON** → **Using JSON** and paste:
343
-
344
- ```json
345
- {
346
- "model": "gpt-5.6-sol",
347
- "messages": [
348
- {
349
- "role": "user",
350
- "content": "What is a robot?"
351
- }
352
- ],
353
- "response_format": {
354
- "type": "json_schema",
355
- "json_schema": {
356
- "name": "answer",
357
- "schema": {
358
- "type": "object",
359
- "properties": {
360
- "content": { "type": "string" }
361
- },
362
- "required": ["content"],
363
- "additionalProperties": false
364
- },
365
- "strict": true
366
- }
367
- }
368
- }
369
- ```
370
-
371
- Use `POST http://n8n-openai-oauth:10531/v1/chat/completions` as the URL. The
372
- local wizard's **Copy HTTP request recipe** action supplies the same fields.
373
- Replace the model only if the wizard reports a different ID. The full guide
374
- has the importable cURL version.
375
-
376
- ## Important boundaries
377
-
378
- - Relmio does not create an OpenAI Platform API key.
379
- - The OAuth file is a password-equivalent secret; never commit or share it.
380
- - The sidecar endpoint stays inside the Docker network. Port `10531` must not
381
- be published on the VPS host.
382
- - Relmio never edits, rebuilds, recreates, stops, or restarts the existing n8n
383
- container.
384
- - This is an unofficial community project, not affiliated with or endorsed by
385
- OpenAI, xAI, n8n, Hostinger, Telegram, or AppBuildersPH. Provider access,
386
- models, limits, and policies can change.
387
- - Use it only where your account, subscription, provider terms, and applicable
388
- policies allow.
389
-
390
- ## How it works
391
-
392
- OpenAI's Codex CLI uses authenticated endpoints at
393
- `chatgpt.com/backend-api/codex` to run models with a ChatGPT account. Relmio
394
- uses the same OAuth credential shape through the upstream
395
- [`openai-oauth`](https://github.com/EvanZhouDev/openai-oauth) helper to expose
396
- an OpenAI-compatible path without creating an OpenAI Platform API key or
397
- requiring separate API credits. The upstream service and its access rules may
398
- change.
399
-
400
- ### Foundation and attribution
401
-
402
- Relmio is built on [`openai-oauth`](https://github.com/EvanZhouDev/openai-oauth)
403
- by Evan Zhou Dev. That upstream SDK/helper provides the foundation for ChatGPT
404
- login in local apps and Sign in with ChatGPT flows; Relmio wraps it with n8n
405
- discovery, verified SSH/SFTP deployment, Docker networking, and
406
- OpenAI-compatible configuration. Review the upstream project for its own
407
- license, notices, and supported behavior.
408
-
409
- ## Known limitations
410
-
411
- - Only models supported by Codex are available. The list changes over time and
412
- depends on your ChatGPT plan.
413
- - The CLI `/v1/responses` endpoint is stateless. Callers must send the full
414
- conversation history; stateful replay is not provided.
415
- - Hosted browser sign-in currently supports Chrome and Firefox. Safari is not
416
- yet supported by the upstream Sign in with ChatGPT flow.
417
-
418
- ## Legal
419
-
420
- Relmio and `openai-oauth` are unofficial, community-maintained projects and
421
- are not affiliated with, endorsed by, or sponsored by OpenAI.
422
-
423
- ChatGPT OAuth credentials should be treated like passwords. Use your own
424
- account, keep credentials private, and never pool, share, or redistribute
425
- access tokens. Do not bypass rate limits, restrictions, or safeguards.
426
-
427
- You are responsible for complying with OpenAI's [Terms of
428
- Use](https://openai.com/policies/terms-of-use/), [Usage
429
- Policies](https://openai.com/policies/usage-policies/), and any agreement that
430
- applies to your account. This project is provided as-is without warranties;
431
- OpenAI may change or disable the underlying services at any time.
432
-
433
- ## Documentation
434
-
435
- - [Complete GitHub README and manual fallback](https://github.com/Demonbane18/relmio#readme)
436
- - [Local Docker endpoints](https://github.com/Demonbane18/relmio/blob/main/docs/local-endpoints.md)
437
- - [Configure n8n AI and HTTP nodes](https://github.com/Demonbane18/relmio/blob/main/docs/n8n-configuration.md)
438
- - [Troubleshooting](https://github.com/Demonbane18/relmio/blob/main/docs/troubleshooting.md)
439
- - [Security and limitations](https://github.com/Demonbane18/relmio/blob/main/docs/security.md)
440
- - [Refresh, upgrade, rollback, and uninstall](https://github.com/Demonbane18/relmio/blob/main/docs/maintenance.md)
441
- - [Changelog](https://github.com/Demonbane18/relmio/blob/main/CHANGELOG.md)
442
-
443
- ## License
444
-
445
- [Apache License 2.0](https://github.com/Demonbane18/relmio/blob/main/LICENSE).
446
- See the package
447
- [NOTICE](https://github.com/Demonbane18/relmio/blob/main/NOTICE) for the
448
- upstream `openai-oauth` attribution.
28
+ The experimental Chat Adapter's SSE stream succeeds only after its
29
+ `terminal: completed` event. Its local tester stays behind the setup-token-
30
+ protected wizard and uses a short-lived encrypted credential handoff, never a
31
+ direct browser-to-adapter request.
32
+
33
+ ## ChatGPT sign-in lifetime
34
+
35
+ ChatGPT/Codex sign-in tokens expire, but the official Codex client refreshes
36
+ them automatically during active use before they expire, so active sessions
37
+ usually continue without another browser login. The official [OpenAI
38
+ authentication documentation](https://learn.chatgpt.com/docs/auth) does not
39
+ publish a fixed 10-day lifetime; do not plan around one. This provider
40
+ credential is separate from Relmio's local capability, which remains valid
41
+ until you rotate it.
42
+
43
+ ## Common problems
44
+
45
+ 1. **Docker is not running:** start Docker Desktop or Docker Engine with
46
+ Compose, then open a fresh wizard. See
47
+ https://relmio.vercel.app/docs/troubleshooting#docker-is-not-running.
48
+ 2. **Authentication fails:** close stale sign-in tabs and use only the newest
49
+ local wizard URL printed by the active terminal. See
50
+ https://relmio.vercel.app/docs/troubleshooting#authentication-fails.
51
+ 3. **Local image build failed:** check Docker, disk space, and registry
52
+ connectivity; the browser intentionally does not reveal Docker stderr or
53
+ local paths.
54
+
55
+ Full guides use absolute HTTPS links:
56
+
57
+ - https://relmio.vercel.app/docs/getting-started
58
+ - https://relmio.vercel.app/docs/local-endpoints
59
+ - https://relmio.vercel.app/docs/vps-and-n8n
60
+ - https://relmio.vercel.app/docs/troubleshooting#local-image-build-failed
61
+ - https://relmio.vercel.app/docs/security
62
+ - https://relmio.vercel.app/docs/reference
63
+
64
+ Source and issues: https://github.com/Demonbane18/relmio
65
+
66
+ License: Apache-2.0
package/docs/brand.md CHANGED
@@ -12,11 +12,12 @@ applications.
12
12
 
13
13
  ![Relmio mark](images/brand/relmio-mark.svg)
14
14
 
15
- Two independent lanes converge around a right-facing negative-space arrow. The
16
- shape represents an authenticated upstream connection being relayed through a
17
- single compatible interface.
15
+ The **Harbor Gate** mark uses two distinct boundaries around an open passage.
16
+ Its teal entry stands upright while the ink route bends outward, representing
17
+ a local credential boundary and a controlled path for requests and responses.
18
+ The silhouette stays recognizable at favicon size without provider branding.
18
19
 
19
- The mark was developed from the checked-in generated concept source at
20
+ The abstract mark was developed from the checked-in generated concept source at
20
21
  [`images/brand/relmio-concept-source.png`](images/brand/relmio-concept-source.png)
21
22
  and redrawn as compact SVG geometry for reliable rendering at small sizes.
22
23
 
package/docs/faq.md ADDED
@@ -0,0 +1,45 @@
1
+ # Frequently asked questions
2
+
3
+ ## Does a ChatGPT plan include a Platform API key?
4
+
5
+ No. The OpenAI-compatible `/v1` local endpoint uses a user-supplied OpenAI
6
+ Platform API key, with Platform billing. ChatGPT sign-in is only for the
7
+ experimental Codex paths and is never represented as generic `/v1`
8
+ authorization.
9
+
10
+ ## How long does a ChatGPT/Codex sign-in token last?
11
+
12
+ ChatGPT/Codex sign-in tokens expire, but the official Codex client refreshes
13
+ them automatically during active use before they expire, so active sessions
14
+ usually continue without another browser login. The official [OpenAI
15
+ authentication documentation](https://learn.chatgpt.com/docs/auth) does not
16
+ publish a fixed 10-day lifetime; do not plan around one. This provider
17
+ credential is separate from Relmio's local capability, which remains valid
18
+ until you rotate it.
19
+
20
+ ## Can I expose the local endpoints to my network?
21
+
22
+ No. Relmio's local endpoint plans bind only to `127.0.0.1`. Do not reverse
23
+ proxy or port-forward the Codex targets. They are intended only for the local
24
+ machine and their stated trusted-client boundary.
25
+
26
+ ## Why does the Chat Adapter reject browser requests?
27
+
28
+ The adapter deliberately has no CORS support and rejects requests with an
29
+ `Origin` header. It is for a trusted local backend or development server, not
30
+ browser bundles. The in-wizard tester is the one narrow exception: the browser
31
+ talks only to the setup-token-protected wizard, which makes the server-side
32
+ adapter request without an `Origin` header.
33
+
34
+ ## Is the in-wizard tester end-to-end encrypted?
35
+
36
+ No. It uses an expiring in-memory RSA-OAEP key to reduce accidental credential
37
+ transit and storage exposure between the wizard page and local server. It does
38
+ not protect against a compromised browser, extension, or local machine, and it
39
+ does not provide encryption at rest or end-to-end encryption.
40
+
41
+ ## Can Relmio modify my n8n deployment?
42
+
43
+ No. It deploys a distinct sidecar only after you approve the displayed plan.
44
+ It does not edit existing n8n Compose files or images and never publishes port
45
+ `10531` on the VPS host.