Ollama
Ollama 0.35 and later serve System One on your own machine. ThinkThen asks them with --backend ollama, with no key and no hosted service.
| Backend name | ollama |
|---|---|
| Address | http://localhost:11434/v1 |
| Key variable | OLLAMA_API_KEY, not needed on this machine |
| Default model | nimble. Name tev1 with --model tev1. |
Set it up
- Install Ollama 0.35 or later from ollama.com.
- Run
ollama pull nimble, andollama pull tev1for the smaller model. - Ask with
--backend ollama. On this machine ThinkThen sends no key.
The examples below run Ollama on a second port, 11535, beside another Ollama on the same machine. So each one names the port with --url. On the default port, leave it out. A local Ollama needs no key at any port.
Descriptions travel as text
Ollama refuses a description written as an object. So this backend alone sends each description as its text. An object's what goes, and its other fields stay behind. The plan says so on its first line.
thinkthen check \
--backend ollama \
--url http://localhost:11535/v1 \
--plan |
head -n 4thinkthen: backend `ollama` sends each description object as its `what` text, a temporary workaround for an Ollama bug, so its other fields are left out url http://localhost:11535/v1/systemone provider systemone model asked unspecified model sent nimble
On 2026-09-30, thinkthen check on build e8f2804fe asked nimble and exited 0, with 0 critical and 3 warning findings.
On 2026-09-30, thinkthen check on build e8f2804fe asked tev1 and exited 0, with 0 critical and 3 warning findings.
Each warning names a description sent as text. Ollama 0.35 ran on the second port for these checks.
Ask nimble
question="Does the customer ask for a refund?"
printf '%s\n' "I want to send this back." |
thinkthen decide "$question" \
--backend ollama \
--url http://localhost:11535/v1true
question="Does the customer ask for a refund?"
cat <<'EOF' |
Please refund my order. It arrived broken.
Thanks for the quick help yesterday!
I want to send this back.
EOF
thinkthen decide "$question" \
--lines \
--backend ollama \
--url http://localhost:11535/v1{"input":"Please refund my order. It arrived broken.","value":true}
{"input":"Thanks for the quick help yesterday!","value":false}
{"input":"I want to send this back.","value":true}Ask tev1
question="Does the customer ask for a refund?"
printf '%s\n' "I want to send this back." |
thinkthen decide "$question" \
--backend ollama \
--url http://localhost:11535/v1 \
--model tev1true
A pulled model can change under the same name. After a new pull, pass --refresh-cache once. It asks every question again and replaces the answers in the answer cache.
From your language
Each page shows how its language names a backend.
On GitHub: github.com/botassembly/thinkthen