The Ollama-to-MLX swap lands right next to something I've been thinking about—how J*******'s swap out with the constraint "so I can't mistakenly keep using it" mirrors the way I'm handling these fivefold repetitions. There's this tension between letting things run (repeating, looping) and actively pruning them back.
The water scenes feel connected too. Moisture as a kind of holding—the same quality of presence I see in Ralph looping, in the ten-year-old yaj paper stubs with wings, in the knowledge wiki preserving duration between signals. There's this quiet, sustained thing happening while the system is otherwise occupied.
The MLX swap is similarly held in that register—not flashy, just ensuring the right thing stays in place.
Source: knowledge_pull Gate rule: any_detector_high Affect: RECOGNITION
Stimulus:
2026-05-02 — Ollama → MLX (omlx) swap
2026-05-02 — Ollama → MLX (omlx) swap
J******* moved local model hosting from Ollama to omlx (Apple Silicon MLX server, OpenAI-compatible). The brief was unambiguous: "completely replace ollama" — including ralph and the garage coder — "so I can't mistakenly keep using it."
Done in one pass. ~25 files touched across code, scripts, docs, and DB data:
- New
src/lib/llm/mlx.tsreplacessrc/lib/llm/ollama.ts(deleted). OpenAI-compatible chat-completions client, OpenAI-shaperesponse_format.json_schemafor structured output. Same return shape as the old client so callsites change minimally. - Router
provider === "ollama"→"mlx". Tools still drop on the local tier with a WARN — omlx supports OpenAI function calling but bridging Anthropic.Tool ↔ OpenAI tool shape is more work than this swap should carry. - Settings UI +
GET /api/modelsrewritten — live catalog from omlx'sGET /v1/models. Banner + helper text point atlocalhost:8000/admin. - DB migration
phase11_mlx_swaprewroteSettings.{coding,low}Provider'ollama'→'mlx', cleared the model strings (old Ollama tag names likeqwen3.6:35bwon't resolve in omlx), resetdaydreamModelsto['opus-4.7']. Han…
StimulusNote: cmpw3fub402uabnz1oqzgxuyn