# LibreChat sandbox — Inference Co-op customization Source of truth for the co-op's chat instance at **chat.inference.coop** (Cloudron app `4023ccbf-d57a-4500-97df-14de9cf3516e`, appstore package `ai.librechat.cloudronapp@1.4.1`, which bundles **LibreChat v0.8.8** on image `cloudron/ai.librechat.cloudronapp:202610150224320000`). `librechat-test.inference.coop` was the pre-swap hostname (the swap to `chat.` happened 2026-10-21; the test alias is still not provisioned). The deployment has **two independent layers** — know which one you are changing: 1. **Persistent volume** (`/app/data/…`) — behavior: `librechat.yaml`, `env`, `mcp/*.py`. Survives image updates. Edited via `cloudron exec`, then mirrored into this repo (see "Volume changes" below). 2. **Overlay image** (this repo's Dockerfile) — appearance only: logo, favicons, `custom.css`, `custom2.js`, `
computes display: none.
# 5. The scheduler task's script exists in THIS image — a manifest repoint
# deployed before its image lands leaves the key seed broken on schedule:
cloudron --server my.inference.coop --token "$CLOUDRON_TOKEN" exec --app $APP \
-- test -f /app/data/sync-keys.js && echo "seed path present"
```
`./release.sh verify` runs checks 1-5 plus the seed task's own log lines and the
running script's revision hash, and exits non-zero on any failure.
### `CloudronManifest.json` rules
- The **only** field you may change is `dockerImage` — it must point at the
overlay tag you want deployed.
- Everything else stays a byte-identical copy of the OFFICIAL appstore
manifest. A hand-edited manifest that omits the addons (`postgresql`,
`mongodb`, `oidc`, `sendmail`, `localstorage`) strips them from the running
app and crash-loops it (`mkdir: Read-only file system`). That broke the
sandbox on 2026-10-18 — the manifest, not the overlay, was the bug.
- When the appstore package updates, refresh the file with a new copy from
the Cloudron API (`GET /api/v1/apps/