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 +51 -0
- package/README.md +54 -436
- package/docs/brand.md +5 -4
- package/docs/faq.md +45 -0
- package/docs/getting-started.md +38 -0
- package/docs/images/brand/relmio-mark.svg +2 -8
- package/docs/local-endpoints-spec.md +27 -0
- package/docs/local-endpoints.md +72 -11
- package/docs/reference.md +94 -0
- package/docs/security.md +34 -0
- package/docs/troubleshooting.md +33 -0
- package/docs/vps-and-n8n.md +30 -0
- package/package.json +1 -1
- package/src/gateway/codex-chat.js +103 -2
- package/src/services/local-chat-test.js +501 -0
- package/src/ui/local.css +196 -1
- package/src/ui/local.html +113 -5
- package/src/ui/local.js +395 -1
- package/src/web/server.js +203 -1
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
|
-
|
|
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
|
-
·
|
|
8
|
-
<a href="https://relmio.vercel.app/">Hosted ChatGPT site</a>
|
|
9
|
-
·
|
|
10
|
-
<a href="https://github.com/Demonbane18/relmio/issues/new">Report an issue</a>
|
|
11
|
-
·
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
230
|
-
|
|
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
|
-
|
|
15
|
+
## What it can install
|
|
289
16
|
|
|
290
|
-
|
|
291
|
-
|
|
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
|
-
|
|
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
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
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
|

|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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.
|