Chat: Ollama Capabilities (Ollama Capabilities)

**Chat log** from Bead: Ollama Capabilities · [canonical source](https://redfish.acequia.io/guerin/.agents/70758adc-2d58-40f5-a294-443dfb255209/2026-06-29/chats/2026-06-29-ollama-capabilities.md) · session 2026-06-29 · discussion: Talk: Ollama Capabilities *Verbatim chat log: immutable provenance. The bead's copy is ground truth; wiki edits here are a fork, never the record.*

Verbatim user prompts; assistant turns summarized with pointers to the durable artifacts.

**User (verbatim, the `/start-bead ollama-capabilities` opening prompt):** > start-bead ollama-capabilities > i have ollama installed and with qwen 2.5. > make an html harness to demonstrates its capabilities. make a harness.mjs in stephenguerin.live\ai\ollama. > mount a recent bead that talks about how the handler.mjs works. you can look at berads made yesterday

**Assistant turn (summary):** 1. Read the project frame: `.ai/START-HERE.md`, `.ai/beads.md` (bead protocol + dock/handler contracts). 2. Probed the local Ollama: `ollama.exe` is at `…/AppData/Local/Programs/Ollama/`, daemon live on `localhost:11434`. Installed models: **qwen2.5:3b** (`completion`,`tools`, 32K ctx) and **moondream** (`completion`,`vision`). Note: the user said "qwen 2.5" — the actual installed tag is `qwen2.5:3b`, and there is also a moondream vision model, which the harness uses for the Vision tab. 3. Found the "recent bead that talks about how the handler.mjs works": searched `.agents/` for `handler.mjs`. The best fits made **yesterday (2026-06-28)** are `d3b7b28c` **origin-routing**, which ships a sibling `handler.mjs` at `stephenguerin.live/healthz/` — the same deploy-home pattern. Also read `06b7373f`'s filesystem-router note (the `handle(req, ctx)` contract) and the canonical router-bead `82bd6fa4`. 4. Read the real deploy-home handlers (`/healthz/handler.mjs`, `/photos/handler.mjs`) and `server.js` to learn the exact contract — and discovered `send()` does `httpRes.end(body)`, so **a handler cannot stream**. 5. Built the deliverables at `stephenguerin.live/ai/ollama/`: `harness.mjs` (browser client), `index.html` (7-tab UI), `handler.mjs` (passthrough + buffered proxy), `config.json`. 6. **Verified live** against the daemon: chat ✓, tool-call ✓ (arguments arrive parsed), JSON-schema ✓, moondream vision ✓ (on a 256px scene), embeddings ✗ (no embedding model — handled with a pull hint). Confirmed the hot-loaded handler live on port 3500: static passthrough + `/api/tags` + `/api/chat` (stream forced false) all 200. 7. Recorded the bead: `about.md`, `session-namespace.json` (mounts d3b7b28c, 06b7373f, 82bd6fa4), notes 00 (capability census) + 01 (the handler-vs-harness streaming split), and this chat log. **Key decision (see [notes/01](https://redfish.acequia.io/guerin/.agents/70758adc-2d58-40f5-a294-443dfb255209/2026-06-29/notes/01-handler-vs-harness-streaming.md)):** `harness.mjs` is a *browser* module that streams directly from localhost; `handler.mjs` is the *server* deploy-home module that serves the page and offers a buffered same-origin proxy for tunnel access. The router's one-shot `end(body)` is why streaming can't go through the handler. **Deliverables:** [stephenguerin.live/ai/ollama/](c:/Users/steph/Documents/sites/stephenguerin.live/ai/ollama/) — live at http://127.0.0.1:3500/ai/ollama/ and https://stephenguerin.live/ai/ollama/.