Documentation for v0.19.1, an older release. Read v0.19.6, the latest release

Supported model families

Which model families run on llamadart, how their chat templates, tool calls and reasoning are handled, and which ones are validated with a real model.

On this page

llamadart has no model allowlist. Any GGUF that the pinned llama.cpp runtime can load will generate text. What varies by family is how chat messages, tool calls and reasoning are formatted and parsed, and that follows from the model's chat template.

How a family is recognized#

  • GGUF: llamadart reads the chat template embedded in the file (tokenizer.chat_template, or tokenizer.chat_template.tool_use when tools are passed) and detects its format from marker strings, in llama.cpp's priority order. It does not look at the model name or architecture.
  • .litertlm: the native runtime does not expose the bundle's template, so llamadart picks one from the file name (gemma-4, gemma-3n, gemma-3/gemma-2, qwen3 or qwen2.5) for format detection and output parsing. Set ModelParams.chatTemplate to override it.
  • No match: the template renders as-is, with no tool-call or reasoning parsing. If you pass tools, llamadart adds a generic JSON tool-call instruction instead.

To see what a model will receive, render the prompt with engine.chatTemplate(...); see Chat templates and output parsing. For native .litertlm this shows the file-name template, which the runtime renders only for text-only requests to Qwen3 bundles. Every other request, including Qwen3.5, Gemma and any request with media, renders the bundle's embedded template, so the native prompt can differ.

Evidence levels#

  • Validated: the llamadart validation pack (packages/llamadart_validation) has a profile that runs the real model.
  • Template-tested: CI detects and renders the family's published chat template, and parses sample output where one is recorded. Templates come from llama.cpp's template set (release b10549) and from real GGUF files.

Chat families#

FamilyArtifactsDetected formatEvidenceExample repo
Qwen3.5 GGUF, .litertlm Qwen3-Coder XML (GGUF); bundle's own template (.litertlm) Validated: GGUF on CPU, Metal, CUDA, Vulkan and WebGPU; LiteRT-LM on CPU and GPU (no thinking, see below) ggml-org/Qwen3.5-0.8B-GGUF, litert-community/Qwen3.5-0.8B
Gemma 4 GGUF, .litertlm Gemma 4 Validated: GGUF and LiteRT-LM unsloth/gemma-4-E2B-it-GGUF, litert-community/gemma-4-E2B-it-litert-lm
Qwen3 GGUF, .litertlm Hermes Validated: LiteRT-LM. Template-tested: GGUF litert-community/Qwen3-0.6B
Gemma 3, 3n, 2 GGUF, .litertlm Gemma (generic JSON tool calls) Validated: LiteRT-LM. Template-tested: GGUF litert-community/Gemma3-1B-IT
Qwen2.5, QwQ GGUF Hermes Template-tested Qwen/Qwen2.5-0.5B-Instruct-GGUF
Qwen3-CoderGGUFQwen3-Coder XMLTemplate-tested—
FunctionGemma GGUF FunctionGemma Template-tested unsloth/functiongemma-270m-it-GGUF
Llama 3.1, 3.2, 3.3GGUFLlama 3Template-tested—
Mistral NemoGGUFMistral NemoTemplate-tested—
Mistral Small 3.2, Ministral 3, Devstral GGUF Ministral Template-tested —
DeepSeek R1 distills, V3.1, V3.2, V4 GGUF DeepSeek R1, V3, V3.2, V4 Template-tested —
GLM 4.6, 4.7 Flash GGUF GLM 4.5 Template-tested unsloth/GLM-4.7-Flash-GGUF
Granite 3.3; Granite 4.0, 4.1 GGUF Granite; Hermes Template-tested —
LFM2 8B-A1B, LFM2.5 8B-A1B, LFM2.5 Instruct GGUF LFM2 Template-tested —
Phi-3.5, SmolLM3 GGUF None (generic JSON tool calls) Template-tested —

Other families whose published templates are template-tested with their own format: GPT-OSS, Seed-OSS, Nemotron Nano v2, Apertus, Kimi K2 and K3, MiniMax M1, M2 and M3, Command R7B, Cohere2 MoE, MiniCPM5, Hunyuan Hy3, Solar Open, Poolside Laguna, Muse Glimmer, Functionary v3.1 and v3.2, and FireFunction v2. Nemotron 3 Nano and StepFun 3.5 Flash use the Qwen3-Coder XML format; Hermes 2 Pro, Hermes 3, Bielik, Reka Edge, MiMo-VL and Apriel 1.5 use the Hermes format.

"Generic JSON tool calls" means llamadart supplies a fallback protocol when the selected template has no recognized tool-call format: it asks the model to answer with a tool_call or response JSON object and parses that. This is an intentional extension to the tested llama.cpp behavior, not evidence of native tool support or reliable tool selection. Templates can omit tool definitions even when a grammar constrains the output. See Generic JSON fallback for the protocol, upstream comparison and prompt limitations.

Where a format defines reasoning markers, such as <think>, Gemma 4's thought channel or Mistral's [THINK], the parser returns reasoning separately from the reply. See Text generation and streaming.

Qwen3.5 .litertlm bundles render their own embedded chat template (#1134), so ModelParams.chatTemplate is ignored for these files. The Qwen3.5-0.8B_int8, Qwen3.5-0.8B-VL_int8 and Qwen3.5-0.8B_int8_gpu_composite_v0190 bundles (LiteRT-LM 0.19 and earlier) close an empty <think> block in the generation prompt and never read enable_thinking, so enableThinking: true produces no reasoning there. The Qwen3.5-0.8B_dynamic_wi8_afp32 bundle reads enable_thinking but needs LiteRT-LM 0.20.0 or later, so it fails on the pinned 0.19.1 runtime. Use the GGUF for Qwen3.5 thinking; Qwen3 and Gemma 4 .litertlm bundles support it.

Vision and audio#

GGUF vision and audio need a matching projector (mmproj) file. Gemma 4 E2B (vision and audio), Qwen3.5 (vision) and LFM2-VL (vision) are the families the examples use. .litertlm bundles process media themselves. See Multimodal input.

Speech, embeddings and decision models#

TaskModelEvidenceRepo
Speech to text (whole file) Qwen3-ASR 0.6B Validated ggml-org/Qwen3-ASR-0.6B-GGUF
Speech to text (live, LiteRT-LM) Moonshine Tiny Validated litert-community/moonshine-tiny
Text to speech Qwen3-TTS 1.7B Validated ggml-org/Qwen3-TTS-12Hz-1.7B-Base-GGUF
Text to speech LFM3-Audio 2B Checked on macOS arm64 LiquidAI/LFM3-Audio-2B-GGUF
Text to speech Soprano 1.1 80M Checked on macOS arm64 Convert ekwek/Soprano-1.1-80M ( guide )
Text to speech Chatterbox Turbo Checked on macOS arm64 ggml-org/chatterbox-turbo-GGUF
Text to speech Chatterbox Multilingual Checked on macOS arm64 ggml-org/chatterbox-GGUF
Text to speech Pocket TTS (English) Checked on macOS arm64 macolomb/pocket-tts-without-voice-cloning
Embeddings EmbeddingGemma 300M Used by the basic example ggml-org/embeddinggemma-300M-GGUF
Decision models Laya (ModernBERT) Validated fr0stbit3/laya-gguf

See Speech to text, Text to speech, Embeddings and Decision models.

If a family behaves oddly#

  1. Render the prompt with engine.chatTemplate(...) and compare it with the model card.
  2. Check which format was detected: ChatTemplateEngine.detectFormat(template).
  3. For tool calls, try a family listed above as validated before debugging your own prompts.
  4. Report the model repo and file in a GitHub issue.

Searches the latest release. Esc to close.