relmio 0.3.0 → 0.3.1
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 +19 -0
- package/README.md +59 -26
- 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/package.json +1 -1
- package/src/ui/index.html +106 -108
- package/src/ui/styles.css +577 -278
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,25 @@ checks the registry separately after publication.
|
|
|
7
7
|
|
|
8
8
|
## Unreleased
|
|
9
9
|
|
|
10
|
+
## [0.3.1] - 2026-08-10
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
|
|
14
|
+
- Make the browser wizard beginner-friendly with a modern fixed-viewport
|
|
15
|
+
layout: all five active steps fit without document scrolling on common
|
|
16
|
+
1280x720 laptops, while progress and safety context stay persistent beside
|
|
17
|
+
the active task.
|
|
18
|
+
- Keep narrow-phone documents fixed to the viewport and contain unavoidable
|
|
19
|
+
long-form overflow within the active task panel instead of the page.
|
|
20
|
+
- Expand the GitHub and npm walkthroughs with a hosted-install selector and
|
|
21
|
+
packaged, sanitized screenshots that document the current n8n workflow.
|
|
22
|
+
|
|
23
|
+
### Security
|
|
24
|
+
|
|
25
|
+
- Restore a clean hosted-web dependency audit by pinning patched `js-yaml`
|
|
26
|
+
and `nanoid` releases and using the compatible `vinext` release that does
|
|
27
|
+
not include the currently vulnerable `image-size` parser.
|
|
28
|
+
|
|
10
29
|
## [0.3.0] - 2026-08-05
|
|
11
30
|
|
|
12
31
|
### Added
|
package/README.md
CHANGED
|
@@ -15,21 +15,29 @@
|
|
|
15
15
|
|
|
16
16
|
## See it working first
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
This documented example follows a tested n8n OpenAI credential through a
|
|
19
|
+
published Telegram-triggered workflow. It is a product-operation record, not
|
|
20
|
+
an endorsement, sponsorship, or affiliation by OpenAI, n8n, Hostinger,
|
|
21
|
+
Telegram, or AppBuildersPH.
|
|
21
22
|
|
|
22
23
|
<figure>
|
|
23
|
-
<img src="https://cdn.jsdelivr.net/npm/relmio@latest/docs/images/examples/
|
|
24
|
-
<figcaption>
|
|
24
|
+
<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">
|
|
25
|
+
<figcaption>The n8n OpenAI credential connection test succeeded; the credential value itself is obscured.</figcaption>
|
|
25
26
|
</figure>
|
|
26
27
|
|
|
27
|
-
|
|
28
|
-
|
|
28
|
+
<figure>
|
|
29
|
+
<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">
|
|
30
|
+
<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>
|
|
31
|
+
</figure>
|
|
32
|
+
|
|
33
|
+
<figure>
|
|
34
|
+
<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">
|
|
35
|
+
<figcaption>The published Telegram-triggered n8n workflow completed successfully across its HTTP Request, Basic LLM Chain, and AI Agent branches.</figcaption>
|
|
36
|
+
</figure>
|
|
29
37
|
|
|
30
38
|
<figure>
|
|
31
|
-
<img src="https://cdn.jsdelivr.net/npm/relmio@latest/docs/images/examples/
|
|
32
|
-
<figcaption>
|
|
39
|
+
<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">
|
|
40
|
+
<figcaption>Telegram received the HTTP Request, Basic LLM Chain, and AI Agent outputs sent by that workflow.</figcaption>
|
|
33
41
|
</figure>
|
|
34
42
|
|
|
35
43
|
Relmio is a local browser wizard that installs a private
|
|
@@ -80,10 +88,11 @@ tailored to the current self-hosted n8n and Hostinger VPS setup path.
|
|
|
80
88
|
The hosted site and local wizard keep the original Relmio relay layout while
|
|
81
89
|
adding a compact **System / Light / Dark** appearance control. System follows
|
|
82
90
|
the computer's preference; Light and Dark are remembered on that browser only.
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
91
|
+
On desktop, the local wizard keeps progress and sidecar-only safety notes in a
|
|
92
|
+
persistent rail beside the active task; its compact fixed-screen shell avoids
|
|
93
|
+
document scrolling on common laptop screens. On narrow phones, it switches to
|
|
94
|
+
a horizontal progress strip and keeps task scrolling inside the active panel.
|
|
95
|
+
The hosted site keeps the live GitHub star/version control visible.
|
|
87
96
|
|
|
88
97
|
## Quick start
|
|
89
98
|
|
|
@@ -184,28 +193,51 @@ it is not currently advertised as supported.
|
|
|
184
193
|
|
|
185
194
|
## Visual walkthrough
|
|
186
195
|
|
|
187
|
-
|
|
188
|
-
|
|
196
|
+
These current product screenshots use sanitized sample values wherever a setup
|
|
197
|
+
field might otherwise identify an environment. The VPS identity screen shows a
|
|
198
|
+
reserved sample address and sample SSH fingerprint; none of the images includes
|
|
199
|
+
an OAuth token, password, private key, or live wizard session URL.
|
|
200
|
+
|
|
201
|
+
### 1. Choose a hosted installation method
|
|
202
|
+
|
|
203
|
+
<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">
|
|
204
|
+
|
|
205
|
+
The hosted page starts with the installation-method selector. Run the selected
|
|
206
|
+
command locally, not on the VPS.
|
|
207
|
+
|
|
208
|
+
### 2. Complete the local ChatGPT/Codex sign-in
|
|
209
|
+
|
|
210
|
+
<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">
|
|
211
|
+
|
|
212
|
+
This image shows a sanitized preview-mode sample credential state; it does not
|
|
213
|
+
confirm that a real local ChatGPT login was saved. During a real fresh login,
|
|
214
|
+
the browser confirmation states that the credentials were saved locally.
|
|
215
|
+
|
|
216
|
+
### 3. Verify the VPS identity
|
|
189
217
|
|
|
190
|
-
|
|
218
|
+
<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
219
|
|
|
192
|
-
|
|
220
|
+
Confirm the SSH host fingerprint before authentication. The screenshot uses the
|
|
221
|
+
reserved sample host `vps.example.test`, a sample fingerprint, and a blank
|
|
222
|
+
password field.
|
|
193
223
|
|
|
194
|
-
###
|
|
224
|
+
### 4. Choose the detected n8n container and network
|
|
195
225
|
|
|
196
|
-
<img src="https://cdn.jsdelivr.net/npm/relmio@latest/docs/images/setup/
|
|
226
|
+
<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
227
|
|
|
198
|
-
|
|
228
|
+
Discovery is read-only; choose the existing n8n container and shared Docker
|
|
229
|
+
network.
|
|
199
230
|
|
|
200
|
-
|
|
231
|
+
### 5. Review the exact sidecar-only plan
|
|
201
232
|
|
|
202
|
-
|
|
233
|
+
<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
234
|
|
|
204
|
-
|
|
235
|
+
The plan names the allowed sidecar work and explicitly excludes edits or
|
|
236
|
+
restarts of n8n, a published host port, and a Traefik route.
|
|
205
237
|
|
|
206
|
-
###
|
|
238
|
+
### 6. Copy the verified n8n settings
|
|
207
239
|
|
|
208
|
-
<img src="https://cdn.jsdelivr.net/npm/relmio@latest/docs/images/setup/05-bridge-ready.png" alt="
|
|
240
|
+
<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
241
|
|
|
210
242
|
Use these values in an n8n OpenAI credential:
|
|
211
243
|
|
|
@@ -265,7 +297,8 @@ has the importable cURL version.
|
|
|
265
297
|
- Relmio never edits, rebuilds, recreates, stops, or restarts the existing n8n
|
|
266
298
|
container.
|
|
267
299
|
- This is an unofficial community project, not affiliated with or endorsed by
|
|
268
|
-
OpenAI, xAI,
|
|
300
|
+
OpenAI, xAI, n8n, Hostinger, Telegram, or AppBuildersPH. Provider access,
|
|
301
|
+
models, limits, and policies can change.
|
|
269
302
|
- Use it only where your account, subscription, provider terms, and applicable
|
|
270
303
|
policies allow.
|
|
271
304
|
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/package.json
CHANGED
package/src/ui/index.html
CHANGED
|
@@ -55,108 +55,108 @@
|
|
|
55
55
|
</div>
|
|
56
56
|
</header>
|
|
57
57
|
|
|
58
|
-
<
|
|
59
|
-
<aside
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
58
|
+
<main id="main-content" class="shell" tabindex="-1">
|
|
59
|
+
<aside class="rail" aria-label="Setup progress and safety">
|
|
60
|
+
<section class="intro" aria-labelledby="page-title">
|
|
61
|
+
<h1 id="page-title">Connect n8n without changing n8n</h1>
|
|
62
|
+
<p class="lede">
|
|
63
|
+
This wizard installs one separate Docker sidecar. Your existing n8n
|
|
64
|
+
image, Compose file, container, and workflows stay untouched.
|
|
65
|
+
</p>
|
|
66
|
+
</section>
|
|
67
|
+
|
|
68
|
+
<nav class="steps" aria-label="Setup progress">
|
|
69
|
+
<ol>
|
|
70
|
+
<li data-step-marker="1" aria-current="step">
|
|
71
|
+
<span>1</span><em>Sign in</em>
|
|
72
|
+
</li>
|
|
73
|
+
<li data-step-marker="2"><span>2</span><em>VPS</em></li>
|
|
74
|
+
<li data-step-marker="3"><span>3</span><em>n8n</em></li>
|
|
75
|
+
<li data-step-marker="4"><span>4</span><em>Review</em></li>
|
|
76
|
+
<li data-step-marker="5"><span>5</span><em>Done</em></li>
|
|
77
|
+
</ol>
|
|
78
|
+
</nav>
|
|
79
|
+
|
|
80
|
+
<div class="toast-stack" aria-label="Wizard notifications">
|
|
81
|
+
<aside
|
|
82
|
+
id="global-safety"
|
|
83
|
+
class="toast safety-note"
|
|
84
|
+
aria-label="Safety guarantee"
|
|
85
|
+
>
|
|
86
|
+
<strong>Sidecar-only guarantee</strong>
|
|
87
|
+
<span>
|
|
88
|
+
No n8n restart. No n8n rebuild. No public port. You approve the
|
|
89
|
+
exact plan before anything is written.
|
|
90
|
+
</span>
|
|
91
|
+
<button
|
|
92
|
+
class="toast-close"
|
|
93
|
+
type="button"
|
|
94
|
+
data-dismiss-toast="global-safety"
|
|
95
|
+
aria-label="Dismiss safety guarantee"
|
|
96
|
+
>
|
|
97
|
+
<span aria-hidden="true">×</span>
|
|
98
|
+
</button>
|
|
99
|
+
</aside>
|
|
98
100
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
101
|
+
<aside
|
|
102
|
+
id="global-backup"
|
|
103
|
+
class="toast safety-note backup-note"
|
|
104
|
+
aria-label="Backup reminder"
|
|
105
|
+
>
|
|
106
|
+
<strong>Back up first</strong>
|
|
107
|
+
<span>
|
|
108
|
+
Export your n8n workflows before connecting. This wizard uses
|
|
109
|
+
sidecar-only commands, but it still writes to your VPS.
|
|
110
|
+
</span>
|
|
111
|
+
<button
|
|
112
|
+
class="toast-close"
|
|
113
|
+
type="button"
|
|
114
|
+
data-dismiss-toast="global-backup"
|
|
115
|
+
aria-label="Dismiss backup reminder"
|
|
116
|
+
>
|
|
117
|
+
<span aria-hidden="true">×</span>
|
|
118
|
+
</button>
|
|
119
|
+
</aside>
|
|
115
120
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
</div>
|
|
133
|
-
</div>
|
|
134
|
-
|
|
135
|
-
<main id="main-content" class="shell">
|
|
136
|
-
<section class="intro" aria-labelledby="page-title">
|
|
137
|
-
<p class="eyebrow">Guided VPS setup</p>
|
|
138
|
-
<h1 id="page-title">Connect n8n without changing n8n</h1>
|
|
139
|
-
<p class="lede">
|
|
140
|
-
This wizard installs one separate Docker sidecar. Your existing n8n
|
|
141
|
-
image, Compose file, container, and workflows stay untouched.
|
|
142
|
-
</p>
|
|
143
|
-
</section>
|
|
121
|
+
<div
|
|
122
|
+
id="global-message"
|
|
123
|
+
class="toast message"
|
|
124
|
+
role="status"
|
|
125
|
+
aria-live="polite"
|
|
126
|
+
>
|
|
127
|
+
<span id="global-message-text">Checking your local sign-in…</span>
|
|
128
|
+
<button
|
|
129
|
+
class="toast-close"
|
|
130
|
+
type="button"
|
|
131
|
+
data-dismiss-toast="global-message"
|
|
132
|
+
aria-label="Dismiss status message"
|
|
133
|
+
>
|
|
134
|
+
<span aria-hidden="true">×</span>
|
|
135
|
+
</button>
|
|
136
|
+
</div>
|
|
144
137
|
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
138
|
+
<div
|
|
139
|
+
id="global-error"
|
|
140
|
+
class="toast error"
|
|
141
|
+
role="alert"
|
|
142
|
+
tabindex="-1"
|
|
143
|
+
hidden
|
|
144
|
+
>
|
|
145
|
+
<span id="global-error-text"></span>
|
|
146
|
+
<button
|
|
147
|
+
class="toast-close"
|
|
148
|
+
type="button"
|
|
149
|
+
data-dismiss-toast="global-error"
|
|
150
|
+
aria-label="Dismiss error"
|
|
151
|
+
>
|
|
152
|
+
<span aria-hidden="true">×</span>
|
|
153
|
+
</button>
|
|
154
|
+
</div>
|
|
155
|
+
</div>
|
|
156
|
+
</aside>
|
|
156
157
|
|
|
157
158
|
<section class="panel" data-step="1" aria-labelledby="signin-title">
|
|
158
159
|
<div class="panel-heading">
|
|
159
|
-
<span class="step-kicker">Step 1 of 5</span>
|
|
160
160
|
<h2 id="signin-title" tabindex="-1">Use your local ChatGPT sign-in</h2>
|
|
161
161
|
<p>
|
|
162
162
|
The OAuth credential stays on this computer until you approve its
|
|
@@ -198,7 +198,6 @@
|
|
|
198
198
|
|
|
199
199
|
<section class="panel" data-step="2" aria-labelledby="vps-title" hidden>
|
|
200
200
|
<div class="panel-heading">
|
|
201
|
-
<span class="step-kicker">Step 2 of 5</span>
|
|
202
201
|
<h2 id="vps-title" tabindex="-1">Connect to your VPS</h2>
|
|
203
202
|
<p>
|
|
204
203
|
Copy the address exactly from Hostinger. Your password is used only
|
|
@@ -294,7 +293,6 @@
|
|
|
294
293
|
|
|
295
294
|
<section class="panel" data-step="3" aria-labelledby="n8n-title" hidden>
|
|
296
295
|
<div class="panel-heading">
|
|
297
|
-
<span class="step-kicker">Step 3 of 5</span>
|
|
298
296
|
<h2 id="n8n-title" tabindex="-1">Choose the detected n8n</h2>
|
|
299
297
|
<p>
|
|
300
298
|
Discovery uses read-only Docker commands. It does not execute
|
|
@@ -332,7 +330,6 @@
|
|
|
332
330
|
|
|
333
331
|
<section class="panel" data-step="4" aria-labelledby="review-title" hidden>
|
|
334
332
|
<div class="panel-heading">
|
|
335
|
-
<span class="step-kicker">Step 4 of 5</span>
|
|
336
333
|
<h2 id="review-title" tabindex="-1">Review before installing</h2>
|
|
337
334
|
<p>No existing n8n files or containers will be changed.</p>
|
|
338
335
|
</div>
|
|
@@ -381,14 +378,15 @@
|
|
|
381
378
|
</section>
|
|
382
379
|
|
|
383
380
|
<section class="panel success-panel" data-step="5" aria-labelledby="done-title" hidden>
|
|
384
|
-
<div class="success-
|
|
385
|
-
|
|
386
|
-
<
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
381
|
+
<div class="success-heading">
|
|
382
|
+
<div class="success-mark" aria-hidden="true">✓</div>
|
|
383
|
+
<div class="panel-heading">
|
|
384
|
+
<h2 id="done-title" tabindex="-1">The private bridge is ready</h2>
|
|
385
|
+
<p>
|
|
386
|
+
Copy the OpenAI credential values first, then use one of the node
|
|
387
|
+
recipes below.
|
|
388
|
+
</p>
|
|
389
|
+
</div>
|
|
392
390
|
</div>
|
|
393
391
|
|
|
394
392
|
<h3>1. OpenAI credential</h3>
|
|
@@ -435,7 +433,7 @@
|
|
|
435
433
|
|
|
436
434
|
<button
|
|
437
435
|
id="copy-settings"
|
|
438
|
-
class="button
|
|
436
|
+
class="button primary"
|
|
439
437
|
type="button"
|
|
440
438
|
data-copy-group="credential"
|
|
441
439
|
data-copy-label="OpenAI credential settings"
|