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 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
- The hosted site keeps the live GitHub star/version control visible.
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. Browser requests
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
@@ -77,19 +77,28 @@ Engine.
77
77
 
78
78
  ## Safe updates and credential rotation
79
79
 
80
- Rerun the browser wizard, select the same target and port, and review the plan
81
- again. Relmio verifies the existing marker and Docker resource ownership,
82
- reuses that installation's unique Compose identity, replaces only that managed
83
- service, and generates a new local client capability. Copy the new capability
84
- from the one-time result and update the client; the previous capability no
85
- longer authenticates.
86
-
87
- For `openai-api`, every update requires the current Platform API key again. To
88
- rotate both credentials, supply the replacement Platform key during the update;
89
- Relmio atomically reseeds its private named volume and independently rotates the
90
- local client capability. For `codex-chatgpt`, an update retains the private
91
- Codex home and workspace volumes unless you explicitly delete them, but still
92
- rotates the local capability.
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "relmio",
3
- "version": "0.4.1",
3
+ "version": "0.5.0",
4
4
  "description": "Install private local OpenAI API and Codex endpoints with explicit provider credential boundaries, plus the existing isolated n8n sidecar.",
5
5
  "keywords": [
6
6
  "relmio",
@@ -359,7 +359,10 @@ tool_suggest = false
359
359
  export function createCodexDockerfile() {
360
360
  return `FROM node:22-bookworm-slim
361
361
 
362
- RUN npm install --global --ignore-scripts @openai/codex@${CODEX_CLI_VERSION} \\
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