Release notes, v0.12.1
TandemLLM 0.12.1 serves the first community pack on Nemotron 3.5 Super VL: styles01's EXL3 pack at 3.5 bits a weight, text only, with LiLiCorr and the lookup. A request with images now takes a side slot, and eleven pull requests from three contributors fix chatd, the Setup Guide, the GGUF reader and the image path. Every change is in CHANGELOG.md, and the PDF below is the manual.
Super VL community pack
- aitamedia/NVIDIA-Nemotron-3.5-Super-VL-120B-A12B-EXL3-3.5bpw at 358667cf, 57.8 GB, by styles01 (#63). Routed experts are at 3.5 bits, every other projection at 5, and the head is fp16. It holds no image tower, so it serves text.
ops/use-profile.sh community/nemotron-super-vl-exl3-3.5bpwdownloads it and starts it with the limits, sampler, LiLiCorr drafter and lookup of ournemotron-super-vl-exl3-4.0profile. It shows in the Setup Guide under Community weights.- Super VL is now a community base (ENG-377).
python -m server.setup.community check-pack community/<id>checks a pack's files and names what differs. - Its config ties the head to the embedding, but the pack stores its own head. NemotronH now reads a stored head in that case and notes it in the load audit.
Measured on one DGX Spark on 2026-10-20, one request at a time, 512 greedy tokens, thinking off, one run each:
| tok/s | tokens a block | |
|---|---|---|
| plain | 25.9 | 1 |
| prose | 33.2 | 2.97 |
| code | 53.9 | 5.38 |
| chat | 37.4 | 3.41 |
| edit | 99.0 | 15.5 |
| copy | 112.3 | 16.0 |
Every drafted text is the plain run's. A cold prompt of 7,507 tokens reads at 529 tok/s. At load the weights take 53.58 GiB, and the served profile (262,144 tokens, 3 slots) starts and answers in 110 s. Against exllamav3 1.6.0's own forward on the same pack, the top token agrees at 510 of 512 positions; both others are near ties, and the KL is 0.0019.
Plain decoding runs at 25.9 tok/s on this pack and at 31.1 on our 4.0 pack. From the headers, a decode token reads 7.95 GB of this pack and 6.74 GB of ours. measurements/0.12.1-summary.json has the runs. Images, requests at once and repeat runs were not measured.
Images on a side slot
A request with images now takes a side slot the way a text request does (SRV-629). On 2026-10-19 two Chat-tab agent runs sent all 31 of their requests, each with 3 to 8 screenshots, to slot 0 while slot 1 sat idle: 56.6 minutes of wall time for 18.9 of decoding. Each side slot keeps its own image context and rotary offset, and on the 27B one image request wrote the same 300 tokens on slot 1 as twice on slot 0. QWEN38_SIDE_IMAGES=off keeps images on slot 0, as in 0.12.0.
Fixes
- The Chat tab's port preview keeps an app's redirects inside the preview (SRV-631). The Chat view starts nothing when it closes during a sign-in (VIS-235).
- joeynyc, #78 to #85: chatd sends a text attachment it could not save, measures the inline budget on the branch a message goes on, and forwards the port preview's path as sent. The Setup Guide's remove checks for a running job under the lock. GGUF headers with sizes that overflow are refused, and a 16 by 40,000 pixel image no longer fails with a 400.
- AgentSparko, #34 and #43: a Finish answer that lands after you left the Setup Guide opens no install page (issues #4 and #5). chatd's sandbox reader closes its stream on every exit, and an MCP server's body and SSE lines are capped.
- SECURITY.md says how to report a vulnerability in private.
Every profile writes the same text as in 0.12.0. The NemotronH fingerprint changes, so saved Bolt, Lightning and Super VL conversations from 0.12.0 read their prompt again on the first request.
Update
Run the installer again: bash ~/TandemLLM/src/install.sh --yes --ref v0.12.1, then tandem chat restart. On a box you installed with --setup, add --setup --force-setup and run ops/use-profile.sh with your profile after it.
Files of the release
- tandemllm-manual-0.12.1.pdf (4494 KiB)