Contents TandemLLM Docs
v0.14.0
Star58

Release notes, v0.14.0

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

TandemLLM 0.14.0 adds Recursive's Flint, a mixture-of-experts model for coding agents, from our EXL3 packs at 4.0 and 6.0 bits a weight and from Recursive's BF16 checkpoint. Every change is in CHANGELOG.md, and the PDF below is the manual.

Flint

  • 0xBakeer/TandemLLM-Flint-EXL3-4.0 at a04d4b95, 20.6 GB, and 0xBakeer/TandemLLM-Flint-EXL3-6.0 at 17e16040, 30.5 GB, public. Every projection is at 4 or 6 bits, the head at 5 or 8.
  • exllamav3 1.6.2 converted them from the BF16 checkpoint, with a patch that adds the architecture; the patch is in each repository. The top layers' expert activations pass fp16's range, so the packs store each routed expert's up projection divided by 128 and say so in config.json.
  • ops/use-profile.sh flint-exl3-4.0 downloads the default and starts it, and the Setup Guide lists all three installs: 4.0, 6.0 and flint-bf16 from RecursiveSI/flint. A download needs no token. The packs and the BF16 checkpoint are in one collection.
  • The engine runs it on a new family, engine/models/flint: 35 layers with a 513-token window kept in a ring, 14 full layers without positional encoding, a learned sink per head, and 6 of 256 experts and a shared one a token. It serves two requests at once, with a window up to 262,144 tokens.
  • Flint has no draft layer, so every profile drafts with the lookup, cut by StairCut from the pack's price file. After a round where StairCut drafted nothing, the engine takes 1, 2, 4, then 8 plain steps before it looks again.
  • Flint opens its own reasoning block. Thinking off answers at once, and an effort level or a token budget closes the block at its cap.
  • Flint writes tool calls in its own form. The conductor's checks read them in that form, a long string argument streams as the model writes it (SRV-687), and tool_choice required writes the calls in that form too (SRV-689).

Measured on one DGX Spark on 2026-10-22, a fresh server for each row, greedy, thinking off, 512 tokens, one run each. The last column is a 2,048-token answer that writes a whole HTML game:

tok/s prose code chat edit copy 2,048-token game
4.0 plain 136.6 133.2 133.3 128.2 128.2 129.3
4.0 lookup (default) 135.4 139.8 134.0 142.3 480.0 149.5
6.0 plain 98.4 97.2 97.1 94.3 94.3 95.0
6.0 lookup 97.1 103.2 98.5 107.3 353.4 114.1
BF16 plain 42.6 42.4 42.4 41.9 41.9 41.9
BF16 lookup 42.2 50.9 42.9 48.4 144.1 42.5

Flint EXL3 4.0 decode speed on one DGX Spark: plain and with the lookup

Every drafted text is the plain run's. On prose the lookup runs 0.5 to 0.9 % under plain: it drafts 7 of 340 rounds, and those cost about what they save.

Long prompts slow the decode, because every token reads the 14 full layers' keys and values. The 4.0 pack decodes at 101.7 tok/s at 16k, 61.0 at 64k, 39.5 at 128k and 23.0 at 256k. A verify block reads them once, so the lookup gains more there: behind a 124,000-token prompt of code, a copy ask ran at 79.5 tok/s against 41.3 plain and an edit ask at 129.7 against 42.4. A 4,096-token prompt reads at 5,375 tok/s.

Against BF16, on 50 rows of 2,048 tokens of docs written after the model's training cutoff, the 4.0 pack gets KL 0.194 and top-1 79.7 %, the 6.0 pack KL 0.070 and 90.8 %. Flint is sensitive to rounding: two BF16 forwards of the same weights already differ by KL 0.034. Take 4.0 for speed and 6.0 when the text matters more. docs/flint.md has the checks, and measurements/2026-10-22-summary.json the runs. Sampled decoding, images and repeat runs were not measured.

Other changes

  • A turn resumed from a session snapshot keeps its end anchor (SRV-678). The next turn had read 21,782 tokens again after a restore at 20,480.
  • End alignment serves a tool call the template wrote back differently as the model wrote it (SRV-679), so the turn after it resumes at its end.
  • Every prompt attention reads the KV heads as they are (SRV-673, SRV-681). At 131k one layer's NemotronH MTP step went from 28.5 to 1.6 ms, and a 179,678-token Ornith replay from 23.2 to 38.3 tok/s, with the same bits.
  • After a lost CUDA context /health fails, a completion gets a 503, and the watchdog restarts the engine (SRV-671). A scratch turn can no longer forward an image's key ids into the embedding, which had caused it (SRV-669).
  • In the Chat tab, screenshots fold in blocks, so a long run no longer reads every turn again (SRV-676), plan mode keeps the chat's effort word (SRV-663), and the run monitor steers a run that circles the same files, then stops it (SRV-677).
  • When a tool call does not parse, the note to the model shows the call's form with a tool the request offers, in the model's own form, and no placeholder it could copy (SRV-688).
  • tools/release.sh makes a release with one command (OPS-223), and tools/chat_fork.py runs the live model from a recorded step (SRV-667).

The other models write the same text as in 0.13.0 and keep their saved conversations.

Known issues

  • At its default sampling (temperature 1.0), Flint 4.0 named a wrong argument or a tool the request did not offer in about 2 of 8 opencode asks (SRV-690).

Update

Run the installer again: bash ~/TandemLLM/src/install.sh --yes --ref v0.14.0, then tandem restart and 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. For Flint, run ops/use-profile.sh flint-exl3-4.0; it downloads 20.6 GB and needs 56 GiB of free memory to start.

Files of the release