Release notes, v0.11.4
TandemLLM 0.11.4 adds Agents mode to the Chat tab. The main agent plans with you and hands every file write and every multi-step build or fix to a worker, so the file texts live in the worker's context and leave with it. The engine keeps the worker's and the parent's cache rows while they take turns: in the live checks, no worker call after the first read its prompt from 0. Every change is in CHANGELOG.md, and the PDF below is the manual.
Agents mode
- A chat setting,
agents, off by default. The composer's agents chip turns it on for one chat, and the settings switch sets the default for new chats. In a chat with messages the switch first says how many tokens the next message reads again. - The main agent gets a
tasktool. Each call starts a worker: a full run on a hidden conversation that sees the task, its brief, the todo list and your message, and nothing else of the chat. The worker uses the chat's sandbox and files and makes at most 40 calls; a run starts 8 tasks at most. - In Agents mode the main agent reads and delegates. It has read_file, glob, grep, web search, render_page and task, and bash, write_file and edit_file tell it to give the work to a worker.
- chatd checks the brief and the report. A brief needs its Goal, Files, Constraints and Check lines and carries no code. A report that misses a field goes back to the worker once. Below each report chatd lists the files the task changed, the files the report left out, the checks that ran and the claims with no call behind them.
- A Task card shows each worker: its status in words, call k of max, tokens, time, the brief, the report, chatd's check, its screenshots and its transcript. Stop, a queued message and Continue reach the worker.
- The Context panel shows each running worker in its own section, with its context bar, its prefill bar and tok/s, or its decode rate, first token and acceptance. The Now dock has a row per worker.
Chat tab
- A written file's text goes to the model as a stub from the next request on (path, lines, bytes, sha256), and a long read or command output stays whole until a compaction. The store keeps every text. One run on 2026-10-17 had grown from 25k to 162k tokens in 50 minutes.
- A compaction cuts until the request lands under half the limit that set it off. The log gives the size before and after.
- A memory refusal compacts the chat and the run goes on, instead of retrying the same prompt for 10 minutes and ending interrupted.
- A run on a cloud model takes no run slot, so a DeepSeek chat no longer waits behind two chats on the engine.
- Tool screenshots are append-only, so an earlier screenshot no longer changes the prompt.
render_pagesays the check browser has WebGL2 and no WebGPU. - A failed
finish_runno longer wedges a conversation (#41), and chatd's store releases its lock when a transaction cannot begin (#14).
Engine and caches
- A worker's request (
X-Tandem-Worker,X-Tandem-Parent-Session) is never a guest of another conversation. For 600 s after a worker's last request its parent's rows go to the NVMe rather than away, and a returning parent tries slot 0 first. - The park and the NVMe spill keep conversations they used to drop: a swap parks the longer conversation whole, a conversation the park refuses goes to the NVMe, and a restore parks the conversation it reads over.
- A request with images resumes at the end anchor, as a text request already did (
QWEN38_MM_END=offrestores the old path). - The live row shows a prefill's rate from its first progress mark and while a layer-major window runs.
- These restores copy rows the engine computed before and compute none. The tests hold every such resume's logits to a cold prefill's within 1e-4; the served text against 0.11.3 was not measured.
Proxy and setup
- The proxy closes a socket whose TLS handshake failed, which leaked one fd per failed request (#38).
- The Setup Guide's reset and an apply cannot run at once (#40).
Pull requests #14, #38, #40 and #41 are by NotMainstream.
Upgrade
Run the 0.11.4 installer again, then restart the engine and chatd. chatd's store moves to v8 in place at its first start. On a box you installed with --setup:
curl -fsSLO https://raw.githubusercontent.com/0xBakeer/TandemLLM/v0.11.4/install.sh
bash install.sh --setup --force-setup --yes
bash ~/TandemLLM/run/ops/use-profile.sh <your profile>
tandem chat restart
A box installed without --setup upgrades with bash install.sh --yes and the same --dir, then tandem restart and tandem chat restart.
Files of the release
- tandemllm-manual-0.11.4.pdf (4482 KiB)