relmio 0.4.1 → 0.5.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 +27 -0
- package/README.md +11 -2
- package/docs/local-endpoints.md +22 -13
- package/package.json +1 -1
- package/src/domain/local-endpoints.js +4 -1
- package/src/services/local-installer.js +772 -13
- package/src/ui/local.css +140 -2
- package/src/ui/local.html +69 -1
- package/src/ui/local.js +58 -0
- package/src/web/server.js +239 -18
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,33 @@ checks the registry separately after publication.
|
|
|
7
7
|
|
|
8
8
|
## Unreleased
|
|
9
9
|
|
|
10
|
+
## [0.5.0] - 2026-08-15
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- Add a **Rotate client credential** action for installed local endpoints that
|
|
15
|
+
shows the replacement capability before activation and preserves the upstream
|
|
16
|
+
Platform key or Codex credential/workspace volumes.
|
|
17
|
+
|
|
18
|
+
### Changed
|
|
19
|
+
|
|
20
|
+
- Keep System, Light, and Dark appearance controls plus Ko-fi, GitHub stars, and
|
|
21
|
+
the current package version available throughout the local install wizard.
|
|
22
|
+
|
|
23
|
+
### Fixed
|
|
24
|
+
|
|
25
|
+
- Install operating-system CA certificates in the isolated Codex image so the
|
|
26
|
+
official ChatGPT device-code sign-in can establish its trusted TLS connection.
|
|
27
|
+
- Wrap local safety and error notifications instead of clipping longer text.
|
|
28
|
+
|
|
29
|
+
### Security
|
|
30
|
+
|
|
31
|
+
- Verify the generated Codex capability with a strict authenticated WebSocket
|
|
32
|
+
upgrade before reporting installation or rotation success.
|
|
33
|
+
- Serialize installation, sign-in, restart, and credential rotation across
|
|
34
|
+
Relmio processes, with attested stale-lock recovery and fail-closed rollback
|
|
35
|
+
that restores the prior verifier and re-attests endpoint readiness.
|
|
36
|
+
|
|
10
37
|
## [0.4.1] - 2026-08-14
|
|
11
38
|
|
|
12
39
|
### Changed
|
package/README.md
CHANGED
|
@@ -101,7 +101,8 @@ On desktop, the local wizard keeps progress and sidecar-only safety notes in a
|
|
|
101
101
|
persistent rail beside the active task; its compact fixed-screen shell avoids
|
|
102
102
|
document scrolling on common laptop screens. On narrow phones, it switches to
|
|
103
103
|
a horizontal progress strip and keeps task scrolling inside the active panel.
|
|
104
|
-
|
|
104
|
+
Both the hosted site and local wizard keep Ko-fi support, GitHub stars, and the
|
|
105
|
+
current Relmio version visible beside the appearance control.
|
|
105
106
|
|
|
106
107
|
## Local Docker endpoints
|
|
107
108
|
|
|
@@ -122,7 +123,15 @@ The OpenAI-compatible `/v1` endpoint is powered only by a Platform API key,
|
|
|
122
123
|
which the wizard seeds over stdin into a private, labeled Docker volume; it
|
|
123
124
|
does not create a host key file. Your app uses a
|
|
124
125
|
separate Relmio capability that the wizard displays once.
|
|
125
|
-
The bearer remains valid until it is rotated.
|
|
126
|
+
The bearer remains valid until it is rotated. After installation, use
|
|
127
|
+
**Rotate client credential** on the Ready screen to replace only that local
|
|
128
|
+
capability. Relmio shows the new one-time credential before activation, verifies
|
|
129
|
+
the replacement endpoint, and preserves the upstream Platform API key or Codex
|
|
130
|
+
credential/workspace volumes. If replacement cannot be verified, Relmio attempts
|
|
131
|
+
to restore the previous verifier and re-attest service readiness. It does not
|
|
132
|
+
retain the previous raw client credential to replay it during rollback. If
|
|
133
|
+
rollback cannot be confirmed, it targets only the exact managed service for
|
|
134
|
+
shutdown and reports whether that stopped state could be verified. Browser requests
|
|
126
135
|
must come from an exact origin entered during setup; wildcards are not allowed,
|
|
127
136
|
and the capability must never be embedded in a public frontend bundle. Platform
|
|
128
137
|
requests use that API project's billing, credits, limits, and permissions, not
|
package/docs/local-endpoints.md
CHANGED
|
@@ -77,19 +77,28 @@ Engine.
|
|
|
77
77
|
|
|
78
78
|
## Safe updates and credential rotation
|
|
79
79
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
80
|
+
To replace only the credential used by your local client, select **Rotate client
|
|
81
|
+
credential** on the installed endpoint's Ready screen. Relmio first stages and
|
|
82
|
+
shows the new one-time capability while the previous capability remains active.
|
|
83
|
+
It then updates and validates the managed Compose configuration, recreates only
|
|
84
|
+
the attested service, and verifies the new bearer against `/v1/models` or the
|
|
85
|
+
authenticated Codex WebSocket handshake before reporting success.
|
|
86
|
+
|
|
87
|
+
This client-only rotation preserves the upstream Platform API key in its private
|
|
88
|
+
named volume and preserves the Codex home and workspace volumes. If activation
|
|
89
|
+
or verification fails, Relmio restores the previous verifier and re-attests its
|
|
90
|
+
health and loopback publication. Relmio does not retain the previous raw client
|
|
91
|
+
credential, so rollback does not replay an authenticated request with it. If
|
|
92
|
+
that rollback cannot be confirmed, Relmio attempts to stop only the exact
|
|
93
|
+
managed service and reports whether the stopped state could be verified.
|
|
94
|
+
|
|
95
|
+
Rerun the browser wizard with the same target and port when you need a complete
|
|
96
|
+
managed update. Relmio verifies the marker and Docker resource ownership and
|
|
97
|
+
reuses the installation's unique Compose identity. For `openai-api`, provide the
|
|
98
|
+
current or replacement Platform API key during that full update; Relmio reseeds
|
|
99
|
+
its private named volume independently from the local client capability. A full
|
|
100
|
+
`codex-chatgpt` update retains the private Codex home and workspace volumes unless
|
|
101
|
+
you explicitly delete them.
|
|
93
102
|
|
|
94
103
|
Do not hand-edit the marker, Compose file, credential volume, or verifier. If
|
|
95
104
|
the marker or resource labels do not attest as one Relmio installation, the
|
package/package.json
CHANGED
|
@@ -359,7 +359,10 @@ tool_suggest = false
|
|
|
359
359
|
export function createCodexDockerfile() {
|
|
360
360
|
return `FROM node:22-bookworm-slim
|
|
361
361
|
|
|
362
|
-
RUN
|
|
362
|
+
RUN apt-get update \\
|
|
363
|
+
&& apt-get install --no-install-recommends -y ca-certificates \\
|
|
364
|
+
&& rm -rf /var/lib/apt/lists/* \\
|
|
365
|
+
&& npm install --global --ignore-scripts @openai/codex@${CODEX_CLI_VERSION} \\
|
|
363
366
|
&& npm cache clean --force \\
|
|
364
367
|
&& mkdir -p /etc/codex /home/node/.codex /workspace \\
|
|
365
368
|
&& chown -R node:node /home/node/.codex /workspace
|