Contents TandemLLM Docs
v0.12.0
Star58

Release notes, v0.12.0

TandemLLM 0.12.0 on GitHub, published 2026-10-19. The changelog chapter of this version: Changelog summary; the full file: CHANGELOG.md.

TandemLLM 0.12.0 gives API clients that offer tools a conductor profile of their own. An OpenAI SDK, curl or an unnamed client that sends tools and names no profile now gets tools: the prompt as the client sent it, token for token the raw path's, with the loop guards and the tool-call checks acting. Every change is in CHANGELOG.md, and the PDF below is the manual.

Tool calls

  • The tools profile. A request resolves to the X-Tandem-Profile header, else the profile mapped to its client, else tools when no profile maps the client and the request offers a function tool. It adds no note, package, memory or effort change. D1, D1b, D2, E1, C3, C4 and C5 act, and each act is journaled. A call goes out whole once the checks have seen it.
  • Structured outputs with tools. A response_format or structured_outputs beside tools was a 400. The answer is now a tool call or the document, and the model's own first answer token picks which. Speculation changes no token.
  • C5, one mutation per turn. An answer with two or more calls that change something outside the conversation (send, schedule, create, write, delete) is written again one call at a time, each after the last one's result. It acts in tools and journals in shadow in coding, chat-app, hermes and chat.
  • The secret echo mask. A key that a tool result showed the model is masked where the answer repeats it: sk-abc123 becomes sk-[redacted]. Call arguments are untouched.
  • On the raw path an SDK, curl or unnamed client gets the thinking in reasoning_content and the answer alone in content.

tool-eval-bench

We ran tool-eval-bench on one DGX Spark with Qwen3.8-27B in the EXL3 6.0 pack, seed 42, temperature 0, each row one run. On the 69 scenarios:

path score time
raw, thinking off 92 8.0 min
raw, effort low 96 12.7 min
raw, effort medium 96 13.4 min
raw, effort high 95 11.9 min
raw, effort xhigh 97 12.4 min
conductor, tools 95 15.0 min
conductor, effort by turn class, no packages 96 13.5 min
conductor, effort by turn class, packages 94 26.0 min
conductor, chat 91 28.0 min

Two runs of the same prompt scored 95 and 97, so rows within 2 points are the same. In the bench's hard mode, 28 scenarios, the conductor scored 91 and raw 84, one run a side. docs/tool-eval-bench.md has every row with its settings and command, and docs/benchmarks.md says how to run the bench.

Fixes

  • /v1/models/{id} asks for the key /v1/models asks for. The standalone proxy times out a request that sends nothing for 60 s. chatd compacts and retries once on a 400 that says the request is over the window. An operator sets a relayed model's output limit under Backends (#21).
  • Pull requests #36, #46, #47, #49, #50, #51, #53 to #61, #64, #67, #70, #71 and #73 to #76 by AgentSparko fix the conductor's journal writer and session pages, the collectors, the proxy's TLS sockets and model cards, the sandbox relay, chatd's finish_guard, and stale responses in the dashboard.

Update

Run the installer again: bash ~/TandemLLM/src/install.sh --yes --ref v0.12.0. A box with stored conductor documents gets the tools profile at its next start; a stored monitor document gets C5 with tools/monitor_migrate.py --put http://127.0.0.1:8000 --tasks C5, run on the box.

Files of the release