Once per user message. A new message asks the classifier, the class sets the thinking cap (low is 1,024 tokens, high 16,384), and a turn that only carries tool results keeps the session's class. So a failed tool call does not move the cap.
What changes after a failed call is the monitor, not the effort. It repairs a call that does not parse, asks for something different when the same call comes a third time with the same result, and checks a claim of done against the tool evidence.
I tried the other direction once: tool turns capped at 1,024 thinking tokens. A debugging session hit the cap mid thought and the model talked itself into "fine". Reverted the same day.
31 days on tandemllm, 45k requests, 1.3b tokens, and a bill of $0.13 from the deepseek api.
it works as one provider and listed all my paid and local ai models under one provider in open webui and opencode, or any end. local models and paid ones sit behind the same url, and it handles my daily work now
TandemLLM now runs Flint, the open coding model from @Recursive_SI.
Use Recursive's BF16 weights or our EXL3 packs at 4.0 and 6.0 bits, made with @turboderp_'s exllamav3.
On one DGX Spark the 4.0 pack decodes at 128 to 137 tok/s plain, one run per prompt.