TielCoder β€” Ornith-1.5 35B-A3B, sharpened, dynamically quantized
SWE-bench-Live: Tiel solves 12 of 25, level with Opus 4.6 and ahead of KAT-Coder, Nail, stock Qwen3.6-35B-A3B and Ornith

Straight to the point

Tiel is the fast coder of the arsenal. At 4-bit quantization and 22 GB it fixes real codebase issues at the rate (and speed, with the right GPU) of Opus 4.6 medium, while holding the best multi-turn conversation of any local model we have measured. It is also cheerfully bad at trivia.

Pick it for work. Pick something else for exams.

This is Ornith-1.5-35B-A3B re-quantized dynamically with our own imatrix and carrying the Sharp chat template inside the GGUF. Find the non-MTP GGUFs here, and the non-MTP MLX version here.

The numbers

Where it sits against the other local builds SWE-bench-Live: Qwen3.8-27B solves 16 of 25 at 50.2 minutes per attempt, Dirk 15 at 20.1, TielCoder 12 at 8.6, stock Qwen3.6-35B-A3B 8 at 5.5 Multi-turn conversation Claw-Eval multi-turn: Tiel 67.2 overall against Ornith 65.3 and Nail 60.5, over 114 scored conversations each Reasoning and knowledge MMLU-Pro: Tiel 73.7 against Nail 84.0, both at 4-bit, with the control arm isolating the template

Where it stands. On 25 SWE-bench-Live problems Tiel fixes 12 β€” the same as Opus 4.6 (medium), four more than Ornith-1.5 itself, three more than Nail, and four more than Sonnet 5 (medium). Among models of its own class it is first; the ones ahead are dense 27Bs and Opus 5. Its time per attempt is also steadier than Nail's: an 8.6 minute median against 7.2, but a 12.3 minute mean against 15.7, because it lacks Nail's tail of expensive attempts.

How it talks. On Claw-Eval's multi-turn tasks Tiel scores 67.2 against Nail's 60.5 and its own base's 65.3, over 114 scored conversations each. It earns that by answering better rather than by asking more: against the base it is 3.8 points up on answer quality and 5.1 down on clarifying questions. The score weights answers four to one, so the trade pays β€” but if you want a model that interrogates a vague request before acting, the base does that better.

What it costs. 73.7 on MMLU-Pro against Nail's 84.0, both at 4-bit. Most of that is inherited rather than built: Ornith-1.5 scores 78.0 where stock Qwen3.6-35B-A3B scores 85.3. Our quantization is not the cause β€” the same quant carrying Ornith's own template scores exactly what Ornith scores. The remaining 4.3 points are the Sharp template buying shorter answers, which is the trade this build exists to make.

Which one. Agentic coding, or long conversations that have to stay useful β†’ Tiel. Exam-style knowledge and hard reasoning β†’ Nail, which is 10.3 points better on MMLU-Pro and 6.7 worse in conversation. The most fixes per problem regardless of weight β†’ Dirk, the dense 27B that solves 15 of the same 25 β€” one behind stock Qwen3.8-27B, at 2.5x its speed.

Run it

file size fits notes
Tiel-Coder-35B-A3B-MTP-UD-Q4_K_XL.gguf 23.3 GB 32 GB start here β€” the benchmarked tier plus the head
Tiel-Coder-35B-A3B-MTP-UD-Q5_K_XL.gguf 27.5 GB 32 GB more precision headroom

Each is its stripped counterpart in Tiel-Coder-35B-A3B-GGUF plus 0.9 GB of MTP head β€” the same block at the same precision in both tiers, because the recipe pins it rather than letting it ride the tier's own bit-width.

hf download peculiar-ragdoll/Tiel-Coder-35B-A3B-GGUF-MTP \
  Tiel-Coder-35B-A3B-MTP-UD-Q4_K_XL.gguf mmproj-BF16.gguf --local-dir Tiel-MTP
llama-server -m Tiel-MTP/Tiel-Coder-35B-A3B-MTP-UD-Q4_K_XL.gguf -ngl 99 --jinja \
  --spec-type draft-mtp

--spec-type draft-mtp turns the head on at llama.cpp's defaults. Two knobs tune it, and what they should be set to depends on your hardware β€” see below.

The head does nothing unless you ask for it. Without --spec-type draft-mtp llama.cpp ignores those tensors entirely and you are running the base model carrying 0.9 GB of dead weight β€” in which case take the stripped ladder instead, which is the same model in less space.

Sampling: temperature 1.0, top_p 0.95, top_k 20. For agentic coding we ran temperature 0.6.

It can see. Vision works exactly as on the base repo β€” mmproj-BF16.gguf, Ornith's own projector passed through unmodified, shared by both tiers.

The multi-token-prediction head

Ornith-1.5 ships an MTP (nextn) block that drafts a token ahead of the main model, and this repo exists to keep it.

It was broken, and now it is not. When our first ladder was baked, that block was untrained: every matrix sat at a standard deviation of 0.020 with kurtosis 3.00 and a largest value of 5 standard deviations, which is a fresh random initialization. Drafts from random weights are accepted at chance, so we stripped it. Ornith replaced it on 2026-08-23, re-uploading a single shard with a trained head. We measured the replacement rather than take the announcement on faith: kurtosis 25.1 with a 98-sigma outlier, and 825 on the nextn projection. That is a trained network.

What it did on our hardware. Sweeping llama.cpp's two knobs on UD-Q4_K_XL, against the same model with speculation switched off:

--spec-draft-n-max --spec-draft-p-min tok/s vs off accepted
β€” (off) β€” 77.4 1.00x β€”
1 0.0 94.4 1.22x 83.3%
3 0.0 89.9 1.16x 59.9%
8 0.0 46.5 0.60x 30.2%
1 0.8 85.3 1.10x 96.0%
3 0.8 86.0 1.11x 92.7%
8 0.8 82.3 1.06x 90.1%

Those are our numbers on our box, not a specification. The gain comes from verifying several tokens in one forward pass instead of decoding them one at a time, so it turns on how your hardware prices a batched pass against a single-token one β€” which moves with the GPU, the tier you run, the context length, and whatever else is resident. Short drafts happened to win here and long ones lost badly; that balance is precisely the part that differs between machines.

So sweep it. It takes a few minutes and the two knobs pull against each other:

  • --spec-draft-n-max β€” how many tokens to draft per step. Drafting further ahead wins more when the guess lands and wastes more when it does not, and acceptance falls the further ahead you go.
  • --spec-draft-p-min β€” discard a draft whose probability is below this. Raising it lifts the acceptance rate and wastes less verification, at the cost of drafting less often.

Judge by tok/s, not by acceptance rate. They come apart: our highest-acceptance setting (96.0%) was slower than our fastest one (83.3%), because it bought that acceptance by drafting less. Time it end to end against --spec-type none on prompts that look like your work.

How the imatrix was made

Every tier is quantized against an importance matrix we generated ourselves, rather than a borrowed one. The calibration corpus is 49 M characters drawn from eaddario/imatrix-calibration (MIT): about three quarters code_medium and one quarter combined_all_large, interleaved so the two alternate throughout rather than sitting in separate halves. That mix is deliberate β€” Tiel is meant for coding, so the corpus leans that way, while the combined slice keeps maths, tool-calling and non-English text represented so those paths are not the ones that get quantized carelessly.

The matrix was measured on a Q8_0 of the original BF16 weights, over 3,000 chunks of 512 tokens (~1.5 M tokens), which is enough for every expert to be exercised many times over β€” this is a 256-expert mixture that routes 8 per token, so a short corpus would leave some experts barely seen. The shipped tiers are then quantized from the BF16 source using that matrix. These MTP tiers reuse that exact matrix, unchanged: the fix upstream touched only the MTP tensors, which an importance matrix never covers anyway, so re-measuring would have produced the same file.

The matrix itself ships here, as Tiel-Coder-35B-A3B.imatrix.gguf (183 MiB, 510 tensors) β€” so a tier we don't ship is one command away, without spending an hour and a half measuring your own:

hf download peculiar-ragdoll/Tiel-Coder-35B-A3B-GGUF Tiel-Coder-35B-A3B.imatrix.gguf --local-dir .
llama-quantize --imatrix Tiel-Coder-35B-A3B.imatrix.gguf Ornith-1.5-35B-BF16.gguf out.gguf IQ4_XS

Be clear about what that does not give you: the tiers in the table above are cut with per-tensor Dynamic recipes layered on top of this matrix, and they carry the Sharp template. A plain llama-quantize from the upstream BF16 reproduces neither.

eaddario's code slice is itself built from Open-Critic-GPT, opc-sft-stage2, Magicoder-Evol-Instruct-110K and McEval-Instruct.

Limitations

  • Exam scores are its weak axis. If you are picking on MMLU-Pro, Nail is 10.3 points better.
  • It asks fewer clarifying questions than its base, by 5.1 points. Terser is not always better; a vague request gets answered rather than questioned.
  • Benchmarks are one run per problem on SWE-bench-Live and three seeds on MMLU-Pro. Treat small differences as noise.
  • Chinese and English only, inherited from the base.

Credits

  • ornith-ai β€” the Ornith-1.5-35B-A3B weights (MIT).
  • Unsloth β€” the Dynamic GGUF quantization method this reproduces.
  • froggeric β€” the template lineage Sharp builds on.
  • eaddario β€” the calibration corpora the imatrix was measured on (MIT).
  • llama.cpp β€” llama-quantize / llama-imatrix / llama-server.

MIT, inheriting Ornith-1.5's license.

Downloads last month
-
GGUF
Model size
0.4B params
Architecture
clip
Hardware compatibility
Log In to add your hardware

2-bit

3-bit

4-bit

5-bit

6-bit

8-bit

Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support

Model tree for npario/Tiel-Coder-35B-A3B-GGUF-MTP

Quantized
(102)
this model