# gateway-chat Persistent static-serve of **`tools/gateway-chat.html`** — the zero-dependency web chat for **smoking models on the LiteLLM gateway** (`10.250.50.70:4000`). It auto-discovers every gateway model via `/v1/models` (the ↻ control — new models just appear), takes system prompts, streams responses (renders `reasoning_content`), and supports image upload for vision models (Qwopus, image-judge). It deliberately never sends a `tools` field, sidestepping the vLLM empty-`tools` 400. - **Host:** ana-docker (non-GPU) - **URL:** http://10.250.50.70:8091 - **Image:** `nginx:alpine` (tiny static server — no GPU, no DB) - **Served file:** `conf/index.html` → mounted read-only at `/usr/share/nginx/html/index.html` ## The served file mirrors `tools/gateway-chat.html` The canonical/editable source is the repo's **`tools/gateway-chat.html`** (also openable `file://` or via `python3 -m http.server -d tools`). `conf/index.html` here is the deployed copy. After editing the tool, re-sync + redeploy: ```bash cp tools/gateway-chat.html stacks/gateway-chat/conf/index.html scripts/deploy-stack.sh ana-docker gateway-chat --conf ``` No restart needed — the file is bind-mounted, so nginx serves the new content on the next request. (Restart only if you want a forced reload.) ## Deploy ```bash scripts/deploy-stack.sh ana-docker gateway-chat # compose + conf ssh ana-docker 'cd /opt/docker/compose/gateway-chat && docker compose up -d' ``` Set the gateway base URL + an API key in the page's sidebar (persists in `localStorage`), then hit ↻ to load the model list.