Contents TandemLLM Docs
v0.9.1
Star58

Release notes, v0.9.1

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

TandemLLM 0.9.1 adds web search and media playback to the Chat tab, and turns on the loop guard and memory notes in the shipped conductor profiles. The decode path does not change. Every change is in CHANGELOG.md, and the PDF below is the manual.

What's new

  • Web search in the Chat tab: a built-in web_search tool with DuckDuckGo (the default, no setup) or your own SearXNG instance, set in the chat settings. The model cites the URLs and reads a page with web_fetch.
  • Media in the Chat tab: video, audio and PDF files open in a player or the browser's PDF viewer, in the Files pane and the present card. chatd streams a workspace file with byte ranges, with no 2 MiB cap.
  • The loop guard is on in the shipped coding, chat-app, hermes, overnight and chat profiles. When the model makes the same tool call a third time in one user turn and the results were the same each time, the guard stops the call and the model writes a different one.
  • The loop escape: after a repeated or near-repeated call, the session samples with the model card's settings until it makes progress, then decodes greedy again. A client's own sampling wins. Output changes on those turns only.
  • Memory notes are on in the shipped chat, coding, hermes and chat-app profiles, so the Chat tab sees them too. The model is told the notes are its memory between chats. The Context panel shows a turn's notes.
  • --reasoning-effort none and off turn thinking off for every request that says nothing about thinking.

Fixes

  • Setup Guide: after a reload, a finished install job stays finished and keeps its whole log. The change list names the keys a model switch drops from run/setup.env.
  • Setup Guide: the fetch step downloads the models of the tools you turn on (the shadow reader, the narrator, Laya). A failed shadow reader load is tried again after 300 s.
  • The 27B's EXL3 profiles fetch only the base tensors an EXL3 load reads, by HTTP range requests: 3.54 GB instead of 30.41. A fresh exl3-6.0 downloads 36.48 GB, not 63.34.
  • Behind a reverse proxy, a 502, 503 or 504 during an engine restart shows the dashboard's cached page, which reloads once /health answers.

Upgrade

Stored conductor profiles migrate once at the first start. In the five profiles above, the loop guard turns on unless a stored version of the profile ever had it on, and a profile without a sampling section gets one with the loop escape on. A stored chat, coding, hermes or chat-app profile without a memory switch gets memory: on; an explicit value stays.

To upgrade a box you installed with --setup, check out 0.9.1 and switch to your profile again. Its files are on disk already, so nothing downloads twice:

curl -fsSLO https://raw.githubusercontent.com/0xBakeer/TandemLLM/v0.9.1/install.sh
bash install.sh --setup --force-setup --yes
~/TandemLLM/run/ops/use-profile.sh <profile>

A box installed without --setup upgrades with bash install.sh --yes and the same --dir. On a new DGX Spark:

curl -fsSLO https://raw.githubusercontent.com/0xBakeer/TandemLLM/v0.9.1/install.sh
bash install.sh --setup --yes
~/TandemLLM/run/ops/use-profile.sh lfm25-exl3-3.5 --dry-run   # each file's URL and size
~/TandemLLM/run/ops/use-profile.sh lfm25-exl3-3.5

Known limits

  • DuckDuckGo can answer with a rate limit or a bot check (HTTP 202). The tool returns that as an error result. SearXNG needs an instance with the json format on.
  • The loop guard catches a repeated call. A model that repeats a failing approach with different calls is not caught yet.
  • Carried over from 0.9.0: LFM2.5 has no draft head, and its shadow reader and KV pool are off. On LFM2.5 the conductor adds no memory notes. The Chat tab is in beta, there is no video input to the model, and the Flash-Next 5.05 pack does not load yet.

Files of the release