47 Commits
Author SHA1 Message Date
inference-admin bb276dd7dd Pin manifest to 20261106-c2aec74 2026-11-09 05:00:31 +00:00
inference-admin c2aec749b4 overlay: rebase on appstore package 1.4.8 (candidate for 2026-11-08 window)
- Dockerfile FROM: appstore 1.4.5 image (202610230221180000) -> 1.4.8
  (202611030321030000). Same LibreChat upstream 0.8.8 in both - the package
  delta is tooling only: uv 0.13.5->0.13.7 and Node.js 22.23.4 (security fix,
  1.4.7), base image 6.0.1 (eMudhra cert fix, 1.4.4 - already in 1.4.5).
- All overlay anchors verified against the real 1.4.8 image dist (title tag,
  manifest link crossorigin, viewport meta, theme-color #171717, webmanifest
  name/colors, 'MCP Servers' + 'Every AI for Everyone.' strings, index.*.js,
  sw.js): unchanged, no porting needed.
- release.sh BASE_IMAGE default follows the pin.
2026-11-06 04:05:01 +00:00
inference-bot 13c739f311 manifest: run the chat key sync every minute, not every ten (co-op/support#40)
The sync seeds each member's gateway key into LibreChat's per-user key store, but it can only seed a user that already exists — and LibreChat creates that row on first login. Ten minutes therefore left a new member's very first message to fail against a key-less endpoint. At one minute the window is at most 60 seconds. Zero would mean patching LibreChat's login path, which is not worth a fork for this.
2026-10-31 21:46:55 +00:00
inference-bot 0db50566c7 manifest: pin to 20261031-2a98892 2026-10-31 21:29:42 +00:00
inference-admin fb1b6fd86e Pin manifest to 20261027-d099d31 2026-10-27 22:02:11 +00:00
inference-admin 91b274969b Pin manifest to 20261026-60ee597 2026-10-26 03:27:57 +00:00
inference-bot 60ee597792 Merge pull request 'Bump the appstore pin to 1.4.5 (uv 0.13.5)' (#3) from feat/appstore-1.4.5 into master 2026-10-26 03:25:23 +00:00
inference-admin f195f4509b Pin manifest to 20261026-13f2b3a 2026-10-26 03:24:17 +00:00
inference-admin 8f9d6a1e20 Stage: bump the appstore pin to 1.4.5 (uv 0.13.5, LibreChat unchanged at 0.8.8)
Not deployed. Diffed against the official 1.4.5 manifest: version, changelog and
the base-image tag were the only differences, so this copy now matches official
field-for-field except dockerImage (+ our scheduler block).

The risk is the overlay, not the bump: every build-time patch runs against a new
base layer, and they are all non-fatal by design, so a silent no-op is the failure
mode. Verify on the rendered DOM. Rollback = repoint dockerImage to
20261023-65a38bb.
2026-10-26 01:36:11 +00:00
inference-admin 0102c1790f Stage: run the per-member key seed from the image, not the volume
Ready to build, not yet deployed — deploying the repointed scheduler command
without the new image would break the seed on schedule, which is why this sits on
a branch with the ordering written down.

- Dockerfile: COPY sync-keys.js /app/code/sync-keys.js; rule 3 in the header now
  states the one exception (operational scripts that must not depend on a volume).
- CloudronManifest.json: scheduler command repointed to /app/code/sync-keys.js.
- README: ordering (build -> deploy -> verify -> delete the volume copy), and the
  table row moved from the volume layer to the image layer.

After deploy: delete /app/data/sync-keys.js, but keep it until you are past the
rollback window — the previous image tag still runs the volume copy.
2026-10-26 01:35:06 +00:00
inference-admin 4e28b7a612 Key sync runs inside the app: scheduler addon task every 10 min, plus write guards
The per-member key seed ran from a steward cron on the co-op agent VM, shelling
into this app over the Cloudron API. That made a member-facing function depend on
a separate machine's uptime and paths (it went silently stale once, exiting 127
on schedule while the job looked healthy).

- CloudronManifest.json: addons.scheduler gains librechat_key_sync
  (cd /app/code/librechat/api && node /app/data/sync-keys.js, */10 * * * *).
  Official addon set (postgresql, mongodb, localstorage, oidc, sendmail) and the
  dockerImage pin are untouched.
- sync-keys.js: refuse to write unless CREDS_KEY can first decrypt an existing
  key row, and unless each fresh ciphertext round-trips back to the plaintext.
  Scheduled runs get a different environment than an interactive exec, so a wrong
  or absent CREDS_KEY must fail loudly instead of overwriting working member keys.
2026-10-25 22:25:10 +00:00
Nathan Schneider 22f9422259 Pin manifest to 20261023-65a38bb 2026-10-23 11:11:45 -06:00
Nathan Schneider 10b63c9454 Pin manifest to 20261023-515c92c 2026-10-23 11:02:42 -06:00
Nathan Schneider 7e94135bc5 Pin manifest to 20261022-17e7c92 2026-10-22 13:32:33 -06:00
Nathan Schneider 077e6141b3 Pin manifest to 20261022-4a2b9c1 (no-cache rebuild — stale COPY layer shipped the old maskable icon) 2026-10-22 12:31:00 -06:00
Nathan Schneider 637fcc3472 Pin manifest to 20261022-d86483e 2026-10-21 21:07:23 -06:00
Nathan Schneider 7eb13856d7 Pin manifest to 20261021-c2c674a 2026-10-20 22:29:25 -06:00
Nathan Schneider 2767536d1f Pin manifest to 20261021-db2dbe3 2026-10-20 22:27:31 -06:00
Nathan Schneider 28790d2fe7 Pin manifest to 20261021-c47c311 2026-10-20 22:21:10 -06:00
Nathan Schneider 0560c6e26b Pin manifest to 20261021-7e1de2f 2026-10-20 22:12:17 -06:00
Nathan Schneider 6a6f8b4103 Pin manifest to 20261021-dcd7486 2026-10-20 21:57:03 -06:00
Nathan Schneider 04b217b306 Pin manifest to 20261020-0468562 2026-10-20 13:45:58 -06:00
Nathan Schneider 3b706eed74 Pin manifest to 20261020-1594a60 2026-10-20 13:41:03 -06:00
Nathan Schneider 5864741233 Pin manifest to e9850d7 2026-10-19 21:43:56 -06:00
Nathan Schneider 289ab2f9ff Pin manifest to 8abdc95 2026-10-19 21:41:48 -06:00
Nathan Schneider 15035fd69e Pin manifest to 05c3681 2026-10-19 12:52:33 -06:00
Nathan Schneider 17129e462b Pin manifest to 429de96 2026-10-19 12:45:20 -06:00
Nathan Schneider ef692d524c Pin manifest to 0a363b3 2026-10-19 12:38:23 -06:00
Nathan Schneider a2c180f848 Pin manifest to a24286c 2026-10-19 10:40:40 -06:00
Nathan Schneider 3bbdda6371 Pin manifest to 499d4fa 2026-10-19 10:32:36 -06:00
Nathan Schneider 911ce3cb1a Pin manifest to 957293d 2026-10-18 23:49:14 -06:00
Nathan Schneider 8398908427 Pin manifest to 990b2db 2026-10-18 23:46:23 -06:00
Nathan Schneider 85e0282cef Pin manifest to da99640 2026-10-18 23:44:18 -06:00
Nathan Schneider 571084d8bf Pin manifest to no-cache image fc9b11e 2026-10-18 22:43:58 -06:00
Nathan Schneider 9f1f12238e Update manifest to new image tag 2026-10-18 22:14:07 -06:00
Nathan Schneider ef795a388b Update manifest dockerImage to latest overlay 2026-10-18 21:39:31 -06:00
Nathan Schneider 6cc87e5833 Update manifest dockerImage to new overlay tag 2026-10-18 21:27:14 -06:00
Nathan Schneider ff8532afd8 Deploy 20261019-5e214e4 (proper favicon sizes) 2026-10-18 20:53:14 -06:00
Nathan Schneider f40680f5a7 Point manifest.dockerImage at the brand-overlay image (CLI deploys manifest.dockerImage) 2026-10-18 20:28:36 -06:00
Nathan Schneider 070dec3d29 Sustainable LibreChat setup: official manifest, config layer, brand overlay
- CloudronManifest.json: byte-identical copy of the OFFICIAL appstore manifest
  (the hand-edited one stripped addons and crash-looped the app on 2026-10-18)
- Dockerfile: pinned base (202610150224320000), brand assets only + title sed
- librechat.yaml: schema 1.3.17; chat models only in picker (qwen-image moved
  to the agent image tool); speech via gateway with capped key refs; SearXNG
  web search; inference-docs MCP server; forward-compatible interface.theme
- mcp/server.py: docs MCP server (stdio, stdlib-only, tool search_docs)
- assets/: co-op logo + favicons/PWA icons
2026-10-18 20:26:40 -06:00
Nathan Schneider 6e4ca9319f Set manifest id to reverse domain for reinstall 2026-10-18 18:16:05 -06:00
Nathan Schneider 6d7d5bdd54 Revert id to original for update compatibility 2026-10-18 18:14:31 -06:00
Nathan Schneider 4140abcd27 Fix CloudronManifest with reverseDomain id 2026-10-18 18:12:41 -06:00
Nathan Schneider c30ca8e23e Update CloudronManifest with required fields 2026-10-18 18:10:14 -06:00
Nathan Schneider e54d6e8233 Add httpPort to CloudronManifest 2026-10-18 18:09:12 -06:00
Nathan Schneider 6bbacecb52 Add manifestVersion to CloudronManifest 2026-10-18 18:08:16 -06:00
Nathan Schneider 447005e4e7 Add CloudronManifest and copy logo into client assets 2026-10-18 17:51:25 -06:00