From aeb9bb59406e9ea51a91d2833d66aa4396a03e4d Mon Sep 17 00:00:00 2001 From: migatu Date: Mon, 24 Aug 2026 14:43:01 +0200 Subject: [PATCH 1/2] conjurer: point both bots at the Ollama server (192.168.1.72:11434) Wires CONJURER_OLLAMA_URL into the test bot and the deploy bot so the self-hosted backend from conjurer#25 is selectable. No API key exists for Ollama - the endpoint is the whole configuration - and until it is set the backend refuses to be selected, so this is what turns it on. NOTE, verified from the LAN before committing: 192.168.1.72 answers ping (0.4ms) but only port 22 is open - 11434 refuses. Ollama binds to 127.0.0.1:11434 by default, so it is not reachable off-host yet. This env var is correct but inert until the server listens on the network: sudo systemctl edit ollama.service [Service] Environment="OLLAMA_HOST=0.0.0.0:11434" sudo systemctl daemon-reload && sudo systemctl restart ollama Co-Authored-By: Claude Opus 4.8 --- conjurer/bot.yaml | 5 +++++ conjurer/deploy-bot.yaml | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/conjurer/bot.yaml b/conjurer/bot.yaml index 98246e6..d6efd5d 100644 --- a/conjurer/bot.yaml +++ b/conjurer/bot.yaml @@ -31,6 +31,11 @@ spec: # Where the librarian sends THIS bot's results/pongs back to (its own # NodePort). Lets one librarian serve both bots - see deploy-bot.yaml. - { name: CONJURER_SELF_CALLBACK, value: "http://192.168.1.73:32442" } + # Self-hosted models (Ollama). No API key - the endpoint IS the + # configuration, and the backend stays unselectable while unset. + # Pick a model at runtime with: $gadaj_teraz ollama + # ($modele_ai lists what the server actually has pulled). + - { name: CONJURER_OLLAMA_URL, value: "http://192.168.1.72:11434" } volumeMounts: - { name: data, mountPath: /data } - { name: netrc, mountPath: /secrets, readOnly: true } diff --git a/conjurer/deploy-bot.yaml b/conjurer/deploy-bot.yaml index a604a50..8dde7cb 100644 --- a/conjurer/deploy-bot.yaml +++ b/conjurer/deploy-bot.yaml @@ -51,6 +51,11 @@ spec: # query and answers results/pongs HERE - so it serves this bot AND the # test bot from one instance, no CONJURER_MAIN_BOT repointing needed. - { name: CONJURER_SELF_CALLBACK, value: "http://192.168.1.73:32443" } + # Self-hosted models (Ollama). No API key - the endpoint IS the + # configuration, and the backend stays unselectable while unset. + # Pick a model at runtime with: $gadaj_teraz ollama + # ($modele_ai lists what the server actually has pulled). + - { name: CONJURER_OLLAMA_URL, value: "http://192.168.1.72:11434" } volumeMounts: - { name: data, mountPath: /data } - { name: netrc, mountPath: /secrets, readOnly: true } -- 2.52.0 From a802b906172ebf86c990c31fba21f4d6ee40890e Mon Sep 17 00:00:00 2001 From: migatu Date: Mon, 24 Aug 2026 14:54:32 +0200 Subject: [PATCH 2/2] conjurer: pin the model Ollama actually has, and raise the AI timeout Probing the real server (192.168.1.72:11434) after it was opened to the LAN: /v1/models returns exactly one model, gemma4:e2b. Without pinning it the bot would request the built-in default llama3.1:8b and every reply would fail with "model not found", so set it explicitly on both bots. Also raise CONJURER_AI_TIMEOUT_SECONDS to 240. Self-hosted generation is far slower than a hosted API, particularly the first request after the model is evicted from VRAM. It applies to every backend, so it is deliberately not set higher than needed. Caveat recorded honestly: at the time of writing, generation on that server does not complete. /v1/models answers instantly, but both /v1/chat/ completions (180s) and native /api/generate with num_predict=5 (60s) return nothing, and /api/ps shows no model ever becomes resident - so the model never finishes loading. Ollama is 0.32.14 and gemma4:e2b is 5.1B Q4_K_M (~3.5GB) despite the "e2b" name. That is a server-side problem, not a configuration one; these values are correct and take effect once it loads. Co-Authored-By: Claude Opus 4.8 --- conjurer/bot.yaml | 8 ++++++++ conjurer/deploy-bot.yaml | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/conjurer/bot.yaml b/conjurer/bot.yaml index d6efd5d..4eee66f 100644 --- a/conjurer/bot.yaml +++ b/conjurer/bot.yaml @@ -36,6 +36,14 @@ spec: # Pick a model at runtime with: $gadaj_teraz ollama # ($modele_ai lists what the server actually has pulled). - { name: CONJURER_OLLAMA_URL, value: "http://192.168.1.72:11434" } + # The server currently has exactly one model pulled (verified via + # /v1/models): gemma4:e2b. Without this the built-in default + # (llama3.1:8b) would be requested and every reply would fail. + - { name: CONJURER_OLLAMA_MODEL, value: "gemma4:e2b" } + # Self-hosted generation is far slower than a hosted API, especially + # the first request after the model is evicted from VRAM. Applies to + # every backend, so keep it only as high as you actually need. + - { name: CONJURER_AI_TIMEOUT_SECONDS, value: "240" } volumeMounts: - { name: data, mountPath: /data } - { name: netrc, mountPath: /secrets, readOnly: true } diff --git a/conjurer/deploy-bot.yaml b/conjurer/deploy-bot.yaml index 8dde7cb..ec63bb1 100644 --- a/conjurer/deploy-bot.yaml +++ b/conjurer/deploy-bot.yaml @@ -56,6 +56,14 @@ spec: # Pick a model at runtime with: $gadaj_teraz ollama # ($modele_ai lists what the server actually has pulled). - { name: CONJURER_OLLAMA_URL, value: "http://192.168.1.72:11434" } + # The server currently has exactly one model pulled (verified via + # /v1/models): gemma4:e2b. Without this the built-in default + # (llama3.1:8b) would be requested and every reply would fail. + - { name: CONJURER_OLLAMA_MODEL, value: "gemma4:e2b" } + # Self-hosted generation is far slower than a hosted API, especially + # the first request after the model is evicted from VRAM. Applies to + # every backend, so keep it only as high as you actually need. + - { name: CONJURER_AI_TIMEOUT_SECONDS, value: "240" } volumeMounts: - { name: data, mountPath: /data } - { name: netrc, mountPath: /secrets, readOnly: true } -- 2.52.0