@bendyline/gilde 0.1.48 → 0.1.50
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/data/chat-models/index.json +1 -1
- package/data/chat-models/or/ornith1.5-9b-q4/manifest.json +2 -2
- package/data/chat-models/or/ornith1.5-9b-q4/versions/1.0.1/manifest.json +77 -0
- package/data/chat-models/or/ornith1.5-9b-q8/manifest.json +2 -2
- package/data/chat-models/or/ornith1.5-9b-q8/versions/1.0.1/manifest.json +82 -0
- package/data/chat-models/qw/qwen3.6-27b-q4/manifest.json +2 -2
- package/data/chat-models/qw/qwen3.6-27b-q4/versions/1.1.6/manifest.json +115 -0
- package/data/chat-models/qw/qwen3.6-27b-q8/manifest.json +2 -2
- package/data/chat-models/qw/qwen3.6-27b-q8/versions/1.0.4/manifest.json +127 -0
- package/data/chat-models/qw/qwen3.6-35b-a3b-q4/manifest.json +2 -2
- package/data/chat-models/qw/qwen3.6-35b-a3b-q4/versions/1.0.3/manifest.json +117 -0
- package/data/chat-models/qw/qwen3.6-35b-a3b-q8/manifest.json +2 -2
- package/data/chat-models/qw/qwen3.6-35b-a3b-q8/versions/1.0.3/manifest.json +137 -0
- package/data/chat-models/qw/qwen3.8-27b-q4/manifest.json +1 -1
- package/data/chat-models/qw/qwen3.8-27b-q4/versions/1.0.4/manifest.json +116 -0
- package/data/chat-models/qw/qwen3.8-27b-q6/manifest.json +2 -2
- package/data/chat-models/qw/qwen3.8-27b-q6/versions/1.0.3/manifest.json +127 -0
- package/data/chat-models/qw/qwen3.8-27b-q8/manifest.json +2 -2
- package/data/chat-models/qw/qwen3.8-27b-q8/versions/1.0.2/manifest.json +137 -0
- package/data/craftbook-templates/ap/api-contract-review/versions/1.1.2/test.json +82 -8
- package/data/craftbook-templates/co/code-review/versions/1.0.0/test.json +175 -53
- package/data/craftbook-templates/de/deep-security-review/versions/1.1.2/test.json +28 -1
- package/package.json +1 -1
- package/schemas/craftbook-doc.schema.json +12 -0
- package/schemas/craftbook-template-version.schema.json +12 -0
- package/schemas/craftbook-test.schema.json +12 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"schemaVersion":1,"kind":"chat-model","count":54,"entries":[{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"btl4-35b-q4","name":"BTL-4 (35B-A3B, Q4)","description":"Bad Theory Labs' agentic build of Ornith 1.0 35B, tuned for tool-heavy coding and long stretches of unattended work. Native reasoning, native tool calling, and a 256K context window that stays light on memory even when it's full. Capable-tier on-device option for machines with 32GB+ memory — see BTL-4 Compact for a smaller build.","tags":["badtheorylabs","agentic","tools","code","reasoning","long-context","moe"],"maintainer":{"name":"Bad Theory Labs","url":"https://huggingface.co/badtheorylabs"},"license":"Apache-2.0","licenseClass":"open","licenseShortName":"Apache 2.0","recoScore":10,"minGezelVersion":"1.26227","version":"1.0.1","releasedAt":"2026-08-15T00:00:00Z","parameterSize":"35B","approxSizeBytes":21391448192,"supportsTools":true,"contextWindow":262144,"kvBytesPerTokenF16":20480,"kvFixedBytesF16":64389120,"upstream":"https://huggingface.co/badtheorylabs/BTL-4","category":"coding","style":{"family":"qwen","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","prompt.private-reasoning-guidance","prompt.tool-cookbook-condensed","fabrication.detect-past-tense-no-tools","turn.ollama-num-predict-bumped","turn.preamble-folding","mcp.compact-tool-schemas"],"tuning":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":16384},"samplingWhenThinking":{"temperature":0.6,"topP":0.95},"reasoning":{"thinkingBudget":8192,"enableThinking":true},"promptTags":{"enableThinkingTag":"/think","disableThinkingTag":"/no_think"},"profiles":{"thinking-general":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":24576,"repetitionPenalty":1},"reasoning":{"thinkingBudget":8192,"enableThinking":true}},"thinking-coding":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":32768,"repetitionPenalty":1},"reasoning":{"thinkingBudget":12288,"enableThinking":true}},"thinking-precise":{"sampling":{"temperature":0.4,"topP":0.9,"topK":20,"minP":0,"maxTokens":6144,"seed":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"instruct":{"sampling":{"temperature":0.7,"topP":0.8,"topK":20,"minP":0,"maxTokens":4096,"repetitionPenalty":1,"presencePenalty":1.5},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1.1,"topP":0.95,"topK":40,"maxTokens":8192},"reasoning":{"enableThinking":false}}}},"llamaCpp":{"huggingfaceRepo":"bartowski/badtheorylabs_BTL-4-GGUF","revision":"799d011b498e3287f514eb463ea04d6624ec945f","filename":"badtheorylabs_BTL-4-Q4_K_M.gguf","sha256":"75ce22e4f603bdf3f94c2b32151bb6d3492d2ab8a34ad8a4bfa2eaef0125c50f","approxSizeBytes":21391448192,"quantization":"Q4_K_M"},"availableVersions":["1.0.1","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"btl4-compact-iq2","name":"BTL-4 Compact (35B-A3B, IQ2_XXS)","description":"Bad Theory Labs' agentic build of Ornith 1.0 35B, tuned for tool-heavy coding and long stretches of unattended work. Native reasoning, native tool calling, and a 256K context window that stays light on memory even when it's full. Optimized for low-memory machines — the whole model fits in under 10GB, so it runs on a 16GB laptop, trading some accuracy against the full-size BTL-4 build.","tags":["badtheorylabs","agentic","tools","code","reasoning","long-context","moe"],"maintainer":{"name":"Bad Theory Labs","url":"https://huggingface.co/badtheorylabs"},"license":"Apache-2.0","licenseClass":"open","licenseShortName":"Apache 2.0","recoScore":10,"minGezelVersion":"1.26227","version":"1.0.2","releasedAt":"2026-08-15T00:00:00Z","parameterSize":"35B","approxSizeBytes":9967966240,"supportsTools":true,"contextWindow":262144,"kvBytesPerTokenF16":20480,"kvFixedBytesF16":64389120,"upstream":"https://huggingface.co/badtheorylabs/BTL-4-Compact","category":"coding","style":{"family":"qwen","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","prompt.private-reasoning-guidance","prompt.tool-cookbook-condensed","fabrication.detect-past-tense-no-tools","turn.ollama-num-predict-bumped","turn.preamble-folding","mcp.compact-tool-schemas"],"tuning":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":16384},"samplingWhenThinking":{"temperature":0.6,"topP":0.95},"reasoning":{"thinkingBudget":8192,"enableThinking":true},"promptTags":{"enableThinkingTag":"/think","disableThinkingTag":"/no_think"},"profiles":{"thinking-general":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":24576,"repetitionPenalty":1},"reasoning":{"thinkingBudget":8192,"enableThinking":true}},"thinking-coding":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":32768,"repetitionPenalty":1},"reasoning":{"thinkingBudget":12288,"enableThinking":true}},"thinking-precise":{"sampling":{"temperature":0.4,"topP":0.9,"topK":20,"minP":0,"maxTokens":6144,"seed":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"instruct":{"sampling":{"temperature":0.7,"topP":0.8,"topK":20,"minP":0,"maxTokens":4096,"repetitionPenalty":1,"presencePenalty":1.5},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1.1,"topP":0.95,"topK":40,"maxTokens":8192},"reasoning":{"enableThinking":false}}}},"llamaCpp":{"huggingfaceRepo":"badtheorylabs/BTL-4-Compact","revision":"2a29bc80b0ebc80d6409fbad89f85d910dbb4aee","filename":"BTL-4-IQ2_XXS.gguf","sha256":"6b7c298cf909fc04428ecf360a29dcc578188b1c90aa6ed435159f5a0d351496","approxSizeBytes":9967966240,"quantization":"IQ2_XXS"},"availableVersions":["1.0.2","1.0.1","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"deepseek-r1-8b-q4","name":"DeepSeek R1 (8B, Q4)","description":"Reasoning-tuned 8B model. Slower than a plain chat model, but thinks through its answers before replying.","tags":["deepseek","tools","reasoning"],"maintainer":{"name":"DeepSeek","url":"https://ollama.com/library/deepseek-r1"},"license":"MIT","licenseClass":"open","licenseShortName":"MIT","minGezelVersion":"1.26227","version":"1.1.1","releasedAt":"2026-08-15T00:00:00Z","parameterSize":"8B","approxSizeBytes":5200000000,"supportsTools":true,"contextWindow":128000,"upstream":"https://ollama.com/library/deepseek-r1","category":"reasoning","style":{"family":"deepseek","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","prompt.private-reasoning-guidance","prompt.tool-cookbook-condensed","fabrication.detect-past-tense-no-tools","turn.preamble-folding",{"id":"turn.ramble-detection","config":{"coldThreshold":3000,"postActionThreshold":1200}},"mcp.compact-tool-schemas","mcp.relax-required-fields","mcp.default-missing-fields"],"tuning":{"sampling":{"temperature":0.6,"topP":0.95},"reasoning":{"thinkingBudget":512,"enableThinking":true},"profiles":{"thinking-general":{"sampling":{"temperature":0.6,"topP":0.95},"reasoning":{"thinkingBudget":512,"enableThinking":true}},"thinking-coding":{"sampling":{"temperature":0.4,"topP":0.9,"repetitionPenalty":1.05},"reasoning":{"thinkingBudget":512,"enableThinking":true}},"thinking-precise":{"sampling":{"temperature":0.2,"topP":0.9,"seed":0,"repetitionPenalty":1.05},"reasoning":{"thinkingBudget":512,"enableThinking":true}},"instruct":{"sampling":{"temperature":0.6,"topP":0.95},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":0.9,"topP":0.95},"reasoning":{"enableThinking":false}}}},"ollama":{"tag":"deepseek-r1:8b"},"llamaCpp":{"huggingfaceRepo":"unsloth/DeepSeek-R1-0528-Qwen3-8B-GGUF","revision":"eb48357c179d34dbf515983f798dfb8752a0f261","filename":"DeepSeek-R1-0528-Qwen3-8B-Q4_K_M.gguf","sha256":"a86349a4180c4e6bb43f874c29c404fa2be3f90b15509bd6d86f697dba724ec1","approxSizeBytes":5027785216,"quantization":"Q4_K_M"},"mlx":{"huggingfaceRepo":"mlx-community/DeepSeek-R1-0528-Qwen3-8B-4bit","revision":"b9b5af4fa18feb8cdbccdadf3aad2c83d0abbe51","files":[{"name":"chat_template.jinja","sha256":"53671bac29bcb3e1f95f51b8c77d85a6011b66dc38bd23dce64eef04384a976b","sizeBytes":3127},{"name":"config.json","sha256":"ff32151f641cd46fd0daa658df1bf6fb457a8dc63147c93f653c5a15e0c1f53d","sizeBytes":1088},{"name":"model.safetensors","sha256":"d1810144c1beafe5c73ef740a787e26d94efdd846da4a5b60cd9e69a82083474","sizeBytes":4607835164},{"name":"model.safetensors.index.json","sha256":"3fb25463b4078b1fc27159daa605190029c2e965f533bf0b1b594f96cbfceb8a","sizeBytes":64065},{"name":"special_tokens_map.json","sha256":"59cda48bbe8bab9d61ffb410e6e3c07b6d98bff73cee7c88ff8b51f95f21ab1c","sizeBytes":485},{"name":"tokenizer.json","sha256":"93d5fd6d2f8cf1172ac86cf982e2b88fa6732366b44dc1a32349379a54a6a044","sizeBytes":11423346},{"name":"tokenizer_config.json","sha256":"f4b30407076d04f403cb86b752a13e5490ee5764658958e231039cdd3ed78e0d","sizeBytes":8756}],"approxSizeBytes":4619336031,"quantization":"4bit"},"availableVersions":["1.1.1","1.1.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"deepseek-v4-flash-284b-q4","name":"DeepSeek V4 Flash (FP4)","description":"DeepSeek V4 Flash — 284B-parameter Mixture-of-Experts (~13B active per token) with 1M-token context, Compressed Sparse Attention, and configurable Non-think / Think-High / Think-Max reasoning modes. On the `ds4` engine this is the July 2026 0731 re-post-trained checkpoint, which is substantially stronger at agentic and coding work than the original release. The llama.cpp (native FP4+FP8) and MLX sources still carry the original V4 Flash weights — upstream has not republished those builds for 0731 — so pick the ds4 source to get the newer checkpoint. Frontier-tier on-device reasoning for workstations and Mac Studio-class hardware — needs ~200 GB of usable memory.","tags":["deepseek","reasoning","agentic","moe","tools","fp4","long-context","large"],"maintainer":{"name":"DeepSeek","url":"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash"},"license":"MIT","licenseClass":"open","licenseShortName":"MIT","version":"1.1.0","releasedAt":"2026-08-01T00:00:00Z","parameterSize":"284B","approxSizeBytes":164633502592,"supportsTools":true,"contextWindow":1000000,"upstream":"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash","category":"reasoning","style":{"family":"deepseek","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","prompt.private-reasoning-guidance","prompt.tool-cookbook-condensed","prompt.meester-build-prelude","mcp.compact-tool-schemas","fabrication.detect-past-tense-no-tools","turn.preamble-folding"],"tuning":{"sampling":{"maxTokens":16384},"reasoning":{"thinkingBudget":4096,"enableThinking":true},"profiles":{"thinking-general":{"sampling":{"temperature":0.6,"topP":0.95,"maxTokens":16384}},"thinking-coding":{"sampling":{"temperature":0.3,"topP":0.95,"maxTokens":16384}},"thinking-precise":{"sampling":{"temperature":0.1,"topP":0.9,"maxTokens":16384,"seed":0}},"instruct":{"sampling":{"temperature":0.7,"topP":0.95,"maxTokens":16384},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1,"topP":1,"maxTokens":16384},"reasoning":{"enableThinking":false}}}},"llamaCpp":{"huggingfaceRepo":"nsparks/DeepSeek-V4-Flash-FP4-FP8-GGUF","revision":"0b34e0b629c706396002496e795e9f910f7bf69f","filename":"DeepSeek-V4-Flash-FP4-FP8-native.gguf","sha256":"82822c4c3330cdc17762cff6f044fd50abb04278779309a157d4401ef8a9c17b","approxSizeBytes":156148189760,"quantization":"FP4-FP8"},"mlx":{"huggingfaceRepo":"mlx-community/deepseek-ai-DeepSeek-V4-Flash-4bit","revision":"d2cb53706cb4f714249997be6542a438b7418465","files":[{"name":"config.json","sha256":"55c60c56345720fee13706b81f5787ecd49b385aec9b92ac5ba74bff055a4396","sizeBytes":2212},{"name":"generation_config.json","sha256":"5fccff80f55a4d455bbe516bdd552edf3e9623df95e99fbf2a3c3389fdf91af0","sizeBytes":170},{"name":"model-00001-of-00033.safetensors","sha256":"f8192a660ad74905fdb9051a542803b61ca34ff4186a5880301f80ce9bfea4b7","sizeBytes":5283965219},{"name":"model-00002-of-00033.safetensors","sha256":"204baeadbc53b2a96e0d22b8e5b15ea6f37f1d6a3b9d35c532395b2bc12ba32f","sizeBytes":4928409965},{"name":"model-00003-of-00033.safetensors","sha256":"640532dd2c51fdda759d32f0cf3832b5c32551533e92d3edeed043b19010992b","sizeBytes":5004285119},{"name":"model-00004-of-00033.safetensors","sha256":"7349208a3db58c5952c8dfcd09f29e9ed3e9856029532c84a9cb5b364e0c84f6","sizeBytes":4913919380},{"name":"model-00005-of-00033.safetensors","sha256":"0f7c167e789331b583a5a554e0b4a95a5f2fc96829dd7d166dc243733e9fae73","sizeBytes":4922205541},{"name":"model-00006-of-00033.safetensors","sha256":"bf85804edbbd3a7941089e19ed2b03a5ad79d14344939a86b4d7cc356aada450","sizeBytes":5004285211},{"name":"model-00007-of-00033.safetensors","sha256":"d077321f7935bc387cad20a571e736d4b2b2cf38cb1ae629b9d2dd6b28361387","sizeBytes":4913919296},{"name":"model-00008-of-00033.safetensors","sha256":"1c1341c3b3b529406517341049ad0296d21e764010df202c3f9527a533571ccf","sizeBytes":4922205610},{"name":"model-00009-of-00033.safetensors","sha256":"211cef3f5cd16cfa11bacb0a48887e2c9fc8ff16fac683b99030e023a7aed8bd","sizeBytes":5004285383},{"name":"model-00010-of-00033.safetensors","sha256":"a69144418cb7e8a20f2c2c28cccf5f666dcb8ef23cd5b722ace4bccd68816b3c","sizeBytes":4913919544},{"name":"model-00011-of-00033.safetensors","sha256":"b022f0c2fc9cd5667b707db391eced4064f9f8660d3626912ac0a9e3d355f920","sizeBytes":4922205579},{"name":"model-00012-of-00033.safetensors","sha256":"a50088ef4f95c731915f1c7e0057b7c56576f327ffd83c4a7f9e487377e9a245","sizeBytes":5004285395},{"name":"model-00013-of-00033.safetensors","sha256":"20b4a672c624548f78d8c6eb9bd3a51aad3d8c270304b0245dd9f7b52c75419c","sizeBytes":4913919540},{"name":"model-00014-of-00033.safetensors","sha256":"34fa86bae435c7f23fd45d8ac0ace935143339551f77d0bdfefffb48e82af5b3","sizeBytes":4922205629},{"name":"model-00015-of-00033.safetensors","sha256":"e89203f02ef9f12c7021dc466e20b9c16868bd01a58b7054f069339d16b42a70","sizeBytes":5004285401},{"name":"model-00016-of-00033.safetensors","sha256":"742374b9deb806fa5479c3b4a12903bc8db73eb158d8f3ea09dd9f7613b74b5b","sizeBytes":4913919572},{"name":"model-00017-of-00033.safetensors","sha256":"fcc93349c6c03f9a8afe77052620f24a86defd53aea7c7e063829916c977b8cf","sizeBytes":4922205633},{"name":"model-00018-of-00033.safetensors","sha256":"e7d60c8c2d472e084a1779ebfdbb4da5c197d4f5e4372c1a14bfcfd0c569c0ef","sizeBytes":5004285381},{"name":"model-00019-of-00033.safetensors","sha256":"6032ebf62677ef939ea01fb3f74daaabd2fd8f3467c0fb9484723dcd4ea2079d","sizeBytes":4913919502},{"name":"model-00020-of-00033.safetensors","sha256":"a61aa8207ab862fc5645fb11e848ada6e3fa75e1b1b9ec550c1f4ca300b1791f","sizeBytes":4922205609},{"name":"model-00021-of-00033.safetensors","sha256":"da9833108a23fdfb848884a0a3597552cf71e2bdffd257d1216338e60d5a0a19","sizeBytes":5004285403},{"name":"model-00022-of-00033.safetensors","sha256":"cb31a07ae096470327766d585fabf699f6d455bde7e9fa612a75450b966012b5","sizeBytes":4913919442},{"name":"model-00023-of-00033.safetensors","sha256":"239a67e7859bc478eef1b59d9dd9d30eaba88d06c7285bbb4ddf93504c2f8685","sizeBytes":4922205537},{"name":"model-00024-of-00033.safetensors","sha256":"46bfcad94207621e7c30ce4f2f8f0aea9535f008b51028241f1fe54371b43424","sizeBytes":5004285379},{"name":"model-00025-of-00033.safetensors","sha256":"d45db42ba7439ddd816f0c2c565009e21532f8a0483de0dc8fb6da97629ad6a4","sizeBytes":4913919572},{"name":"model-00026-of-00033.safetensors","sha256":"3cb939d7cb4f8b6aca4ed5cb61a3c3efa239106ed06f2c14d3550d628afc2afd","sizeBytes":4922205633},{"name":"model-00027-of-00033.safetensors","sha256":"d92df056832aea87a1837d757e3ea8c21a6668d91cde540a0b402bd6ebe41fe1","sizeBytes":5004285391},{"name":"model-00028-of-00033.safetensors","sha256":"10db6c15b42dbd76bf8fcc5c781b8231bd92b649e1d82446d08cfad11c17ce51","sizeBytes":4913919438},{"name":"model-00029-of-00033.safetensors","sha256":"8a05ac5f41b4c8fe920d6245f6416b882f230902afc4ea008ae342b838811bf4","sizeBytes":4922205637},{"name":"model-00030-of-00033.safetensors","sha256":"b9214dcae6b8828dfcf865bae65796c1b796154db6e7b6c4bc8b47649b70eb8c","sizeBytes":5004285363},{"name":"model-00031-of-00033.safetensors","sha256":"dcce4a40204c7028249fcbc91af8fb0fc1dad400a1c7dffde0ce40e5f6cb7053","sizeBytes":4913919474},{"name":"model-00032-of-00033.safetensors","sha256":"070abf58315bd11332b1c6173af3d81104158a6be6d7ea778a818543d22b0baf","sizeBytes":4922205537},{"name":"model-00033-of-00033.safetensors","sha256":"dc5251294ed274ef8c0538fe51faf994bbf6ba4a48ddfab300782b94bc668feb","sizeBytes":1523411843},{"name":"model.safetensors.index.json","sha256":"7c6990f5b723c7a571942a35d4eb9d88efb7c4f092705ea85fbcbdb4c4fca23c","sizeBytes":274163},{"name":"tokenizer.json","sha256":"8421075aceec0741baf15179b6c337f443f9029e53ea88d8c1e909dd0d69b70b","sizeBytes":10071664},{"name":"tokenizer_config.json","sha256":"21aa165d554e2c2f252a49730b71962edc15c36bbfa4b090ab7bd3340a2fa549","sizeBytes":397}],"approxSizeBytes":160150239764,"quantization":"4bit"},"ds4":{"huggingfaceRepo":"antirez/deepseek-v4-gguf","revision":"1cd7b564460821938add0475a60b942c409295e0","filename":"DeepSeek-V4-Flash-Q4KExperts-F16HC-F16Compressor-F16Indexer-Q8Attn-Q8Shared-Q8Out-chat-v2-imatrix-0731.gguf","sha256":"6bb77b5ddcbc2d974c687cfb63d644ecfb295581b4a53fa4c1d810aea538254a","approxSizeBytes":164633502592,"residentBytes":85899345920,"kvBytesPerToken":8192,"residentCtxTokens":131072,"quantization":"Q4_K","cacheExpertsBytes":68719476736,"ssdStreaming":true},"availableVersions":["1.1.0","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"deepseek-v4-flash-284b-q2","name":"DeepSeek V4 Flash (IQ2_XXS)","description":"antirez's 2-bit community GGUF of DeepSeek V4 Flash 0731 — the July 2026 re-post-trained checkpoint of the 284B-parameter Mixture-of-Experts (~13B active per token) with 1M-token context and Compressed Sparse Attention. Same architecture as the original V4 Flash, with substantially stronger agentic and coding behaviour. The routed experts are crushed to IQ2_XXS / Q2_K while attention projections, shared experts, router, embeddings, and output head stay at Q8_0 / F16, landing the whole model in ~81 GB — runnable on 128 GB-class machines versus ~156 GB for the native FP4 build. Note: these quants were produced for antirez's `ds4` inference engine; whether they load on stock llama depends on its DeepSeek-V4 support.","tags":["deepseek","reasoning","agentic","moe","tools","2-bit","iq2","long-context","large"],"maintainer":{"name":"antirez","url":"https://huggingface.co/antirez/deepseek-v4-gguf"},"maker":{"name":"DeepSeek","url":"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash"},"license":"MIT","licenseClass":"open","licenseShortName":"MIT","version":"1.1.0","releasedAt":"2026-08-01T00:00:00Z","parameterSize":"284B","approxSizeBytes":86720111488,"supportsTools":true,"contextWindow":1000000,"upstream":"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash","category":"reasoning","style":{"family":"deepseek","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","prompt.private-reasoning-guidance","prompt.tool-cookbook-condensed","prompt.meester-build-prelude","mcp.compact-tool-schemas","fabrication.detect-past-tense-no-tools","turn.preamble-folding"],"tuning":{"sampling":{"maxTokens":16384},"reasoning":{"thinkingBudget":4096,"enableThinking":true},"profiles":{"thinking-general":{"sampling":{"temperature":0.6,"topP":0.95,"maxTokens":16384}},"thinking-coding":{"sampling":{"temperature":0.3,"topP":0.95,"maxTokens":16384}},"thinking-precise":{"sampling":{"temperature":0.1,"topP":0.9,"maxTokens":16384,"seed":0}},"instruct":{"sampling":{"temperature":0.7,"topP":0.95,"maxTokens":16384},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1,"topP":1,"maxTokens":16384},"reasoning":{"enableThinking":false}}}},"llamaCpp":{"huggingfaceRepo":"antirez/deepseek-v4-gguf","revision":"1cd7b564460821938add0475a60b942c409295e0","filename":"DeepSeek-V4-Flash-IQ2XXS-w2Q2K-AProjQ8-SExpQ8-OutQ8-chat-v2-imatrix-0731.gguf","sha256":"ca22ae2f838e14077c22bc1c1417b71b45b5e5a3687bd96c2ac6e17fdb6261c0","approxSizeBytes":86720111488,"quantization":"IQ2_XXS"},"ds4":{"huggingfaceRepo":"antirez/deepseek-v4-gguf","revision":"1cd7b564460821938add0475a60b942c409295e0","filename":"DeepSeek-V4-Flash-IQ2XXS-w2Q2K-AProjQ8-SExpQ8-OutQ8-chat-v2-imatrix-0731.gguf","sha256":"ca22ae2f838e14077c22bc1c1417b71b45b5e5a3687bd96c2ac6e17fdb6261c0","approxSizeBytes":86720111488,"residentBytes":38654705664,"kvBytesPerToken":8192,"residentCtxTokens":131072,"quantization":"IQ2_XXS","cacheExpertsBytes":34359738368,"ssdStreaming":true},"availableVersions":["1.1.0","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"deepseek-v4-flash-284b-q2q4","name":"DeepSeek V4 Flash (mixed 2/4-bit)","description":"antirez's mixed-precision community GGUF of DeepSeek V4 Flash 0731 — the July 2026 re-post-trained 284B-parameter Mixture-of-Experts (~13B active per token) with 1M-token context and Compressed Sparse Attention. Layers 37-42 keep Q4_K routed experts while the remaining expert layers drop to IQ2_XXS gate/up + Q2_K down, landing at ~98 GB. This is the quality/size sweet spot antirez recommends for 128 GB MacBooks: noticeably better than the straight 2-bit build without the ~156 GB footprint of the full Q4_K one. Produced for antirez's `ds4` inference engine; whether it loads on stock llama depends on its DeepSeek-V4 support.","tags":["deepseek","reasoning","agentic","moe","tools","long-context","large","mixed-precision","iq2","q4"],"maintainer":{"name":"antirez","url":"https://huggingface.co/antirez/deepseek-v4-gguf"},"maker":{"name":"DeepSeek","url":"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash"},"license":"MIT","licenseClass":"open","licenseShortName":"MIT","version":"1.0.0","releasedAt":"2026-08-01T00:00:00Z","parameterSize":"284B","approxSizeBytes":97591747456,"supportsTools":true,"contextWindow":1000000,"upstream":"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash","category":"reasoning","style":{"family":"deepseek","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","prompt.private-reasoning-guidance","prompt.tool-cookbook-condensed","prompt.meester-build-prelude","mcp.compact-tool-schemas","fabrication.detect-past-tense-no-tools","turn.preamble-folding"],"tuning":{"sampling":{"maxTokens":16384},"reasoning":{"thinkingBudget":4096,"enableThinking":true},"profiles":{"thinking-general":{"sampling":{"temperature":0.6,"topP":0.95,"maxTokens":16384}},"thinking-coding":{"sampling":{"temperature":0.3,"topP":0.95,"maxTokens":16384}},"thinking-precise":{"sampling":{"temperature":0.1,"topP":0.9,"maxTokens":16384,"seed":0}},"instruct":{"sampling":{"temperature":0.7,"topP":0.95,"maxTokens":16384},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1,"topP":1,"maxTokens":16384},"reasoning":{"enableThinking":false}}}},"llamaCpp":{"huggingfaceRepo":"antirez/deepseek-v4-gguf","revision":"1cd7b564460821938add0475a60b942c409295e0","filename":"DeepSeek-V4-Flash-Layers37-42Q4KExperts-OtherExpertLayersIQ2XXSGateUp-Q2KDown-AProjQ8-SExpQ8-OutQ8-chat-v2-imatrix-fixed-0731.gguf","sha256":"659e22fbd01c9e13ea37a57c8d9c41e0a8819dffa3473d3c5286ee44b2d3398f","approxSizeBytes":97591747456,"quantization":"IQ2_XXS/Q4_K"},"ds4":{"huggingfaceRepo":"antirez/deepseek-v4-gguf","revision":"1cd7b564460821938add0475a60b942c409295e0","filename":"DeepSeek-V4-Flash-Layers37-42Q4KExperts-OtherExpertLayersIQ2XXSGateUp-Q2KDown-AProjQ8-SExpQ8-OutQ8-chat-v2-imatrix-fixed-0731.gguf","sha256":"659e22fbd01c9e13ea37a57c8d9c41e0a8819dffa3473d3c5286ee44b2d3398f","approxSizeBytes":97591747456,"residentBytes":45097156608,"kvBytesPerToken":8192,"residentCtxTokens":131072,"quantization":"IQ2_XXS/Q4_K","cacheExpertsBytes":38654705664,"ssdStreaming":true},"availableVersions":["1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"deepseek-v4-flash-284b-mxfp4","name":"DeepSeek V4 Flash (MXFP4)","description":"antirez's MXFP4 community GGUF of DeepSeek V4 Flash 0731 — the July 2026 re-post-trained 284B-parameter Mixture-of-Experts (~13B active per token) with 1M-token context and Compressed Sparse Attention. Routed experts use the MXFP4 micro-scaled 4-bit block format while attention projections, shared experts, router, embeddings, and output head stay at Q8_0 / F16, landing at ~156 GB — close to the native FP4 build's footprint and the highest-fidelity single-file ds4 variant. Needs a workstation or Mac Studio-class machine with ~200 GB of usable memory. Produced for antirez's `ds4` inference engine.","tags":["deepseek","reasoning","agentic","moe","tools","long-context","large","mxfp4","fp4"],"maintainer":{"name":"antirez","url":"https://huggingface.co/antirez/deepseek-v4-gguf"},"maker":{"name":"DeepSeek","url":"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash"},"license":"MIT","licenseClass":"open","licenseShortName":"MIT","version":"1.0.0","releasedAt":"2026-08-01T00:00:00Z","parameterSize":"284B","approxSizeBytes":155976458848,"supportsTools":true,"contextWindow":1000000,"upstream":"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash","category":"reasoning","style":{"family":"deepseek","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","prompt.private-reasoning-guidance","prompt.tool-cookbook-condensed","prompt.meester-build-prelude","mcp.compact-tool-schemas","fabrication.detect-past-tense-no-tools","turn.preamble-folding"],"tuning":{"sampling":{"maxTokens":16384},"reasoning":{"thinkingBudget":4096,"enableThinking":true},"profiles":{"thinking-general":{"sampling":{"temperature":0.6,"topP":0.95,"maxTokens":16384}},"thinking-coding":{"sampling":{"temperature":0.3,"topP":0.95,"maxTokens":16384}},"thinking-precise":{"sampling":{"temperature":0.1,"topP":0.9,"maxTokens":16384,"seed":0}},"instruct":{"sampling":{"temperature":0.7,"topP":0.95,"maxTokens":16384},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1,"topP":1,"maxTokens":16384},"reasoning":{"enableThinking":false}}}},"llamaCpp":{"huggingfaceRepo":"antirez/deepseek-v4-gguf","revision":"1cd7b564460821938add0475a60b942c409295e0","filename":"DeepSeek-V4-Flash-MXFP4Experts-F16HC-F16Compressor-F16Indexer-Q8Attn-Q8Shared-Q8Out-chat-v2-mxfp4-0731.gguf","sha256":"0e3a161b670f686128ec5f92a601dfde616a37bf5e7e48999fa2d32471b57ec6","approxSizeBytes":155976458848,"quantization":"MXFP4"},"ds4":{"huggingfaceRepo":"antirez/deepseek-v4-gguf","revision":"1cd7b564460821938add0475a60b942c409295e0","filename":"DeepSeek-V4-Flash-MXFP4Experts-F16HC-F16Compressor-F16Indexer-Q8Attn-Q8Shared-Q8Out-chat-v2-mxfp4-0731.gguf","sha256":"0e3a161b670f686128ec5f92a601dfde616a37bf5e7e48999fa2d32471b57ec6","approxSizeBytes":155976458848,"residentBytes":85899345920,"kvBytesPerToken":8192,"residentCtxTokens":131072,"quantization":"MXFP4","cacheExpertsBytes":68719476736,"ssdStreaming":true},"availableVersions":["1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"gemma4-12b-q4","name":"Gemma 4 (12B, Q4)","description":"Google's Gemma 4 at 12B parameters — an encoder-free unified multimodal model (text + image + audio + video) with native tool calling, configurable thinking, and a 256K context window. Apache-2.0 licensed.","tags":["google","multimodal","vision","audio","tools","agentic","qat"],"maintainer":{"name":"Google","url":"https://huggingface.co/google/gemma-4-12B-it"},"license":"Apache-2.0","licenseClass":"open","licenseShortName":"Apache 2.0","recoScore":15,"version":"1.2.0","releasedAt":"2026-08-28T00:00:00Z","parameterSize":"12B","approxSizeBytes":6716356800,"supportsTools":true,"contextWindow":256000,"upstream":"https://huggingface.co/google/gemma-4-12B-it","category":"general","style":{"family":"gemma","reasoningFormat":"channel","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-channel-tags","reasoning.capture-pre-tool-prose","prompt.private-reasoning-guidance","prompt.tool-cookbook-full","prompt.meester-build-prelude","fabrication.detect-past-tense-no-tools","fabrication.detect-claim-without-tool","turn.preamble-folding",{"id":"turn.ramble-detection","config":{"coldThreshold":6000,"postActionThreshold":1200}},"turn.auto-acknowledge-tool-errors","turn.permission-stall",{"id":"turn.continuation-budget","config":{"count":4}},{"id":"turn.single-tool-per-turn","config":{"meesterOnly":true}},"mcp.compact-tool-schemas","mcp.relax-required-fields","mcp.default-missing-fields","mcp.validate-ids-strict","parse.gemma-special-token","prompt.prefer-writefile-edits","prompt.derive-by-execution","prompt.terse-visible-reply","tools.mlx-grammar"],"tuning":{"sampling":{"temperature":1,"topP":0.95,"topK":64,"maxTokens":8192,"repetitionPenalty":1.1,"repetitionContext":64},"reasoning":{"thinkingBudget":256,"enableThinking":true},"engine":{"llamaCpp":{"spec":{"mtp":true,"nMax":4}}},"profiles":{"thinking-general":{"sampling":{"temperature":0.8,"topP":0.95,"topK":64,"maxTokens":2048,"repetitionPenalty":1.1,"repetitionContext":64}},"thinking-coding":{"sampling":{"temperature":0.6,"topP":0.9,"topK":40,"maxTokens":2048,"repetitionPenalty":1.05,"repetitionContext":64}},"thinking-precise":{"sampling":{"temperature":0.3,"topP":0.9,"topK":20,"maxTokens":4096,"seed":0,"repetitionPenalty":1.05,"repetitionContext":64}},"instruct":{"sampling":{"temperature":0.7,"topP":0.95,"topK":64,"maxTokens":4096,"repetitionPenalty":1.1,"repetitionContext":64}},"creative":{"sampling":{"temperature":1.1,"topP":0.95,"topK":64,"maxTokens":8192,"repetitionPenalty":1,"repetitionContext":20}}}},"llamaCpp":{"huggingfaceRepo":"unsloth/gemma-4-12B-it-qat-GGUF","revision":"980b060c40a8539ac159e0501a3e0f66a6365af3","filename":"gemma-4-12B-it-qat-UD-Q4_K_XL.gguf","sha256":"90fd44e29e0d7cffeb0fd00dc73cfdab9ed0b0e95306ecf7821ea634c940c370","approxSizeBytes":6716356800,"quantization":"UD-Q4_K_XL","draftModel":{"filename":"MTP/mtp-gemma-4-12B-it-Q4_0.gguf","sha256":"fcb35dea42c71333db904cee11baac525c9ef872818ee3753f6cb156f3c6f4f6","sizeBytes":253708800}},"mlx":{"huggingfaceRepo":"OsaurusAI/gemma-4-12B-it-qat-MXFP4","revision":"61fbdd1be971d8808060d8ba4e607f420125b214","files":[{"name":"chat_template.jinja","sha256":"d5ce49ce670058e90cc623c0284c21c8fcd778c30f5be1891b00f022bedee2fe","sizeBytes":17811},{"name":"config.json","sha256":"7052f31177bb79e2c6760d5032583f74c1864eb51b5a17e1404a10eca3acf913","sizeBytes":5237},{"name":"generation_config.json","sha256":"a8349d9bd64cc5841297fcb5002f0fdc4749c473c8f1b10ea337f9ce4ee7014e","sizeBytes":260},{"name":"model-00001-of-00007.safetensors","sha256":"8bbc6b27a2127ca6d68a449ff895644cd18477cc69205c4cd02907b862c4cf11","sizeBytes":2047672664},{"name":"model-00002-of-00007.safetensors","sha256":"5794202f68df90c7f18a6db80a9a273235146f1d1b05f632e7df1ed1644996a7","sizeBytes":1023076042},{"name":"model-00003-of-00007.safetensors","sha256":"299ff6ced2b6b8e4d0957bc4b4f26e7fbd25b3917bc0a9f27dd8d983449241b9","sizeBytes":1012218216},{"name":"model-00004-of-00007.safetensors","sha256":"1f0e6f655d2a59d2e3b0d987f705e498be535f6c9782c9726c3e37ede1c55545","sizeBytes":1009437650},{"name":"model-00005-of-00007.safetensors","sha256":"06d4b763d2bba8277e78d6a1bcd2a623190956da8adfb6d7e2fdd3234bc213a8","sizeBytes":1024911496},{"name":"model-00006-of-00007.safetensors","sha256":"ecdb96e03cba6751e3d73d621019afd20e4b9040162997e1e236e7231793370a","sizeBytes":1018677986},{"name":"model-00007-of-00007.safetensors","sha256":"1aa3cfd784f63827f6ec9eb0b2a98f735976deb62ead0a54b87f33aba7f96176","sizeBytes":774295738},{"name":"model.safetensors.index.json","sha256":"136ff8d0fb292d5cd6688d7a5456b7710a2d4628c53947b45180e3dc654697c2","sizeBytes":97771},{"name":"processor_config.json","sha256":"6b938e76555b3e9946890770e1abcd442a4718f34041a58e8139dc8ad34545c9","sizeBytes":1382},{"name":"tokenizer.json","sha256":"cc8d3a0ce36466ccc1278bf987df5f71db1719b9ca6b4118264f45cb627bfe0f","sizeBytes":32169626},{"name":"tokenizer_config.json","sha256":"c0146b8149eb8b8f96e9b92b9a0d5e0d1864140b49a4d13cec52bc9adcecb5a7","sizeBytes":20419}],"approxSizeBytes":7942602298,"quantization":"MXFP4","chatTemplateOverride":"{#\n Template: Google Gemma 4 Canonical Chat Template\n Author: Google Gemma Engineering Team\n Published: 2026-07-09\n Context: Fixed tool-calling loops, turn closures, and thinking content-ordering.\n#}\n{%- macro format_parameters(properties, required, filter_keys=false) -%}\n {%- set standard_keys = ['description', 'type', 'properties', 'required', 'nullable'] -%}\n {%- set ns = namespace(found_first=false) -%}\n {%- for key, value in properties | dictsort -%}\n {%- set add_comma = false -%}\n {%- if not filter_keys or key not in standard_keys -%}\n {%- if ns.found_first %},{% endif -%}\n {%- set ns.found_first = true -%}\n {{ key }}:{\n {%- if value['description'] -%}\n description:<|\"|>{{ value['description'] }}<|\"|>\n {%- set add_comma = true -%}\n {%- endif -%}\n {%- if value['type'] | upper == 'STRING' -%}\n {%- if value['enum'] -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n enum:{{ format_argument(value['enum']) }}\n {%- endif -%}\n {%- elif value['type'] | upper == 'ARRAY' -%}\n {%- if value['items'] is mapping and value['items'] -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n items:{\n {%- set ns_items = namespace(found_first=false) -%}\n {%- for item_key, item_value in value['items'] | dictsort -%}\n {%- if item_value is not none -%}\n {%- if ns_items.found_first %},{% endif -%}\n {%- set ns_items.found_first = true -%}\n {%- if item_key == 'properties' -%}\n properties:{\n {%- if item_value is mapping -%}\n {{- format_parameters(item_value, value['items']['required'] | default([])) -}}\n {%- endif -%}\n }\n {%- elif item_key == 'required' -%}\n required:[\n {%- for req_item in item_value -%}\n <|\"|>{{- req_item -}}<|\"|>\n {%- if not loop.last %},{% endif -%}\n {%- endfor -%}\n ]\n {%- elif item_key == 'type' -%}\n {%- if item_value is string -%}\n type:{{ format_argument(item_value | upper) }}\n {%- else -%}\n type:{{ format_argument(item_value | map('upper') | list) }}\n {%- endif -%}\n {%- else -%}\n {{ item_key }}:{{ format_argument(item_value) }}\n {%- endif -%}\n {%- endif -%}\n {%- endfor -%}\n }\n {%- endif -%}\n {%- endif -%}\n {%- if value['nullable'] %}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n nullable:true\n {%- endif -%}\n {%- if value['type'] | upper == 'OBJECT' -%}\n {%- if value['properties'] is defined and value['properties'] is mapping -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n properties:{\n {{- format_parameters(value['properties'], value['required'] | default([])) -}}\n }\n {%- elif value is mapping -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n properties:{\n {{- format_parameters(value, value['required'] | default([]), filter_keys=true) -}}\n }\n {%- endif -%}\n {%- if value['required'] -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n required:[\n {%- for item in value['required'] | default([]) -%}\n <|\"|>{{- item -}}<|\"|>\n {%- if not loop.last %},{% endif -%}\n {%- endfor -%}\n ]\n {%- endif -%}\n {%- endif -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n type:<|\"|>{{ value['type'] | upper }}<|\"|>}\n {%- endif -%}\n {%- endfor -%}\n{%- endmacro -%}\n{%- macro format_function_declaration(tool_data) -%}\n declaration:{{- tool_data['function']['name'] -}}{description:<|\"|>{{- tool_data['function']['description'] -}}<|\"|>\n {%- set params = tool_data['function']['parameters'] -%}\n {%- if params -%}\n ,parameters:{\n {%- if params['properties'] -%}\n properties:{ {{- format_parameters(params['properties'], params['required']) -}} },\n {%- endif -%}\n {%- if params['required'] -%}\n required:[\n {%- for item in params['required'] -%}\n <|\"|>{{- item -}}<|\"|>\n {{- ',' if not loop.last -}}\n {%- endfor -%}\n ],\n {%- endif -%}\n {%- if params['type'] -%}\n type:<|\"|>{{- params['type'] | upper -}}<|\"|>}\n {%- endif -%}\n {%- endif -%}\n {%- if 'response' in tool_data['function'] -%}\n {%- set response_declaration = tool_data['function']['response'] -%}\n ,response:{\n {%- if response_declaration['description'] -%}\n description:<|\"|>{{- response_declaration['description'] -}}<|\"|>,\n {%- endif -%}\n {%- if response_declaration['type'] | upper == 'OBJECT' -%}\n type:<|\"|>{{- response_declaration['type'] | upper -}}<|\"|>}\n {%- endif -%}\n {%- endif -%}\n }\n{%- endmacro -%}\n{%- macro format_argument(argument, escape_keys=True) -%}\n {%- if argument is none -%}\n {{- 'null' -}}\n {%- elif argument is string -%}\n {{- '<|\"|>' + argument + '<|\"|>' -}}\n {%- elif argument is boolean -%}\n {{- 'true' if argument else 'false' -}}\n {%- elif argument is mapping -%}\n {{- '{' -}}\n {%- set ns = namespace(found_first=false) -%}\n {%- for key, value in argument | dictsort -%}\n {%- if ns.found_first %},{% endif -%}\n {%- set ns.found_first = true -%}\n {%- if escape_keys -%}\n {{- '<|\"|>' + key + '<|\"|>' -}}\n {%- else -%}\n {{- key -}}\n {%- endif -%}\n :{{- format_argument(value, escape_keys=escape_keys) -}}\n {%- endfor -%}\n {{- '}' -}}\n {%- elif argument is sequence -%}\n {{- '[' -}}\n {%- for item in argument -%}\n {{- format_argument(item, escape_keys=escape_keys) -}}\n {%- if not loop.last %},{% endif -%}\n {%- endfor -%}\n {{- ']' -}}\n {%- else -%}\n {{- argument -}}\n {%- endif -%}\n{%- endmacro -%}\n{%- macro strip_thinking(text) -%}\n {%- set ns = namespace(result='') -%}\n {%- for part in text.split('<channel|>') -%}\n {%- if '<|channel>' in part -%}\n {%- set ns.result = ns.result + part.split('<|channel>')[0] -%}\n {%- else -%}\n {%- set ns.result = ns.result + part -%}\n {%- endif -%}\n {%- endfor -%}\n {{- ns.result | trim -}}\n{%- endmacro -%}\n\n{%- macro format_tool_response_block(tool_name, response) -%}\n {{- '<|tool_response>' -}}\n {%- if response is mapping -%}\n {{- 'response:' + tool_name + '{' -}}\n {%- for key, value in response | dictsort -%}\n {{- key -}}:{{- format_argument(value, escape_keys=False) -}}\n {%- if not loop.last %},{% endif -%}\n {%- endfor -%}\n {{- '}' -}}\n {%- else -%}\n {{- 'response:' + tool_name + '{value:' + format_argument(response, escape_keys=False) + '}' -}}\n {%- endif -%}\n {{- '<tool_response|>' -}}\n{%- endmacro -%}\n\n{#- ===== SETUP ===== -#}\n{%- set ns = namespace(prev_message_type=None, prev_non_tool_role=None) -%}\n{%- set loop_messages = messages -%}\n{%- set enable_thinking = enable_thinking | default(false) -%}\n{%- set preserve_thinking = preserve_thinking | default(false) -%}\n{{- bos_token -}}\n{#- Handle System/Tool Definitions Block -#}\n{%- if enable_thinking or tools or (messages and messages[0]['role'] in ['system', 'developer']) -%}\n {{- '<|turn>system\\n' -}}\n {#- Inject Thinking token at the very top of the FIRST system turn -#}\n {%- if enable_thinking -%}\n {{- '<|think|>\\n' -}}\n {%- set ns.prev_message_type = 'think' -%}\n {%- endif -%}\n {%- if messages and messages[0]['role'] in ['system', 'developer'] -%}\n {%- if messages[0]['content'] is string -%}\n {{- messages[0]['content'] | trim -}}\n {%- elif messages[0]['content'] is sequence -%}\n {%- for item in messages[0]['content'] -%}\n {{- item['text'] | trim + ' '-}}\n {%- endfor -%}\n {%- endif -%}\n {%- set loop_messages = messages[1:] -%}\n {%- endif -%}\n {%- if tools -%}\n {%- for tool in tools %}\n {{- '<|tool>' -}}\n {{- format_function_declaration(tool) | trim -}}\n {{- '<tool|>' -}}\n {%- endfor %}\n {%- set ns.prev_message_type = 'tool' -%}\n {%- endif -%}\n {{- '<turn|>\\n' -}}\n{%- endif %}\n\n{#- Pre-scan: find last user message index for reasoning guard -#}\n{%- set ns_turn = namespace(last_user_idx=-1) -%}\n{%- for i in range(loop_messages | length) -%}\n {%- if loop_messages[i]['role'] == 'user' -%}\n {%- set ns_turn.last_user_idx = i -%}\n {%- endif -%}\n{%- endfor -%}\n\n{#- Loop through messages -#}\n{%- for message in loop_messages -%}\n {%- if message['role'] != 'tool' -%}\n {%- set ns.prev_message_type = None -%}\n {%- set role = 'model' if message['role'] == 'assistant' else message['role'] -%}\n {#- Detect continuation using tracked state — O(1) instead of O(n) backward scan -#}\n {%- set continue_same_model_turn = (role == 'model' and ns.prev_non_tool_role == 'assistant') -%}\n {%- if not continue_same_model_turn -%}\n {{- '<|turn>' + role + '\\n' }}\n\n {%- endif -%}\n\n {#- Render reasoning/reasoning_content as thinking channel -#}\n {%- set thinking_text = message.get('reasoning') or message.get('reasoning_content') -%}\n {%- set thinking_gate = (loop.index0 > ns_turn.last_user_idx) or (preserve_thinking and message.get('tool_calls')) -%}\n {%- if thinking_text and thinking_gate -%}\n {{- '<|channel>thought\\n' + thinking_text + '\\n<channel|>' -}}\n {%- endif -%}\n\n {%- if message.get('tool_calls') -%}\n {%- for tool_call in message.get('tool_calls') -%}\n {%- set function = tool_call['function'] -%}\n {{- '<|tool_call>call:' + function['name'] + '{' -}}\n {%- if function['arguments'] is mapping -%}\n {%- set ns_args = namespace(found_first=false) -%}\n {%- for key, value in function['arguments'] | dictsort -%}\n {%- if ns_args.found_first %},{% endif -%}\n {%- set ns_args.found_first = true -%}\n {{- key -}}:{{- format_argument(value, escape_keys=False) -}}\n {%- endfor -%}\n {%- elif function['arguments'] is none -%}\n {%- else -%}\n {{- raise_exception(\n \"chat_template: tool_calls[].function.arguments must be a \"\n \"JSON object (mapping), not a string. Deserialize arguments \"\n \"before passing to the template.\"\n ) -}}\n {%- endif -%}\n {{- '}<tool_call|>' -}}\n {%- endfor -%}\n {%- set ns.prev_message_type = 'tool_call' -%}\n {%- endif -%}\n\n {%- set ns_tr_out = namespace(flag=false) -%}\n {%- if message.get('tool_responses') -%}\n {#- Legacy: tool_responses embedded on the assistant message (Google/Gemma native) -#}\n {%- for tool_response in message.get('tool_responses') -%}\n {{- format_tool_response_block(tool_response['name'] | default('unknown', true), tool_response['response']) -}}\n {%- set ns_tr_out.flag = true -%}\n {%- set ns.prev_message_type = 'tool_response' -%}\n {%- endfor -%}\n {%- elif message.get('tool_calls') -%}\n {#- OpenAI Chat Completions: forward-scan consecutive role:tool messages -#}\n {%- set ns_tool_scan = namespace(stopped=false) -%}\n {%- for k in range(loop.index0 + 1, loop_messages | length) -%}\n {%- if ns_tool_scan.stopped -%}\n {%- elif loop_messages[k]['role'] != 'tool' -%}\n {%- set ns_tool_scan.stopped = true -%}\n {%- else -%}\n {%- set follow = loop_messages[k] -%}\n {#- Resolve tool_call_id to function name -#}\n {%- set ns_tname = namespace(name=follow.get('name') or 'unknown') -%}\n {%- for tc in message.get('tool_calls') -%}\n {%- if tc.get('id') == follow.get('tool_call_id') -%}\n {%- set ns_tname.name = tc['function']['name'] -%}\n {%- endif -%}\n {%- endfor -%}\n {#- Handle content as string or content-parts array -#}\n {%- set tool_body = follow.get('content') -%}\n {%- if tool_body is string -%}\n {{- format_tool_response_block(ns_tname.name, tool_body) -}}\n {%- elif tool_body is sequence and tool_body is not string -%}\n {%- set ns_txt = namespace(s='') -%}\n {%- for part in tool_body -%}\n {%- if part.get('type') == 'text' -%}\n {%- set ns_txt.s = ns_txt.s + (part.get('text') | default('')) -%}\n {%- endif -%}\n {%- endfor -%}\n {{- format_tool_response_block(ns_tname.name, ns_txt.s) -}}\n {%- for part in tool_body -%}\n {%- if part.get('type') in ['image', 'image_url'] -%}\n {{- '<|image|>' -}}\n {%- elif part.get('type') in ['audio', 'input_audio'] -%}\n {{- '<|audio|>' -}}\n {%- elif part.get('type') == 'video' -%}\n {{- '<|video|>' -}}\n {%- endif -%}\n {%- endfor -%}\n {%- else -%}\n {{- format_tool_response_block(ns_tname.name, tool_body) -}}\n {%- endif -%}\n {%- set ns_tr_out.flag = true -%}\n {%- set ns.prev_message_type = 'tool_response' -%}\n {%- endif -%}\n {%- endfor -%}\n {%- endif -%}\n\n {%- set captured_content -%}\n {%- if message.get('content') is string -%}\n {%- if role == 'model' -%}\n {{- strip_thinking(message['content']) -}}\n {%- else -%}\n {{- message['content'] | trim -}}\n {%- endif -%}\n {%- elif message.get('content') is sequence -%}\n {%- for item in message['content'] -%}\n {%- if item.get('type') == 'text' -%}\n {%- if role == 'model' -%}\n {{- strip_thinking(item['text']) -}}\n {%- else -%}\n {{- item['text'] | trim -}}\n {%- endif -%}\n {%- elif item.get('type') in ['image', 'image_url'] -%}\n {{- '<|image|>' -}}\n {%- elif item.get('type') in ['audio', 'input_audio'] -%}\n {{- '<|audio|>' -}}\n {%- elif item.get('type') == 'video' -%}\n {{- '<|video|>' -}}\n {%- endif -%}\n {%- endfor -%}\n {%- endif -%}\n {%- endset -%}\n\n {{- captured_content -}}\n {%- set has_content = captured_content | trim | length > 0 -%}\n\n {#- Forward-scan: find next non-tool message role for continuation detection -#}\n {%- set next_nt = namespace(role=None, found=false) -%}\n {%- for j in range(loop.index0 + 1, loop_messages | length) -%}\n {%- if not next_nt.found -%}\n {%- if loop_messages[j]['role'] != 'tool' -%}\n {%- set next_nt.role = loop_messages[j]['role'] -%}\n {%- set next_nt.found = true -%}\n {%- endif -%}\n {%- endif -%}\n {%- endfor -%}\n\n {%- set continues_into_next = (\n role == 'model'\n and next_nt.role == 'assistant'\n and (not message.get('tool_calls') or ns_tr_out.flag)\n ) -%}\n\n {%- if ns.prev_message_type == 'tool_call' and not ns_tr_out.flag -%}\n {{- '<|tool_response>' -}}\n {%- elif continues_into_next -%}\n {%- elif not (ns_tr_out.flag and not has_content and not next_nt.found) -%}\n {{- '<turn|>\\n' -}}\n {%- endif -%}\n\n {#- Track previous non-tool role for next iteration (avoids O(n) backward scan) -#}\n {%- set ns.prev_non_tool_role = message['role'] -%}\n {%- endif -%}\n{%- endfor -%}\n\n{%- if add_generation_prompt -%}\n {%- if ns.prev_message_type != 'tool_response' and ns.prev_message_type != 'tool_call' -%}\n {{- '<|turn>model\\n' -}}\n {%- if not enable_thinking -%}\n {{- '<|channel>thought\\n<channel|>' -}}\n {%- endif -%}\n {%- elif ns.prev_message_type == 'tool_response' and enable_thinking -%}\n {{- '<|channel>thought\\n' -}}\n {%- endif -%}\n{%- endif -%}\n"},"availableVersions":["1.2.0","1.1.3","1.1.2","1.1.0","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"gemma4-12b-q8","name":"Gemma 4 (12B, Q8)","description":"Google's Gemma 4 at 12B parameters, 8-bit quantization for higher fidelity than the Q4 build (at roughly double the memory footprint). Encoder-free unified multimodal model (text + image + audio + video), native tool calling, configurable thinking, 256K context. Apache-2.0 licensed.","tags":["google","multimodal","vision","audio","tools","agentic"],"maintainer":{"name":"Google","url":"https://huggingface.co/google/gemma-4-12B-it"},"license":"Apache-2.0","licenseClass":"open","licenseShortName":"Apache 2.0","recoScore":15,"version":"1.1.0","releasedAt":"2026-08-28T00:00:00Z","parameterSize":"12B","approxSizeBytes":12669646976,"supportsTools":true,"contextWindow":256000,"upstream":"https://huggingface.co/google/gemma-4-12B-it","category":"general","style":{"family":"gemma","reasoningFormat":"channel","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-channel-tags","reasoning.capture-pre-tool-prose","prompt.private-reasoning-guidance","prompt.tool-cookbook-full","prompt.meester-build-prelude","fabrication.detect-past-tense-no-tools","fabrication.detect-claim-without-tool","turn.preamble-folding",{"id":"turn.ramble-detection","config":{"coldThreshold":6000,"postActionThreshold":1200}},"turn.auto-acknowledge-tool-errors","turn.permission-stall",{"id":"turn.continuation-budget","config":{"count":4}},{"id":"turn.single-tool-per-turn","config":{"meesterOnly":true}},"mcp.compact-tool-schemas","mcp.relax-required-fields","mcp.default-missing-fields","mcp.validate-ids-strict","parse.gemma-special-token","prompt.prefer-writefile-edits","prompt.derive-by-execution","prompt.terse-visible-reply","tools.mlx-grammar"],"tuning":{"sampling":{"temperature":1,"topP":0.95,"topK":64,"maxTokens":8192,"repetitionPenalty":1.1,"repetitionContext":20},"reasoning":{"thinkingBudget":256,"enableThinking":true},"engine":{"llamaCpp":{"spec":{"mtp":true,"nMax":4}}},"profiles":{"thinking-general":{"sampling":{"temperature":0.8,"topP":0.95,"topK":64,"maxTokens":2048,"repetitionPenalty":1.1,"repetitionContext":20}},"thinking-coding":{"sampling":{"temperature":0.6,"topP":0.9,"topK":40,"maxTokens":2048,"repetitionPenalty":1.05,"repetitionContext":32}},"thinking-precise":{"sampling":{"temperature":0.3,"topP":0.9,"topK":20,"maxTokens":4096,"seed":0,"repetitionPenalty":1.05,"repetitionContext":20}},"instruct":{"sampling":{"temperature":0.7,"topP":0.95,"topK":64,"maxTokens":4096,"repetitionPenalty":1.1,"repetitionContext":20}},"creative":{"sampling":{"temperature":1.1,"topP":0.95,"topK":64,"maxTokens":8192,"repetitionPenalty":1,"repetitionContext":20}}}},"llamaCpp":{"huggingfaceRepo":"ggml-org/gemma-4-12B-it-GGUF","revision":"e3e681731089efaa3f0917336944ac64752db8ba","filename":"gemma-4-12B-it-Q8_0.gguf","sha256":"abfc3044b93795f6a446fc1a04468ac2d5fc5e9c92e237f09a5b3384c5a433e4","approxSizeBytes":12669646976,"quantization":"Q8_0","draftModel":{"filename":"mtp-gemma-4-12B-it-Q8_0.gguf","sha256":"16c90eb9f2b2891cc138f3d2b3bf11e23b2ced2aeab9a9d39d90fe446f2f0610","sizeBytes":465109152}},"mlx":{"huggingfaceRepo":"mlx-community/gemma-4-12b-it-8bit","revision":"200bb6db075e137a4deb08838865ac4ddb86292e","files":[{"name":"chat_template.jinja","sha256":"36e3a42e5cf14cd0020e72d92e1fdd9970f59b82170e421f0cbe1bb42bead3f0","sizeBytes":17466},{"name":"config.json","sha256":"c1933cabefab56dbaa24f5d2a8daba6fd6aa896b5e288393f6fb772c76c29567","sizeBytes":5415},{"name":"generation_config.json","sha256":"a8349d9bd64cc5841297fcb5002f0fdc4749c473c8f1b10ea337f9ce4ee7014e","sizeBytes":260},{"name":"model-00001-of-00003.safetensors","sha256":"9225e78a9029520d8e2a895510eb82fc1ac4d656ee25259702e60ef1f767dfcf","sizeBytes":5350433419},{"name":"model-00002-of-00003.safetensors","sha256":"f500b695934f78b3686f9e0e36930495a329cf1c5e9397b11fe7d04175e6e4da","sizeBytes":5358994123},{"name":"model-00003-of-00003.safetensors","sha256":"865f6be184505562f3c0e52157e82b1be4bd3e9cc89b934af455af37b4b99c56","sizeBytes":2006775171},{"name":"model.safetensors.index.json","sha256":"a7b134f6e43578dfcc112555898f94b26a54df0278db6746945d077ed8863ffd","sizeBytes":135330},{"name":"processor_config.json","sha256":"016a1db9c4f41ea0c61919c46855ea5e7c45c6e4ae4bfbedfb5b6bed79a2fe92","sizeBytes":868},{"name":"tokenizer.json","sha256":"cc8d3a0ce36466ccc1278bf987df5f71db1719b9ca6b4118264f45cb627bfe0f","sizeBytes":32169626},{"name":"tokenizer_config.json","sha256":"fc1384a911d2c9860ac07bc3ceafff20bff26695991744b7dbe5e1e4522bfa57","sizeBytes":2719}],"approxSizeBytes":12748534397,"quantization":"8bit","chatTemplateOverride":"{#\n Template: Google Gemma 4 Canonical Chat Template\n Author: Google Gemma Engineering Team\n Published: 2026-07-09\n Context: Fixed tool-calling loops, turn closures, and thinking content-ordering.\n#}\n{%- macro format_parameters(properties, required, filter_keys=false) -%}\n {%- set standard_keys = ['description', 'type', 'properties', 'required', 'nullable'] -%}\n {%- set ns = namespace(found_first=false) -%}\n {%- for key, value in properties | dictsort -%}\n {%- set add_comma = false -%}\n {%- if not filter_keys or key not in standard_keys -%}\n {%- if ns.found_first %},{% endif -%}\n {%- set ns.found_first = true -%}\n {{ key }}:{\n {%- if value['description'] -%}\n description:<|\"|>{{ value['description'] }}<|\"|>\n {%- set add_comma = true -%}\n {%- endif -%}\n {%- if value['type'] | upper == 'STRING' -%}\n {%- if value['enum'] -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n enum:{{ format_argument(value['enum']) }}\n {%- endif -%}\n {%- elif value['type'] | upper == 'ARRAY' -%}\n {%- if value['items'] is mapping and value['items'] -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n items:{\n {%- set ns_items = namespace(found_first=false) -%}\n {%- for item_key, item_value in value['items'] | dictsort -%}\n {%- if item_value is not none -%}\n {%- if ns_items.found_first %},{% endif -%}\n {%- set ns_items.found_first = true -%}\n {%- if item_key == 'properties' -%}\n properties:{\n {%- if item_value is mapping -%}\n {{- format_parameters(item_value, value['items']['required'] | default([])) -}}\n {%- endif -%}\n }\n {%- elif item_key == 'required' -%}\n required:[\n {%- for req_item in item_value -%}\n <|\"|>{{- req_item -}}<|\"|>\n {%- if not loop.last %},{% endif -%}\n {%- endfor -%}\n ]\n {%- elif item_key == 'type' -%}\n {%- if item_value is string -%}\n type:{{ format_argument(item_value | upper) }}\n {%- else -%}\n type:{{ format_argument(item_value | map('upper') | list) }}\n {%- endif -%}\n {%- else -%}\n {{ item_key }}:{{ format_argument(item_value) }}\n {%- endif -%}\n {%- endif -%}\n {%- endfor -%}\n }\n {%- endif -%}\n {%- endif -%}\n {%- if value['nullable'] %}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n nullable:true\n {%- endif -%}\n {%- if value['type'] | upper == 'OBJECT' -%}\n {%- if value['properties'] is defined and value['properties'] is mapping -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n properties:{\n {{- format_parameters(value['properties'], value['required'] | default([])) -}}\n }\n {%- elif value is mapping -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n properties:{\n {{- format_parameters(value, value['required'] | default([]), filter_keys=true) -}}\n }\n {%- endif -%}\n {%- if value['required'] -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n required:[\n {%- for item in value['required'] | default([]) -%}\n <|\"|>{{- item -}}<|\"|>\n {%- if not loop.last %},{% endif -%}\n {%- endfor -%}\n ]\n {%- endif -%}\n {%- endif -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n type:<|\"|>{{ value['type'] | upper }}<|\"|>}\n {%- endif -%}\n {%- endfor -%}\n{%- endmacro -%}\n{%- macro format_function_declaration(tool_data) -%}\n declaration:{{- tool_data['function']['name'] -}}{description:<|\"|>{{- tool_data['function']['description'] -}}<|\"|>\n {%- set params = tool_data['function']['parameters'] -%}\n {%- if params -%}\n ,parameters:{\n {%- if params['properties'] -%}\n properties:{ {{- format_parameters(params['properties'], params['required']) -}} },\n {%- endif -%}\n {%- if params['required'] -%}\n required:[\n {%- for item in params['required'] -%}\n <|\"|>{{- item -}}<|\"|>\n {{- ',' if not loop.last -}}\n {%- endfor -%}\n ],\n {%- endif -%}\n {%- if params['type'] -%}\n type:<|\"|>{{- params['type'] | upper -}}<|\"|>}\n {%- endif -%}\n {%- endif -%}\n {%- if 'response' in tool_data['function'] -%}\n {%- set response_declaration = tool_data['function']['response'] -%}\n ,response:{\n {%- if response_declaration['description'] -%}\n description:<|\"|>{{- response_declaration['description'] -}}<|\"|>,\n {%- endif -%}\n {%- if response_declaration['type'] | upper == 'OBJECT' -%}\n type:<|\"|>{{- response_declaration['type'] | upper -}}<|\"|>}\n {%- endif -%}\n {%- endif -%}\n }\n{%- endmacro -%}\n{%- macro format_argument(argument, escape_keys=True) -%}\n {%- if argument is none -%}\n {{- 'null' -}}\n {%- elif argument is string -%}\n {{- '<|\"|>' + argument + '<|\"|>' -}}\n {%- elif argument is boolean -%}\n {{- 'true' if argument else 'false' -}}\n {%- elif argument is mapping -%}\n {{- '{' -}}\n {%- set ns = namespace(found_first=false) -%}\n {%- for key, value in argument | dictsort -%}\n {%- if ns.found_first %},{% endif -%}\n {%- set ns.found_first = true -%}\n {%- if escape_keys -%}\n {{- '<|\"|>' + key + '<|\"|>' -}}\n {%- else -%}\n {{- key -}}\n {%- endif -%}\n :{{- format_argument(value, escape_keys=escape_keys) -}}\n {%- endfor -%}\n {{- '}' -}}\n {%- elif argument is sequence -%}\n {{- '[' -}}\n {%- for item in argument -%}\n {{- format_argument(item, escape_keys=escape_keys) -}}\n {%- if not loop.last %},{% endif -%}\n {%- endfor -%}\n {{- ']' -}}\n {%- else -%}\n {{- argument -}}\n {%- endif -%}\n{%- endmacro -%}\n{%- macro strip_thinking(text) -%}\n {%- set ns = namespace(result='') -%}\n {%- for part in text.split('<channel|>') -%}\n {%- if '<|channel>' in part -%}\n {%- set ns.result = ns.result + part.split('<|channel>')[0] -%}\n {%- else -%}\n {%- set ns.result = ns.result + part -%}\n {%- endif -%}\n {%- endfor -%}\n {{- ns.result | trim -}}\n{%- endmacro -%}\n\n{%- macro format_tool_response_block(tool_name, response) -%}\n {{- '<|tool_response>' -}}\n {%- if response is mapping -%}\n {{- 'response:' + tool_name + '{' -}}\n {%- for key, value in response | dictsort -%}\n {{- key -}}:{{- format_argument(value, escape_keys=False) -}}\n {%- if not loop.last %},{% endif -%}\n {%- endfor -%}\n {{- '}' -}}\n {%- else -%}\n {{- 'response:' + tool_name + '{value:' + format_argument(response, escape_keys=False) + '}' -}}\n {%- endif -%}\n {{- '<tool_response|>' -}}\n{%- endmacro -%}\n\n{#- ===== SETUP ===== -#}\n{%- set ns = namespace(prev_message_type=None, prev_non_tool_role=None) -%}\n{%- set loop_messages = messages -%}\n{%- set enable_thinking = enable_thinking | default(false) -%}\n{%- set preserve_thinking = preserve_thinking | default(false) -%}\n{{- bos_token -}}\n{#- Handle System/Tool Definitions Block -#}\n{%- if enable_thinking or tools or (messages and messages[0]['role'] in ['system', 'developer']) -%}\n {{- '<|turn>system\\n' -}}\n {#- Inject Thinking token at the very top of the FIRST system turn -#}\n {%- if enable_thinking -%}\n {{- '<|think|>\\n' -}}\n {%- set ns.prev_message_type = 'think' -%}\n {%- endif -%}\n {%- if messages and messages[0]['role'] in ['system', 'developer'] -%}\n {%- if messages[0]['content'] is string -%}\n {{- messages[0]['content'] | trim -}}\n {%- elif messages[0]['content'] is sequence -%}\n {%- for item in messages[0]['content'] -%}\n {{- item['text'] | trim + ' '-}}\n {%- endfor -%}\n {%- endif -%}\n {%- set loop_messages = messages[1:] -%}\n {%- endif -%}\n {%- if tools -%}\n {%- for tool in tools %}\n {{- '<|tool>' -}}\n {{- format_function_declaration(tool) | trim -}}\n {{- '<tool|>' -}}\n {%- endfor %}\n {%- set ns.prev_message_type = 'tool' -%}\n {%- endif -%}\n {{- '<turn|>\\n' -}}\n{%- endif %}\n\n{#- Pre-scan: find last user message index for reasoning guard -#}\n{%- set ns_turn = namespace(last_user_idx=-1) -%}\n{%- for i in range(loop_messages | length) -%}\n {%- if loop_messages[i]['role'] == 'user' -%}\n {%- set ns_turn.last_user_idx = i -%}\n {%- endif -%}\n{%- endfor -%}\n\n{#- Loop through messages -#}\n{%- for message in loop_messages -%}\n {%- if message['role'] != 'tool' -%}\n {%- set ns.prev_message_type = None -%}\n {%- set role = 'model' if message['role'] == 'assistant' else message['role'] -%}\n {#- Detect continuation using tracked state — O(1) instead of O(n) backward scan -#}\n {%- set continue_same_model_turn = (role == 'model' and ns.prev_non_tool_role == 'assistant') -%}\n {%- if not continue_same_model_turn -%}\n {{- '<|turn>' + role + '\\n' }}\n\n {%- endif -%}\n\n {#- Render reasoning/reasoning_content as thinking channel -#}\n {%- set thinking_text = message.get('reasoning') or message.get('reasoning_content') -%}\n {%- set thinking_gate = (loop.index0 > ns_turn.last_user_idx) or (preserve_thinking and message.get('tool_calls')) -%}\n {%- if thinking_text and thinking_gate -%}\n {{- '<|channel>thought\\n' + thinking_text + '\\n<channel|>' -}}\n {%- endif -%}\n\n {%- if message.get('tool_calls') -%}\n {%- for tool_call in message.get('tool_calls') -%}\n {%- set function = tool_call['function'] -%}\n {{- '<|tool_call>call:' + function['name'] + '{' -}}\n {%- if function['arguments'] is mapping -%}\n {%- set ns_args = namespace(found_first=false) -%}\n {%- for key, value in function['arguments'] | dictsort -%}\n {%- if ns_args.found_first %},{% endif -%}\n {%- set ns_args.found_first = true -%}\n {{- key -}}:{{- format_argument(value, escape_keys=False) -}}\n {%- endfor -%}\n {%- elif function['arguments'] is none -%}\n {%- else -%}\n {{- raise_exception(\n \"chat_template: tool_calls[].function.arguments must be a \"\n \"JSON object (mapping), not a string. Deserialize arguments \"\n \"before passing to the template.\"\n ) -}}\n {%- endif -%}\n {{- '}<tool_call|>' -}}\n {%- endfor -%}\n {%- set ns.prev_message_type = 'tool_call' -%}\n {%- endif -%}\n\n {%- set ns_tr_out = namespace(flag=false) -%}\n {%- if message.get('tool_responses') -%}\n {#- Legacy: tool_responses embedded on the assistant message (Google/Gemma native) -#}\n {%- for tool_response in message.get('tool_responses') -%}\n {{- format_tool_response_block(tool_response['name'] | default('unknown', true), tool_response['response']) -}}\n {%- set ns_tr_out.flag = true -%}\n {%- set ns.prev_message_type = 'tool_response' -%}\n {%- endfor -%}\n {%- elif message.get('tool_calls') -%}\n {#- OpenAI Chat Completions: forward-scan consecutive role:tool messages -#}\n {%- set ns_tool_scan = namespace(stopped=false) -%}\n {%- for k in range(loop.index0 + 1, loop_messages | length) -%}\n {%- if ns_tool_scan.stopped -%}\n {%- elif loop_messages[k]['role'] != 'tool' -%}\n {%- set ns_tool_scan.stopped = true -%}\n {%- else -%}\n {%- set follow = loop_messages[k] -%}\n {#- Resolve tool_call_id to function name -#}\n {%- set ns_tname = namespace(name=follow.get('name') or 'unknown') -%}\n {%- for tc in message.get('tool_calls') -%}\n {%- if tc.get('id') == follow.get('tool_call_id') -%}\n {%- set ns_tname.name = tc['function']['name'] -%}\n {%- endif -%}\n {%- endfor -%}\n {#- Handle content as string or content-parts array -#}\n {%- set tool_body = follow.get('content') -%}\n {%- if tool_body is string -%}\n {{- format_tool_response_block(ns_tname.name, tool_body) -}}\n {%- elif tool_body is sequence and tool_body is not string -%}\n {%- set ns_txt = namespace(s='') -%}\n {%- for part in tool_body -%}\n {%- if part.get('type') == 'text' -%}\n {%- set ns_txt.s = ns_txt.s + (part.get('text') | default('')) -%}\n {%- endif -%}\n {%- endfor -%}\n {{- format_tool_response_block(ns_tname.name, ns_txt.s) -}}\n {%- for part in tool_body -%}\n {%- if part.get('type') in ['image', 'image_url'] -%}\n {{- '<|image|>' -}}\n {%- elif part.get('type') in ['audio', 'input_audio'] -%}\n {{- '<|audio|>' -}}\n {%- elif part.get('type') == 'video' -%}\n {{- '<|video|>' -}}\n {%- endif -%}\n {%- endfor -%}\n {%- else -%}\n {{- format_tool_response_block(ns_tname.name, tool_body) -}}\n {%- endif -%}\n {%- set ns_tr_out.flag = true -%}\n {%- set ns.prev_message_type = 'tool_response' -%}\n {%- endif -%}\n {%- endfor -%}\n {%- endif -%}\n\n {%- set captured_content -%}\n {%- if message.get('content') is string -%}\n {%- if role == 'model' -%}\n {{- strip_thinking(message['content']) -}}\n {%- else -%}\n {{- message['content'] | trim -}}\n {%- endif -%}\n {%- elif message.get('content') is sequence -%}\n {%- for item in message['content'] -%}\n {%- if item.get('type') == 'text' -%}\n {%- if role == 'model' -%}\n {{- strip_thinking(item['text']) -}}\n {%- else -%}\n {{- item['text'] | trim -}}\n {%- endif -%}\n {%- elif item.get('type') in ['image', 'image_url'] -%}\n {{- '<|image|>' -}}\n {%- elif item.get('type') in ['audio', 'input_audio'] -%}\n {{- '<|audio|>' -}}\n {%- elif item.get('type') == 'video' -%}\n {{- '<|video|>' -}}\n {%- endif -%}\n {%- endfor -%}\n {%- endif -%}\n {%- endset -%}\n\n {{- captured_content -}}\n {%- set has_content = captured_content | trim | length > 0 -%}\n\n {#- Forward-scan: find next non-tool message role for continuation detection -#}\n {%- set next_nt = namespace(role=None, found=false) -%}\n {%- for j in range(loop.index0 + 1, loop_messages | length) -%}\n {%- if not next_nt.found -%}\n {%- if loop_messages[j]['role'] != 'tool' -%}\n {%- set next_nt.role = loop_messages[j]['role'] -%}\n {%- set next_nt.found = true -%}\n {%- endif -%}\n {%- endif -%}\n {%- endfor -%}\n\n {%- set continues_into_next = (\n role == 'model'\n and next_nt.role == 'assistant'\n and (not message.get('tool_calls') or ns_tr_out.flag)\n ) -%}\n\n {%- if ns.prev_message_type == 'tool_call' and not ns_tr_out.flag -%}\n {{- '<|tool_response>' -}}\n {%- elif continues_into_next -%}\n {%- elif not (ns_tr_out.flag and not has_content and not next_nt.found) -%}\n {{- '<turn|>\\n' -}}\n {%- endif -%}\n\n {#- Track previous non-tool role for next iteration (avoids O(n) backward scan) -#}\n {%- set ns.prev_non_tool_role = message['role'] -%}\n {%- endif -%}\n{%- endfor -%}\n\n{%- if add_generation_prompt -%}\n {%- if ns.prev_message_type != 'tool_response' and ns.prev_message_type != 'tool_call' -%}\n {{- '<|turn>model\\n' -}}\n {%- if not enable_thinking -%}\n {{- '<|channel>thought\\n<channel|>' -}}\n {%- endif -%}\n {%- elif ns.prev_message_type == 'tool_response' and enable_thinking -%}\n {{- '<|channel>thought\\n' -}}\n {%- endif -%}\n{%- endif -%}\n"},"availableVersions":["1.1.0","1.0.3","1.0.2","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"gemma4-26b-q4","name":"Gemma 4 (26B, MoE, Q4)","description":"Google's Gemma 4 mixture-of-experts model — 25.2B total parameters with 3.8B active per token. Multimodal with long-context agentic workflows. The full 26B has to fit in memory but only ~4B parameters fire per token, so on capable hardware it runs noticeably faster than the dense 31B at a similar memory cost — the recommended high-end on-device default.","tags":["google","multimodal","vision","tools","mix of experts","agentic","qat"],"maintainer":{"name":"Google","url":"https://huggingface.co/google/gemma-4-26B-A4B-it"},"license":"Apache-2.0","licenseClass":"open","licenseShortName":"Apache 2.0","recoScore":15,"version":"1.3.0","releasedAt":"2026-08-28T00:00:00Z","parameterSize":"25.2B","approxSizeBytes":14249047104,"supportsTools":true,"contextWindow":256000,"upstream":"https://huggingface.co/google/gemma-4-26B-A4B-it","category":"general","style":{"family":"gemma","reasoningFormat":"channel","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-channel-tags","reasoning.capture-pre-tool-prose","prompt.private-reasoning-guidance","prompt.tool-cookbook-full","prompt.meester-build-prelude","fabrication.detect-past-tense-no-tools","fabrication.detect-claim-without-tool","turn.preamble-folding",{"id":"turn.ramble-detection","config":{"coldThreshold":8000,"postActionThreshold":2000}},"turn.auto-acknowledge-tool-errors",{"id":"turn.continuation-budget","config":{"count":4}},"mcp.compact-tool-schemas","mcp.validate-ids-strict",{"id":"turn.single-tool-per-turn","config":{"meesterOnly":true}},"parse.gemma-special-token","tools.mlx-grammar"],"tuning":{"sampling":{"temperature":1,"topP":0.95,"topK":64,"maxTokens":8192,"repetitionPenalty":1.1,"repetitionContext":20},"reasoning":{"thinkingBudget":96},"engine":{"llamaCpp":{"spec":{"mtp":true,"nMax":4}}},"profiles":{"thinking-general":{"sampling":{"temperature":0.8,"topP":0.95,"topK":64,"maxTokens":8192,"repetitionPenalty":1.1,"repetitionContext":20}},"thinking-coding":{"sampling":{"temperature":0.6,"topP":0.9,"topK":40,"maxTokens":16384,"repetitionPenalty":1.05,"repetitionContext":32}},"thinking-precise":{"sampling":{"temperature":0.3,"topP":0.9,"topK":20,"maxTokens":4096,"seed":0,"repetitionPenalty":1.05,"repetitionContext":20}},"instruct":{"sampling":{"temperature":0.7,"topP":0.95,"topK":64,"maxTokens":4096,"repetitionPenalty":1.1,"repetitionContext":20}},"creative":{"sampling":{"temperature":1.1,"topP":0.95,"topK":64,"maxTokens":8192,"repetitionPenalty":1,"repetitionContext":20}}}},"ollama":{"tag":"gemma4:26b-a4b-it-qat"},"llamaCpp":{"huggingfaceRepo":"unsloth/gemma-4-26B-A4B-it-qat-GGUF","revision":"7b92b5b28818151e8669af2e45e88d6086f490dd","filename":"gemma-4-26B-A4B-it-qat-UD-Q4_K_XL.gguf","sha256":"a7c5bc715f5ff8e99a3e8901ce7d2b42b402c669bf24f7c5250747633d0f5891","approxSizeBytes":14249047104,"quantization":"UD-Q4_K_XL","draftModel":{"filename":"MTP/mtp-gemma-4-26B-A4B-it-Q4_0.gguf","sha256":"7272d97595f0d4c74bd7b623492b7dbdaafd8b7c72f329a8270ba4eca68f768a","sizeBytes":251939328}},"mlx":{"huggingfaceRepo":"mlx-community/gemma-4-26B-A4B-it-qat-4bit","revision":"0e3cbab38ce568cf6e23543010d08d03b731910c","files":[{"name":"chat_template.jinja","sha256":"94899c0f917d93f6fe81c95744d1e8ddab2d21d39228d2e4aec1fb2a25bff413","sizeBytes":16934},{"name":"config.json","sha256":"29910322dd085f45c8f95c6c0f1611b20f722d6f6c8394321b34817e98a972fa","sizeBytes":33376},{"name":"generation_config.json","sha256":"b69207f9be617e982d13cc273cce6fd88c98dda99a4bdc5e2d52ffe0a0d9f0a9","sizeBytes":203},{"name":"model-00001-of-00003.safetensors","sha256":"898863f0d5eba7153a9c9b9443aac1969809f2149e88481c725b6da40783f129","sizeBytes":5275612587},{"name":"model-00002-of-00003.safetensors","sha256":"2abdca76ed4a647cfe8af680908894e2709b4e1221ddbbbef1b1edb14f60e303","sizeBytes":5296718232},{"name":"model-00003-of-00003.safetensors","sha256":"a554f0fdb61bc9e510a5318e723a780c31434fd3e3dcdd3c16c700f835ade7b7","sizeBytes":5036507755},{"name":"model.safetensors.index.json","sha256":"5455e83705bbdd4e3702c7d4f9d49d4900e84533036628f74500538075dd5c80","sizeBytes":176940},{"name":"processor_config.json","sha256":"1bd0d00776284f369c1eff5fb631e865dfcdca861e0b7d60dbef27fcf37436a8","sizeBytes":902},{"name":"tokenizer.json","sha256":"cc8d3a0ce36466ccc1278bf987df5f71db1719b9ca6b4118264f45cb627bfe0f","sizeBytes":32169626},{"name":"tokenizer_config.json","sha256":"080d9e1aff284e2f6043889cd05367966f7c7b80e025fbc0b06745e218158656","sizeBytes":2740}],"approxSizeBytes":15641239295,"quantization":"4bit","chatTemplateOverride":"{#\n Template: Google Gemma 4 Canonical Chat Template\n Author: Google Gemma Engineering Team\n Published: 2026-07-09\n Context: Fixed tool-calling loops, turn closures, and thinking content-ordering.\n#}\n{%- macro format_parameters(properties, required, filter_keys=false) -%}\n {%- set standard_keys = ['description', 'type', 'properties', 'required', 'nullable'] -%}\n {%- set ns = namespace(found_first=false) -%}\n {%- for key, value in properties | dictsort -%}\n {%- set add_comma = false -%}\n {%- if not filter_keys or key not in standard_keys -%}\n {%- if ns.found_first %},{% endif -%}\n {%- set ns.found_first = true -%}\n {{ key }}:{\n {%- if value['description'] -%}\n description:<|\"|>{{ value['description'] }}<|\"|>\n {%- set add_comma = true -%}\n {%- endif -%}\n {%- if value['type'] | upper == 'STRING' -%}\n {%- if value['enum'] -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n enum:{{ format_argument(value['enum']) }}\n {%- endif -%}\n {%- elif value['type'] | upper == 'ARRAY' -%}\n {%- if value['items'] is mapping and value['items'] -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n items:{\n {%- set ns_items = namespace(found_first=false) -%}\n {%- for item_key, item_value in value['items'] | dictsort -%}\n {%- if item_value is not none -%}\n {%- if ns_items.found_first %},{% endif -%}\n {%- set ns_items.found_first = true -%}\n {%- if item_key == 'properties' -%}\n properties:{\n {%- if item_value is mapping -%}\n {{- format_parameters(item_value, value['items']['required'] | default([])) -}}\n {%- endif -%}\n }\n {%- elif item_key == 'required' -%}\n required:[\n {%- for req_item in item_value -%}\n <|\"|>{{- req_item -}}<|\"|>\n {%- if not loop.last %},{% endif -%}\n {%- endfor -%}\n ]\n {%- elif item_key == 'type' -%}\n {%- if item_value is string -%}\n type:{{ format_argument(item_value | upper) }}\n {%- else -%}\n type:{{ format_argument(item_value | map('upper') | list) }}\n {%- endif -%}\n {%- else -%}\n {{ item_key }}:{{ format_argument(item_value) }}\n {%- endif -%}\n {%- endif -%}\n {%- endfor -%}\n }\n {%- endif -%}\n {%- endif -%}\n {%- if value['nullable'] %}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n nullable:true\n {%- endif -%}\n {%- if value['type'] | upper == 'OBJECT' -%}\n {%- if value['properties'] is defined and value['properties'] is mapping -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n properties:{\n {{- format_parameters(value['properties'], value['required'] | default([])) -}}\n }\n {%- elif value is mapping -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n properties:{\n {{- format_parameters(value, value['required'] | default([]), filter_keys=true) -}}\n }\n {%- endif -%}\n {%- if value['required'] -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n required:[\n {%- for item in value['required'] | default([]) -%}\n <|\"|>{{- item -}}<|\"|>\n {%- if not loop.last %},{% endif -%}\n {%- endfor -%}\n ]\n {%- endif -%}\n {%- endif -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n type:<|\"|>{{ value['type'] | upper }}<|\"|>}\n {%- endif -%}\n {%- endfor -%}\n{%- endmacro -%}\n{%- macro format_function_declaration(tool_data) -%}\n declaration:{{- tool_data['function']['name'] -}}{description:<|\"|>{{- tool_data['function']['description'] -}}<|\"|>\n {%- set params = tool_data['function']['parameters'] -%}\n {%- if params -%}\n ,parameters:{\n {%- if params['properties'] -%}\n properties:{ {{- format_parameters(params['properties'], params['required']) -}} },\n {%- endif -%}\n {%- if params['required'] -%}\n required:[\n {%- for item in params['required'] -%}\n <|\"|>{{- item -}}<|\"|>\n {{- ',' if not loop.last -}}\n {%- endfor -%}\n ],\n {%- endif -%}\n {%- if params['type'] -%}\n type:<|\"|>{{- params['type'] | upper -}}<|\"|>}\n {%- endif -%}\n {%- endif -%}\n {%- if 'response' in tool_data['function'] -%}\n {%- set response_declaration = tool_data['function']['response'] -%}\n ,response:{\n {%- if response_declaration['description'] -%}\n description:<|\"|>{{- response_declaration['description'] -}}<|\"|>,\n {%- endif -%}\n {%- if response_declaration['type'] | upper == 'OBJECT' -%}\n type:<|\"|>{{- response_declaration['type'] | upper -}}<|\"|>}\n {%- endif -%}\n {%- endif -%}\n }\n{%- endmacro -%}\n{%- macro format_argument(argument, escape_keys=True) -%}\n {%- if argument is none -%}\n {{- 'null' -}}\n {%- elif argument is string -%}\n {{- '<|\"|>' + argument + '<|\"|>' -}}\n {%- elif argument is boolean -%}\n {{- 'true' if argument else 'false' -}}\n {%- elif argument is mapping -%}\n {{- '{' -}}\n {%- set ns = namespace(found_first=false) -%}\n {%- for key, value in argument | dictsort -%}\n {%- if ns.found_first %},{% endif -%}\n {%- set ns.found_first = true -%}\n {%- if escape_keys -%}\n {{- '<|\"|>' + key + '<|\"|>' -}}\n {%- else -%}\n {{- key -}}\n {%- endif -%}\n :{{- format_argument(value, escape_keys=escape_keys) -}}\n {%- endfor -%}\n {{- '}' -}}\n {%- elif argument is sequence -%}\n {{- '[' -}}\n {%- for item in argument -%}\n {{- format_argument(item, escape_keys=escape_keys) -}}\n {%- if not loop.last %},{% endif -%}\n {%- endfor -%}\n {{- ']' -}}\n {%- else -%}\n {{- argument -}}\n {%- endif -%}\n{%- endmacro -%}\n{%- macro strip_thinking(text) -%}\n {%- set ns = namespace(result='') -%}\n {%- for part in text.split('<channel|>') -%}\n {%- if '<|channel>' in part -%}\n {%- set ns.result = ns.result + part.split('<|channel>')[0] -%}\n {%- else -%}\n {%- set ns.result = ns.result + part -%}\n {%- endif -%}\n {%- endfor -%}\n {{- ns.result | trim -}}\n{%- endmacro -%}\n\n{%- macro format_tool_response_block(tool_name, response) -%}\n {{- '<|tool_response>' -}}\n {%- if response is mapping -%}\n {{- 'response:' + tool_name + '{' -}}\n {%- for key, value in response | dictsort -%}\n {{- key -}}:{{- format_argument(value, escape_keys=False) -}}\n {%- if not loop.last %},{% endif -%}\n {%- endfor -%}\n {{- '}' -}}\n {%- else -%}\n {{- 'response:' + tool_name + '{value:' + format_argument(response, escape_keys=False) + '}' -}}\n {%- endif -%}\n {{- '<tool_response|>' -}}\n{%- endmacro -%}\n\n{#- ===== SETUP ===== -#}\n{%- set ns = namespace(prev_message_type=None, prev_non_tool_role=None) -%}\n{%- set loop_messages = messages -%}\n{%- set enable_thinking = enable_thinking | default(false) -%}\n{%- set preserve_thinking = preserve_thinking | default(false) -%}\n{{- bos_token -}}\n{#- Handle System/Tool Definitions Block -#}\n{%- if enable_thinking or tools or (messages and messages[0]['role'] in ['system', 'developer']) -%}\n {{- '<|turn>system\\n' -}}\n {#- Inject Thinking token at the very top of the FIRST system turn -#}\n {%- if enable_thinking -%}\n {{- '<|think|>\\n' -}}\n {%- set ns.prev_message_type = 'think' -%}\n {%- endif -%}\n {%- if messages and messages[0]['role'] in ['system', 'developer'] -%}\n {%- if messages[0]['content'] is string -%}\n {{- messages[0]['content'] | trim -}}\n {%- elif messages[0]['content'] is sequence -%}\n {%- for item in messages[0]['content'] -%}\n {{- item['text'] | trim + ' '-}}\n {%- endfor -%}\n {%- endif -%}\n {%- set loop_messages = messages[1:] -%}\n {%- endif -%}\n {%- if tools -%}\n {%- for tool in tools %}\n {{- '<|tool>' -}}\n {{- format_function_declaration(tool) | trim -}}\n {{- '<tool|>' -}}\n {%- endfor %}\n {%- set ns.prev_message_type = 'tool' -%}\n {%- endif -%}\n {{- '<turn|>\\n' -}}\n{%- endif %}\n\n{#- Pre-scan: find last user message index for reasoning guard -#}\n{%- set ns_turn = namespace(last_user_idx=-1) -%}\n{%- for i in range(loop_messages | length) -%}\n {%- if loop_messages[i]['role'] == 'user' -%}\n {%- set ns_turn.last_user_idx = i -%}\n {%- endif -%}\n{%- endfor -%}\n\n{#- Loop through messages -#}\n{%- for message in loop_messages -%}\n {%- if message['role'] != 'tool' -%}\n {%- set ns.prev_message_type = None -%}\n {%- set role = 'model' if message['role'] == 'assistant' else message['role'] -%}\n {#- Detect continuation using tracked state — O(1) instead of O(n) backward scan -#}\n {%- set continue_same_model_turn = (role == 'model' and ns.prev_non_tool_role == 'assistant') -%}\n {%- if not continue_same_model_turn -%}\n {{- '<|turn>' + role + '\\n' }}\n\n {%- endif -%}\n\n {#- Render reasoning/reasoning_content as thinking channel -#}\n {%- set thinking_text = message.get('reasoning') or message.get('reasoning_content') -%}\n {%- set thinking_gate = (loop.index0 > ns_turn.last_user_idx) or (preserve_thinking and message.get('tool_calls')) -%}\n {%- if thinking_text and thinking_gate -%}\n {{- '<|channel>thought\\n' + thinking_text + '\\n<channel|>' -}}\n {%- endif -%}\n\n {%- if message.get('tool_calls') -%}\n {%- for tool_call in message.get('tool_calls') -%}\n {%- set function = tool_call['function'] -%}\n {{- '<|tool_call>call:' + function['name'] + '{' -}}\n {%- if function['arguments'] is mapping -%}\n {%- set ns_args = namespace(found_first=false) -%}\n {%- for key, value in function['arguments'] | dictsort -%}\n {%- if ns_args.found_first %},{% endif -%}\n {%- set ns_args.found_first = true -%}\n {{- key -}}:{{- format_argument(value, escape_keys=False) -}}\n {%- endfor -%}\n {%- elif function['arguments'] is none -%}\n {%- else -%}\n {{- raise_exception(\n \"chat_template: tool_calls[].function.arguments must be a \"\n \"JSON object (mapping), not a string. Deserialize arguments \"\n \"before passing to the template.\"\n ) -}}\n {%- endif -%}\n {{- '}<tool_call|>' -}}\n {%- endfor -%}\n {%- set ns.prev_message_type = 'tool_call' -%}\n {%- endif -%}\n\n {%- set ns_tr_out = namespace(flag=false) -%}\n {%- if message.get('tool_responses') -%}\n {#- Legacy: tool_responses embedded on the assistant message (Google/Gemma native) -#}\n {%- for tool_response in message.get('tool_responses') -%}\n {{- format_tool_response_block(tool_response['name'] | default('unknown', true), tool_response['response']) -}}\n {%- set ns_tr_out.flag = true -%}\n {%- set ns.prev_message_type = 'tool_response' -%}\n {%- endfor -%}\n {%- elif message.get('tool_calls') -%}\n {#- OpenAI Chat Completions: forward-scan consecutive role:tool messages -#}\n {%- set ns_tool_scan = namespace(stopped=false) -%}\n {%- for k in range(loop.index0 + 1, loop_messages | length) -%}\n {%- if ns_tool_scan.stopped -%}\n {%- elif loop_messages[k]['role'] != 'tool' -%}\n {%- set ns_tool_scan.stopped = true -%}\n {%- else -%}\n {%- set follow = loop_messages[k] -%}\n {#- Resolve tool_call_id to function name -#}\n {%- set ns_tname = namespace(name=follow.get('name') or 'unknown') -%}\n {%- for tc in message.get('tool_calls') -%}\n {%- if tc.get('id') == follow.get('tool_call_id') -%}\n {%- set ns_tname.name = tc['function']['name'] -%}\n {%- endif -%}\n {%- endfor -%}\n {#- Handle content as string or content-parts array -#}\n {%- set tool_body = follow.get('content') -%}\n {%- if tool_body is string -%}\n {{- format_tool_response_block(ns_tname.name, tool_body) -}}\n {%- elif tool_body is sequence and tool_body is not string -%}\n {%- set ns_txt = namespace(s='') -%}\n {%- for part in tool_body -%}\n {%- if part.get('type') == 'text' -%}\n {%- set ns_txt.s = ns_txt.s + (part.get('text') | default('')) -%}\n {%- endif -%}\n {%- endfor -%}\n {{- format_tool_response_block(ns_tname.name, ns_txt.s) -}}\n {%- for part in tool_body -%}\n {%- if part.get('type') in ['image', 'image_url'] -%}\n {{- '<|image|>' -}}\n {%- elif part.get('type') in ['audio', 'input_audio'] -%}\n {{- '<|audio|>' -}}\n {%- elif part.get('type') == 'video' -%}\n {{- '<|video|>' -}}\n {%- endif -%}\n {%- endfor -%}\n {%- else -%}\n {{- format_tool_response_block(ns_tname.name, tool_body) -}}\n {%- endif -%}\n {%- set ns_tr_out.flag = true -%}\n {%- set ns.prev_message_type = 'tool_response' -%}\n {%- endif -%}\n {%- endfor -%}\n {%- endif -%}\n\n {%- set captured_content -%}\n {%- if message.get('content') is string -%}\n {%- if role == 'model' -%}\n {{- strip_thinking(message['content']) -}}\n {%- else -%}\n {{- message['content'] | trim -}}\n {%- endif -%}\n {%- elif message.get('content') is sequence -%}\n {%- for item in message['content'] -%}\n {%- if item.get('type') == 'text' -%}\n {%- if role == 'model' -%}\n {{- strip_thinking(item['text']) -}}\n {%- else -%}\n {{- item['text'] | trim -}}\n {%- endif -%}\n {%- elif item.get('type') in ['image', 'image_url'] -%}\n {{- '<|image|>' -}}\n {%- elif item.get('type') in ['audio', 'input_audio'] -%}\n {{- '<|audio|>' -}}\n {%- elif item.get('type') == 'video' -%}\n {{- '<|video|>' -}}\n {%- endif -%}\n {%- endfor -%}\n {%- endif -%}\n {%- endset -%}\n\n {{- captured_content -}}\n {%- set has_content = captured_content | trim | length > 0 -%}\n\n {#- Forward-scan: find next non-tool message role for continuation detection -#}\n {%- set next_nt = namespace(role=None, found=false) -%}\n {%- for j in range(loop.index0 + 1, loop_messages | length) -%}\n {%- if not next_nt.found -%}\n {%- if loop_messages[j]['role'] != 'tool' -%}\n {%- set next_nt.role = loop_messages[j]['role'] -%}\n {%- set next_nt.found = true -%}\n {%- endif -%}\n {%- endif -%}\n {%- endfor -%}\n\n {%- set continues_into_next = (\n role == 'model'\n and next_nt.role == 'assistant'\n and (not message.get('tool_calls') or ns_tr_out.flag)\n ) -%}\n\n {%- if ns.prev_message_type == 'tool_call' and not ns_tr_out.flag -%}\n {{- '<|tool_response>' -}}\n {%- elif continues_into_next -%}\n {%- elif not (ns_tr_out.flag and not has_content and not next_nt.found) -%}\n {{- '<turn|>\\n' -}}\n {%- endif -%}\n\n {#- Track previous non-tool role for next iteration (avoids O(n) backward scan) -#}\n {%- set ns.prev_non_tool_role = message['role'] -%}\n {%- endif -%}\n{%- endfor -%}\n\n{%- if add_generation_prompt -%}\n {%- if ns.prev_message_type != 'tool_response' and ns.prev_message_type != 'tool_call' -%}\n {{- '<|turn>model\\n' -}}\n {%- if not enable_thinking -%}\n {{- '<|channel>thought\\n<channel|>' -}}\n {%- endif -%}\n {%- elif ns.prev_message_type == 'tool_response' and enable_thinking -%}\n {{- '<|channel>thought\\n' -}}\n {%- endif -%}\n{%- endif -%}\n"},"availableVersions":["1.3.0","1.2.2","1.2.1","1.2.0","1.1.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"gemma4-31b-q4","name":"Gemma 4 (31B, Q4)","description":"Google's flagship Gemma 4 at 30.7B parameters. Multimodal (text + image + video), 256K context, configurable thinking mode, native function-calling, 140+ languages. Frontier-tier instruction-following on device — needs 32GB+ of usable memory.","tags":["google","multimodal","vision","video","tools","reasoning","large","qat"],"maintainer":{"name":"Google","url":"https://huggingface.co/google/gemma-4-31B-it"},"license":"Apache-2.0","licenseClass":"open","licenseShortName":"Apache 2.0","recoScore":15,"version":"1.3.0","releasedAt":"2026-08-28T00:00:00Z","parameterSize":"30.7B","approxSizeBytes":17287670048,"supportsTools":true,"contextWindow":256000,"upstream":"https://huggingface.co/google/gemma-4-31B-it","category":"general","style":{"family":"gemma","reasoningFormat":"channel","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-channel-tags","reasoning.capture-pre-tool-prose","prompt.private-reasoning-guidance","prompt.tool-cookbook-full","prompt.meester-build-prelude","fabrication.detect-past-tense-no-tools","fabrication.detect-claim-without-tool","turn.preamble-folding",{"id":"turn.ramble-detection","config":{"coldThreshold":8000,"postActionThreshold":2000}},"turn.auto-acknowledge-tool-errors",{"id":"turn.continuation-budget","config":{"count":4}},"mcp.compact-tool-schemas","mcp.validate-ids-strict",{"id":"turn.single-tool-per-turn","config":{"meesterOnly":true}},"parse.gemma-special-token","tools.mlx-grammar"],"tuning":{"sampling":{"temperature":1,"topP":0.95,"topK":64,"maxTokens":8192,"repetitionPenalty":1.1,"repetitionContext":20},"reasoning":{"thinkingBudget":96},"engine":{"llamaCpp":{"spec":{"mtp":true,"nMax":4}}},"profiles":{"thinking-general":{"sampling":{"temperature":0.8,"topP":0.95,"topK":64,"maxTokens":8192,"repetitionPenalty":1.1,"repetitionContext":20}},"thinking-coding":{"sampling":{"temperature":0.6,"topP":0.9,"topK":40,"maxTokens":16384,"repetitionPenalty":1.05,"repetitionContext":32}},"thinking-precise":{"sampling":{"temperature":0.3,"topP":0.9,"topK":20,"maxTokens":4096,"seed":0,"repetitionPenalty":1.05,"repetitionContext":20}},"instruct":{"sampling":{"temperature":0.7,"topP":0.95,"topK":64,"maxTokens":4096,"repetitionPenalty":1.1,"repetitionContext":20}},"creative":{"sampling":{"temperature":1.1,"topP":0.95,"topK":64,"maxTokens":8192,"repetitionPenalty":1,"repetitionContext":20}}}},"ollama":{"tag":"gemma4:31b-it-qat"},"llamaCpp":{"huggingfaceRepo":"unsloth/gemma-4-31B-it-qat-GGUF","revision":"43cc1aeb31adf47ec06a854507ce552cd9862e6f","filename":"gemma-4-31B-it-qat-UD-Q4_K_XL.gguf","sha256":"00b5a7c497f0c8934033088c10a7fa9a4c015e46ee6d89e9c6890650ba5d0e71","approxSizeBytes":17287670048,"quantization":"UD-Q4_K_XL","draftModel":{"filename":"MTP/mtp-gemma-4-31B-it-Q4_0.gguf","sha256":"3a5e99fd8d0b23afb1fccd1ee0c9ebd1f571d00399c2dae2292d217feeec0f6b","sizeBytes":279955968}},"mlx":{"huggingfaceRepo":"mlx-community/unsloth-gemma-4-31B-it-qat-oQ4","revision":"d809645df8db9531a57e76a2a55939435ed9a7ce","files":[{"name":"chat_template.jinja","sha256":"94899c0f917d93f6fe81c95744d1e8ddab2d21d39228d2e4aec1fb2a25bff413","sizeBytes":16934},{"name":"config.json","sha256":"a89544f9bcfbb93e5a989a30743e88c3f1cb03ee07143bebf15a5913607044e7","sizeBytes":20737},{"name":"generation_config.json","sha256":"b69207f9be617e982d13cc273cce6fd88c98dda99a4bdc5e2d52ffe0a0d9f0a9","sizeBytes":203},{"name":"model-00001-of-00004.safetensors","sha256":"c5ad363542fddc24dc3c7fc97e5cb27b18409093ecd36e11aa64c3a84aa461da","sizeBytes":5006425192},{"name":"model-00002-of-00004.safetensors","sha256":"41798b01d27526f1a427c9a8430483ecea94c77307b3197f4ce7bdb9c5e034f0","sizeBytes":5006814115},{"name":"model-00003-of-00004.safetensors","sha256":"0e9fa1b2debe2be22591643fe101b3c5c903c33f4a47b0e16a6039a429e71d88","sizeBytes":5004752752},{"name":"model-00004-of-00004.safetensors","sha256":"b7a0e273e2bbdab4aefbc3d02eb17df95f85fe40b3abdcfe955a1901954bbd55","sizeBytes":3982374263},{"name":"model.safetensors.index.json","sha256":"6c8289b38bc5e63e009552d3b855115ee340a6ee7e6ecc095fa7ac895f6c6951","sizeBytes":197310},{"name":"processor_config.json","sha256":"32bdf45d2ad4cc29a0822ddd157a182de76644f0419a6228d151495256e9813c","sizeBytes":1689},{"name":"tokenizer.json","sha256":"cc8d3a0ce36466ccc1278bf987df5f71db1719b9ca6b4118264f45cb627bfe0f","sizeBytes":32169626},{"name":"tokenizer_config.json","sha256":"a1bab8c81ed15fa6ce912ec993c66cb49392e0487fb1ea5f5f11ea3618683627","sizeBytes":2742}],"approxSizeBytes":19032775563,"quantization":"oQ4","chatTemplateOverride":"{#\n Template: Google Gemma 4 Canonical Chat Template\n Author: Google Gemma Engineering Team\n Published: 2026-07-09\n Context: Fixed tool-calling loops, turn closures, and thinking content-ordering.\n#}\n{%- macro format_parameters(properties, required, filter_keys=false) -%}\n {%- set standard_keys = ['description', 'type', 'properties', 'required', 'nullable'] -%}\n {%- set ns = namespace(found_first=false) -%}\n {%- for key, value in properties | dictsort -%}\n {%- set add_comma = false -%}\n {%- if not filter_keys or key not in standard_keys -%}\n {%- if ns.found_first %},{% endif -%}\n {%- set ns.found_first = true -%}\n {{ key }}:{\n {%- if value['description'] -%}\n description:<|\"|>{{ value['description'] }}<|\"|>\n {%- set add_comma = true -%}\n {%- endif -%}\n {%- if value['type'] | upper == 'STRING' -%}\n {%- if value['enum'] -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n enum:{{ format_argument(value['enum']) }}\n {%- endif -%}\n {%- elif value['type'] | upper == 'ARRAY' -%}\n {%- if value['items'] is mapping and value['items'] -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n items:{\n {%- set ns_items = namespace(found_first=false) -%}\n {%- for item_key, item_value in value['items'] | dictsort -%}\n {%- if item_value is not none -%}\n {%- if ns_items.found_first %},{% endif -%}\n {%- set ns_items.found_first = true -%}\n {%- if item_key == 'properties' -%}\n properties:{\n {%- if item_value is mapping -%}\n {{- format_parameters(item_value, value['items']['required'] | default([])) -}}\n {%- endif -%}\n }\n {%- elif item_key == 'required' -%}\n required:[\n {%- for req_item in item_value -%}\n <|\"|>{{- req_item -}}<|\"|>\n {%- if not loop.last %},{% endif -%}\n {%- endfor -%}\n ]\n {%- elif item_key == 'type' -%}\n {%- if item_value is string -%}\n type:{{ format_argument(item_value | upper) }}\n {%- else -%}\n type:{{ format_argument(item_value | map('upper') | list) }}\n {%- endif -%}\n {%- else -%}\n {{ item_key }}:{{ format_argument(item_value) }}\n {%- endif -%}\n {%- endif -%}\n {%- endfor -%}\n }\n {%- endif -%}\n {%- endif -%}\n {%- if value['nullable'] %}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n nullable:true\n {%- endif -%}\n {%- if value['type'] | upper == 'OBJECT' -%}\n {%- if value['properties'] is defined and value['properties'] is mapping -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n properties:{\n {{- format_parameters(value['properties'], value['required'] | default([])) -}}\n }\n {%- elif value is mapping -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n properties:{\n {{- format_parameters(value, value['required'] | default([]), filter_keys=true) -}}\n }\n {%- endif -%}\n {%- if value['required'] -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n required:[\n {%- for item in value['required'] | default([]) -%}\n <|\"|>{{- item -}}<|\"|>\n {%- if not loop.last %},{% endif -%}\n {%- endfor -%}\n ]\n {%- endif -%}\n {%- endif -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n type:<|\"|>{{ value['type'] | upper }}<|\"|>}\n {%- endif -%}\n {%- endfor -%}\n{%- endmacro -%}\n{%- macro format_function_declaration(tool_data) -%}\n declaration:{{- tool_data['function']['name'] -}}{description:<|\"|>{{- tool_data['function']['description'] -}}<|\"|>\n {%- set params = tool_data['function']['parameters'] -%}\n {%- if params -%}\n ,parameters:{\n {%- if params['properties'] -%}\n properties:{ {{- format_parameters(params['properties'], params['required']) -}} },\n {%- endif -%}\n {%- if params['required'] -%}\n required:[\n {%- for item in params['required'] -%}\n <|\"|>{{- item -}}<|\"|>\n {{- ',' if not loop.last -}}\n {%- endfor -%}\n ],\n {%- endif -%}\n {%- if params['type'] -%}\n type:<|\"|>{{- params['type'] | upper -}}<|\"|>}\n {%- endif -%}\n {%- endif -%}\n {%- if 'response' in tool_data['function'] -%}\n {%- set response_declaration = tool_data['function']['response'] -%}\n ,response:{\n {%- if response_declaration['description'] -%}\n description:<|\"|>{{- response_declaration['description'] -}}<|\"|>,\n {%- endif -%}\n {%- if response_declaration['type'] | upper == 'OBJECT' -%}\n type:<|\"|>{{- response_declaration['type'] | upper -}}<|\"|>}\n {%- endif -%}\n {%- endif -%}\n }\n{%- endmacro -%}\n{%- macro format_argument(argument, escape_keys=True) -%}\n {%- if argument is none -%}\n {{- 'null' -}}\n {%- elif argument is string -%}\n {{- '<|\"|>' + argument + '<|\"|>' -}}\n {%- elif argument is boolean -%}\n {{- 'true' if argument else 'false' -}}\n {%- elif argument is mapping -%}\n {{- '{' -}}\n {%- set ns = namespace(found_first=false) -%}\n {%- for key, value in argument | dictsort -%}\n {%- if ns.found_first %},{% endif -%}\n {%- set ns.found_first = true -%}\n {%- if escape_keys -%}\n {{- '<|\"|>' + key + '<|\"|>' -}}\n {%- else -%}\n {{- key -}}\n {%- endif -%}\n :{{- format_argument(value, escape_keys=escape_keys) -}}\n {%- endfor -%}\n {{- '}' -}}\n {%- elif argument is sequence -%}\n {{- '[' -}}\n {%- for item in argument -%}\n {{- format_argument(item, escape_keys=escape_keys) -}}\n {%- if not loop.last %},{% endif -%}\n {%- endfor -%}\n {{- ']' -}}\n {%- else -%}\n {{- argument -}}\n {%- endif -%}\n{%- endmacro -%}\n{%- macro strip_thinking(text) -%}\n {%- set ns = namespace(result='') -%}\n {%- for part in text.split('<channel|>') -%}\n {%- if '<|channel>' in part -%}\n {%- set ns.result = ns.result + part.split('<|channel>')[0] -%}\n {%- else -%}\n {%- set ns.result = ns.result + part -%}\n {%- endif -%}\n {%- endfor -%}\n {{- ns.result | trim -}}\n{%- endmacro -%}\n\n{%- macro format_tool_response_block(tool_name, response) -%}\n {{- '<|tool_response>' -}}\n {%- if response is mapping -%}\n {{- 'response:' + tool_name + '{' -}}\n {%- for key, value in response | dictsort -%}\n {{- key -}}:{{- format_argument(value, escape_keys=False) -}}\n {%- if not loop.last %},{% endif -%}\n {%- endfor -%}\n {{- '}' -}}\n {%- else -%}\n {{- 'response:' + tool_name + '{value:' + format_argument(response, escape_keys=False) + '}' -}}\n {%- endif -%}\n {{- '<tool_response|>' -}}\n{%- endmacro -%}\n\n{#- ===== SETUP ===== -#}\n{%- set ns = namespace(prev_message_type=None, prev_non_tool_role=None) -%}\n{%- set loop_messages = messages -%}\n{%- set enable_thinking = enable_thinking | default(false) -%}\n{%- set preserve_thinking = preserve_thinking | default(false) -%}\n{{- bos_token -}}\n{#- Handle System/Tool Definitions Block -#}\n{%- if enable_thinking or tools or (messages and messages[0]['role'] in ['system', 'developer']) -%}\n {{- '<|turn>system\\n' -}}\n {#- Inject Thinking token at the very top of the FIRST system turn -#}\n {%- if enable_thinking -%}\n {{- '<|think|>\\n' -}}\n {%- set ns.prev_message_type = 'think' -%}\n {%- endif -%}\n {%- if messages and messages[0]['role'] in ['system', 'developer'] -%}\n {%- if messages[0]['content'] is string -%}\n {{- messages[0]['content'] | trim -}}\n {%- elif messages[0]['content'] is sequence -%}\n {%- for item in messages[0]['content'] -%}\n {{- item['text'] | trim + ' '-}}\n {%- endfor -%}\n {%- endif -%}\n {%- set loop_messages = messages[1:] -%}\n {%- endif -%}\n {%- if tools -%}\n {%- for tool in tools %}\n {{- '<|tool>' -}}\n {{- format_function_declaration(tool) | trim -}}\n {{- '<tool|>' -}}\n {%- endfor %}\n {%- set ns.prev_message_type = 'tool' -%}\n {%- endif -%}\n {{- '<turn|>\\n' -}}\n{%- endif %}\n\n{#- Pre-scan: find last user message index for reasoning guard -#}\n{%- set ns_turn = namespace(last_user_idx=-1) -%}\n{%- for i in range(loop_messages | length) -%}\n {%- if loop_messages[i]['role'] == 'user' -%}\n {%- set ns_turn.last_user_idx = i -%}\n {%- endif -%}\n{%- endfor -%}\n\n{#- Loop through messages -#}\n{%- for message in loop_messages -%}\n {%- if message['role'] != 'tool' -%}\n {%- set ns.prev_message_type = None -%}\n {%- set role = 'model' if message['role'] == 'assistant' else message['role'] -%}\n {#- Detect continuation using tracked state — O(1) instead of O(n) backward scan -#}\n {%- set continue_same_model_turn = (role == 'model' and ns.prev_non_tool_role == 'assistant') -%}\n {%- if not continue_same_model_turn -%}\n {{- '<|turn>' + role + '\\n' }}\n\n {%- endif -%}\n\n {#- Render reasoning/reasoning_content as thinking channel -#}\n {%- set thinking_text = message.get('reasoning') or message.get('reasoning_content') -%}\n {%- set thinking_gate = (loop.index0 > ns_turn.last_user_idx) or (preserve_thinking and message.get('tool_calls')) -%}\n {%- if thinking_text and thinking_gate -%}\n {{- '<|channel>thought\\n' + thinking_text + '\\n<channel|>' -}}\n {%- endif -%}\n\n {%- if message.get('tool_calls') -%}\n {%- for tool_call in message.get('tool_calls') -%}\n {%- set function = tool_call['function'] -%}\n {{- '<|tool_call>call:' + function['name'] + '{' -}}\n {%- if function['arguments'] is mapping -%}\n {%- set ns_args = namespace(found_first=false) -%}\n {%- for key, value in function['arguments'] | dictsort -%}\n {%- if ns_args.found_first %},{% endif -%}\n {%- set ns_args.found_first = true -%}\n {{- key -}}:{{- format_argument(value, escape_keys=False) -}}\n {%- endfor -%}\n {%- elif function['arguments'] is none -%}\n {%- else -%}\n {{- raise_exception(\n \"chat_template: tool_calls[].function.arguments must be a \"\n \"JSON object (mapping), not a string. Deserialize arguments \"\n \"before passing to the template.\"\n ) -}}\n {%- endif -%}\n {{- '}<tool_call|>' -}}\n {%- endfor -%}\n {%- set ns.prev_message_type = 'tool_call' -%}\n {%- endif -%}\n\n {%- set ns_tr_out = namespace(flag=false) -%}\n {%- if message.get('tool_responses') -%}\n {#- Legacy: tool_responses embedded on the assistant message (Google/Gemma native) -#}\n {%- for tool_response in message.get('tool_responses') -%}\n {{- format_tool_response_block(tool_response['name'] | default('unknown', true), tool_response['response']) -}}\n {%- set ns_tr_out.flag = true -%}\n {%- set ns.prev_message_type = 'tool_response' -%}\n {%- endfor -%}\n {%- elif message.get('tool_calls') -%}\n {#- OpenAI Chat Completions: forward-scan consecutive role:tool messages -#}\n {%- set ns_tool_scan = namespace(stopped=false) -%}\n {%- for k in range(loop.index0 + 1, loop_messages | length) -%}\n {%- if ns_tool_scan.stopped -%}\n {%- elif loop_messages[k]['role'] != 'tool' -%}\n {%- set ns_tool_scan.stopped = true -%}\n {%- else -%}\n {%- set follow = loop_messages[k] -%}\n {#- Resolve tool_call_id to function name -#}\n {%- set ns_tname = namespace(name=follow.get('name') or 'unknown') -%}\n {%- for tc in message.get('tool_calls') -%}\n {%- if tc.get('id') == follow.get('tool_call_id') -%}\n {%- set ns_tname.name = tc['function']['name'] -%}\n {%- endif -%}\n {%- endfor -%}\n {#- Handle content as string or content-parts array -#}\n {%- set tool_body = follow.get('content') -%}\n {%- if tool_body is string -%}\n {{- format_tool_response_block(ns_tname.name, tool_body) -}}\n {%- elif tool_body is sequence and tool_body is not string -%}\n {%- set ns_txt = namespace(s='') -%}\n {%- for part in tool_body -%}\n {%- if part.get('type') == 'text' -%}\n {%- set ns_txt.s = ns_txt.s + (part.get('text') | default('')) -%}\n {%- endif -%}\n {%- endfor -%}\n {{- format_tool_response_block(ns_tname.name, ns_txt.s) -}}\n {%- for part in tool_body -%}\n {%- if part.get('type') in ['image', 'image_url'] -%}\n {{- '<|image|>' -}}\n {%- elif part.get('type') in ['audio', 'input_audio'] -%}\n {{- '<|audio|>' -}}\n {%- elif part.get('type') == 'video' -%}\n {{- '<|video|>' -}}\n {%- endif -%}\n {%- endfor -%}\n {%- else -%}\n {{- format_tool_response_block(ns_tname.name, tool_body) -}}\n {%- endif -%}\n {%- set ns_tr_out.flag = true -%}\n {%- set ns.prev_message_type = 'tool_response' -%}\n {%- endif -%}\n {%- endfor -%}\n {%- endif -%}\n\n {%- set captured_content -%}\n {%- if message.get('content') is string -%}\n {%- if role == 'model' -%}\n {{- strip_thinking(message['content']) -}}\n {%- else -%}\n {{- message['content'] | trim -}}\n {%- endif -%}\n {%- elif message.get('content') is sequence -%}\n {%- for item in message['content'] -%}\n {%- if item.get('type') == 'text' -%}\n {%- if role == 'model' -%}\n {{- strip_thinking(item['text']) -}}\n {%- else -%}\n {{- item['text'] | trim -}}\n {%- endif -%}\n {%- elif item.get('type') in ['image', 'image_url'] -%}\n {{- '<|image|>' -}}\n {%- elif item.get('type') in ['audio', 'input_audio'] -%}\n {{- '<|audio|>' -}}\n {%- elif item.get('type') == 'video' -%}\n {{- '<|video|>' -}}\n {%- endif -%}\n {%- endfor -%}\n {%- endif -%}\n {%- endset -%}\n\n {{- captured_content -}}\n {%- set has_content = captured_content | trim | length > 0 -%}\n\n {#- Forward-scan: find next non-tool message role for continuation detection -#}\n {%- set next_nt = namespace(role=None, found=false) -%}\n {%- for j in range(loop.index0 + 1, loop_messages | length) -%}\n {%- if not next_nt.found -%}\n {%- if loop_messages[j]['role'] != 'tool' -%}\n {%- set next_nt.role = loop_messages[j]['role'] -%}\n {%- set next_nt.found = true -%}\n {%- endif -%}\n {%- endif -%}\n {%- endfor -%}\n\n {%- set continues_into_next = (\n role == 'model'\n and next_nt.role == 'assistant'\n and (not message.get('tool_calls') or ns_tr_out.flag)\n ) -%}\n\n {%- if ns.prev_message_type == 'tool_call' and not ns_tr_out.flag -%}\n {{- '<|tool_response>' -}}\n {%- elif continues_into_next -%}\n {%- elif not (ns_tr_out.flag and not has_content and not next_nt.found) -%}\n {{- '<turn|>\\n' -}}\n {%- endif -%}\n\n {#- Track previous non-tool role for next iteration (avoids O(n) backward scan) -#}\n {%- set ns.prev_non_tool_role = message['role'] -%}\n {%- endif -%}\n{%- endfor -%}\n\n{%- if add_generation_prompt -%}\n {%- if ns.prev_message_type != 'tool_response' and ns.prev_message_type != 'tool_call' -%}\n {{- '<|turn>model\\n' -}}\n {%- if not enable_thinking -%}\n {{- '<|channel>thought\\n<channel|>' -}}\n {%- endif -%}\n {%- elif ns.prev_message_type == 'tool_response' and enable_thinking -%}\n {{- '<|channel>thought\\n' -}}\n {%- endif -%}\n{%- endif -%}\n"},"availableVersions":["1.3.0","1.2.2","1.2.1","1.2.0","1.1.1","1.1.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"gemma4-e2b-q4","name":"Gemma 4 (E2B, Q4)","description":"Google's edge-optimized Gemma 4 at ~2B effective parameters. Multimodal (text + image + audio), native tool calling. Quantization-aware-trained 4-bit weights — the safe small-model default for any modern laptop.","tags":["google","multimodal","vision","audio","tools","small","qat"],"maintainer":{"name":"Google","url":"https://huggingface.co/google/gemma-4-E2B-it"},"license":"Apache-2.0","licenseClass":"open","licenseShortName":"Apache 2.0","recoScore":15,"version":"1.3.0","releasedAt":"2026-08-28T00:00:00Z","parameterSize":"2.3B","approxSizeBytes":2620370976,"supportsTools":true,"contextWindow":128000,"upstream":"https://huggingface.co/google/gemma-4-E2B-it","category":"general","style":{"family":"gemma","reasoningFormat":"channel","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-channel-tags","prompt.private-reasoning-guidance","prompt.tool-cookbook-full","fabrication.detect-past-tense-no-tools","fabrication.detect-claim-without-tool","turn.auto-acknowledge-tool-errors","mcp.compact-tool-schemas","mcp.relax-required-fields","mcp.default-missing-fields",{"id":"turn.continuation-budget","config":{"count":4}},"turn.preamble-folding","turn.ramble-detection","parse.gemma-special-token","prompt.prefer-writefile-edits","prompt.derive-by-execution","tools.mlx-grammar"],"tuning":{"sampling":{"temperature":1,"topP":0.95,"topK":64,"repetitionPenalty":1.1,"repetitionContext":20},"reasoning":{"thinkingBudget":96},"engine":{"llamaCpp":{"spec":{"mtp":true,"nMax":4}}},"profiles":{"thinking-general":{"sampling":{"temperature":0.8,"topP":0.95,"topK":64,"repetitionPenalty":1.1,"repetitionContext":64,"dry":{"multiplier":0.8,"base":1.75,"allowedLength":2}}},"thinking-coding":{"sampling":{"temperature":0.6,"topP":0.9,"topK":40,"repetitionPenalty":1.05,"repetitionContext":64,"dry":{"multiplier":0.8,"base":1.75,"allowedLength":2}}},"thinking-precise":{"sampling":{"temperature":0.3,"topP":0.9,"topK":20,"seed":0,"repetitionPenalty":1.05,"repetitionContext":64,"dry":{"multiplier":0.8,"base":1.75,"allowedLength":2}}},"instruct":{"sampling":{"temperature":0.7,"topP":0.95,"topK":64,"repetitionPenalty":1.1,"repetitionContext":64,"dry":{"multiplier":0.8,"base":1.75,"allowedLength":2}}},"creative":{"sampling":{"temperature":1.1,"topP":0.95,"topK":64,"repetitionPenalty":1,"repetitionContext":20}}}},"ollama":{"tag":"gemma4:e2b"},"llamaCpp":{"huggingfaceRepo":"unsloth/gemma-4-E2B-it-qat-GGUF","revision":"66a399f68ddd113b06dff02fca9523e55465d11d","filename":"gemma-4-E2B-it-qat-UD-Q4_K_XL.gguf","sha256":"e531007218dfab990486a5de7676a6932d6ea8dea233d1f698d7c21cf8a16889","approxSizeBytes":2620370976,"quantization":"UD-Q4_K_XL","draftModel":{"filename":"MTP/mtp-gemma-4-E2B-it-Q4_0.gguf","sha256":"586f2460b909008640981ec34060aa864e03c144fbabfb3173c4335087e4aae0","sizeBytes":59235648}},"mlx":{"huggingfaceRepo":"mlx-community/gemma-4-E2B-it-qat-4bit","revision":"42f62737af7a9fd8c1d55d79666c1a217be4e2e2","files":[{"name":"chat_template.jinja","sha256":"33204f1acb5bd0002713e16a593847f24ceeafe711ed88bda2a352dc996a3373","sizeBytes":16804},{"name":"config.json","sha256":"e996bc6f3887d18d1176438680b17c24e988576d5c15a43ccf3a482a737a8f7e","sizeBytes":31198},{"name":"generation_config.json","sha256":"b69207f9be617e982d13cc273cce6fd88c98dda99a4bdc5e2d52ffe0a0d9f0a9","sizeBytes":203},{"name":"model.safetensors","sha256":"d52e64b9cb669c65da88c1597fe12ab90e63ab9f79cc1b053eb1fa8bb06c493f","sizeBytes":4329240325},{"name":"model.safetensors.index.json","sha256":"8ee3112362c6dfa13a26df2da4592c0a9aa541013918469accd86d7e8a54b11a","sizeBytes":218323},{"name":"processor_config.json","sha256":"1bd0d00776284f369c1eff5fb631e865dfcdca861e0b7d60dbef27fcf37436a8","sizeBytes":902},{"name":"tokenizer.json","sha256":"cc8d3a0ce36466ccc1278bf987df5f71db1719b9ca6b4118264f45cb627bfe0f","sizeBytes":32169626},{"name":"tokenizer_config.json","sha256":"080d9e1aff284e2f6043889cd05367966f7c7b80e025fbc0b06745e218158656","sizeBytes":2740}],"approxSizeBytes":4361680121,"quantization":"4bit","chatTemplateOverride":"{#\n Template: Google Gemma 4 Canonical Chat Template\n Author: Google Gemma Engineering Team\n Published: 2026-07-09\n Context: Fixed tool-calling loops, turn closures, and thinking content-ordering.\n#}\n{%- macro format_parameters(properties, required, filter_keys=false) -%}\n {%- set standard_keys = ['description', 'type', 'properties', 'required', 'nullable'] -%}\n {%- set ns = namespace(found_first=false) -%}\n {%- for key, value in properties | dictsort -%}\n {%- set add_comma = false -%}\n {%- if not filter_keys or key not in standard_keys -%}\n {%- if ns.found_first %},{% endif -%}\n {%- set ns.found_first = true -%}\n {{ key }}:{\n {%- if value['description'] -%}\n description:<|\"|>{{ value['description'] }}<|\"|>\n {%- set add_comma = true -%}\n {%- endif -%}\n {%- if value['type'] | upper == 'STRING' -%}\n {%- if value['enum'] -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n enum:{{ format_argument(value['enum']) }}\n {%- endif -%}\n {%- elif value['type'] | upper == 'ARRAY' -%}\n {%- if value['items'] is mapping and value['items'] -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n items:{\n {%- set ns_items = namespace(found_first=false) -%}\n {%- for item_key, item_value in value['items'] | dictsort -%}\n {%- if item_value is not none -%}\n {%- if ns_items.found_first %},{% endif -%}\n {%- set ns_items.found_first = true -%}\n {%- if item_key == 'properties' -%}\n properties:{\n {%- if item_value is mapping -%}\n {{- format_parameters(item_value, value['items']['required'] | default([])) -}}\n {%- endif -%}\n }\n {%- elif item_key == 'required' -%}\n required:[\n {%- for req_item in item_value -%}\n <|\"|>{{- req_item -}}<|\"|>\n {%- if not loop.last %},{% endif -%}\n {%- endfor -%}\n ]\n {%- elif item_key == 'type' -%}\n {%- if item_value is string -%}\n type:{{ format_argument(item_value | upper) }}\n {%- else -%}\n type:{{ format_argument(item_value | map('upper') | list) }}\n {%- endif -%}\n {%- else -%}\n {{ item_key }}:{{ format_argument(item_value) }}\n {%- endif -%}\n {%- endif -%}\n {%- endfor -%}\n }\n {%- endif -%}\n {%- endif -%}\n {%- if value['nullable'] %}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n nullable:true\n {%- endif -%}\n {%- if value['type'] | upper == 'OBJECT' -%}\n {%- if value['properties'] is defined and value['properties'] is mapping -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n properties:{\n {{- format_parameters(value['properties'], value['required'] | default([])) -}}\n }\n {%- elif value is mapping -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n properties:{\n {{- format_parameters(value, value['required'] | default([]), filter_keys=true) -}}\n }\n {%- endif -%}\n {%- if value['required'] -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n required:[\n {%- for item in value['required'] | default([]) -%}\n <|\"|>{{- item -}}<|\"|>\n {%- if not loop.last %},{% endif -%}\n {%- endfor -%}\n ]\n {%- endif -%}\n {%- endif -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n type:<|\"|>{{ value['type'] | upper }}<|\"|>}\n {%- endif -%}\n {%- endfor -%}\n{%- endmacro -%}\n{%- macro format_function_declaration(tool_data) -%}\n declaration:{{- tool_data['function']['name'] -}}{description:<|\"|>{{- tool_data['function']['description'] -}}<|\"|>\n {%- set params = tool_data['function']['parameters'] -%}\n {%- if params -%}\n ,parameters:{\n {%- if params['properties'] -%}\n properties:{ {{- format_parameters(params['properties'], params['required']) -}} },\n {%- endif -%}\n {%- if params['required'] -%}\n required:[\n {%- for item in params['required'] -%}\n <|\"|>{{- item -}}<|\"|>\n {{- ',' if not loop.last -}}\n {%- endfor -%}\n ],\n {%- endif -%}\n {%- if params['type'] -%}\n type:<|\"|>{{- params['type'] | upper -}}<|\"|>}\n {%- endif -%}\n {%- endif -%}\n {%- if 'response' in tool_data['function'] -%}\n {%- set response_declaration = tool_data['function']['response'] -%}\n ,response:{\n {%- if response_declaration['description'] -%}\n description:<|\"|>{{- response_declaration['description'] -}}<|\"|>,\n {%- endif -%}\n {%- if response_declaration['type'] | upper == 'OBJECT' -%}\n type:<|\"|>{{- response_declaration['type'] | upper -}}<|\"|>}\n {%- endif -%}\n {%- endif -%}\n }\n{%- endmacro -%}\n{%- macro format_argument(argument, escape_keys=True) -%}\n {%- if argument is none -%}\n {{- 'null' -}}\n {%- elif argument is string -%}\n {{- '<|\"|>' + argument + '<|\"|>' -}}\n {%- elif argument is boolean -%}\n {{- 'true' if argument else 'false' -}}\n {%- elif argument is mapping -%}\n {{- '{' -}}\n {%- set ns = namespace(found_first=false) -%}\n {%- for key, value in argument | dictsort -%}\n {%- if ns.found_first %},{% endif -%}\n {%- set ns.found_first = true -%}\n {%- if escape_keys -%}\n {{- '<|\"|>' + key + '<|\"|>' -}}\n {%- else -%}\n {{- key -}}\n {%- endif -%}\n :{{- format_argument(value, escape_keys=escape_keys) -}}\n {%- endfor -%}\n {{- '}' -}}\n {%- elif argument is sequence -%}\n {{- '[' -}}\n {%- for item in argument -%}\n {{- format_argument(item, escape_keys=escape_keys) -}}\n {%- if not loop.last %},{% endif -%}\n {%- endfor -%}\n {{- ']' -}}\n {%- else -%}\n {{- argument -}}\n {%- endif -%}\n{%- endmacro -%}\n{%- macro strip_thinking(text) -%}\n {%- set ns = namespace(result='') -%}\n {%- for part in text.split('<channel|>') -%}\n {%- if '<|channel>' in part -%}\n {%- set ns.result = ns.result + part.split('<|channel>')[0] -%}\n {%- else -%}\n {%- set ns.result = ns.result + part -%}\n {%- endif -%}\n {%- endfor -%}\n {{- ns.result | trim -}}\n{%- endmacro -%}\n\n{%- macro format_tool_response_block(tool_name, response) -%}\n {{- '<|tool_response>' -}}\n {%- if response is mapping -%}\n {{- 'response:' + tool_name + '{' -}}\n {%- for key, value in response | dictsort -%}\n {{- key -}}:{{- format_argument(value, escape_keys=False) -}}\n {%- if not loop.last %},{% endif -%}\n {%- endfor -%}\n {{- '}' -}}\n {%- else -%}\n {{- 'response:' + tool_name + '{value:' + format_argument(response, escape_keys=False) + '}' -}}\n {%- endif -%}\n {{- '<tool_response|>' -}}\n{%- endmacro -%}\n\n{#- ===== SETUP ===== -#}\n{%- set ns = namespace(prev_message_type=None, prev_non_tool_role=None) -%}\n{%- set loop_messages = messages -%}\n{%- set enable_thinking = enable_thinking | default(false) -%}\n{%- set preserve_thinking = preserve_thinking | default(false) -%}\n{{- bos_token -}}\n{#- Handle System/Tool Definitions Block -#}\n{%- if enable_thinking or tools or (messages and messages[0]['role'] in ['system', 'developer']) -%}\n {{- '<|turn>system\\n' -}}\n {#- Inject Thinking token at the very top of the FIRST system turn -#}\n {%- if enable_thinking -%}\n {{- '<|think|>\\n' -}}\n {%- set ns.prev_message_type = 'think' -%}\n {%- endif -%}\n {%- if messages and messages[0]['role'] in ['system', 'developer'] -%}\n {%- if messages[0]['content'] is string -%}\n {{- messages[0]['content'] | trim -}}\n {%- elif messages[0]['content'] is sequence -%}\n {%- for item in messages[0]['content'] -%}\n {{- item['text'] | trim + ' '-}}\n {%- endfor -%}\n {%- endif -%}\n {%- set loop_messages = messages[1:] -%}\n {%- endif -%}\n {%- if tools -%}\n {%- for tool in tools %}\n {{- '<|tool>' -}}\n {{- format_function_declaration(tool) | trim -}}\n {{- '<tool|>' -}}\n {%- endfor %}\n {%- set ns.prev_message_type = 'tool' -%}\n {%- endif -%}\n {{- '<turn|>\\n' -}}\n{%- endif %}\n\n{#- Pre-scan: find last user message index for reasoning guard -#}\n{%- set ns_turn = namespace(last_user_idx=-1) -%}\n{%- for i in range(loop_messages | length) -%}\n {%- if loop_messages[i]['role'] == 'user' -%}\n {%- set ns_turn.last_user_idx = i -%}\n {%- endif -%}\n{%- endfor -%}\n\n{#- Loop through messages -#}\n{%- for message in loop_messages -%}\n {%- if message['role'] != 'tool' -%}\n {%- set ns.prev_message_type = None -%}\n {%- set role = 'model' if message['role'] == 'assistant' else message['role'] -%}\n {#- Detect continuation using tracked state — O(1) instead of O(n) backward scan -#}\n {%- set continue_same_model_turn = (role == 'model' and ns.prev_non_tool_role == 'assistant') -%}\n {%- if not continue_same_model_turn -%}\n {{- '<|turn>' + role + '\\n' }}\n {%- endif -%}\n\n {#- Render reasoning/reasoning_content as thinking channel -#}\n {%- set thinking_text = message.get('reasoning') or message.get('reasoning_content') -%}\n {%- set thinking_gate = (loop.index0 > ns_turn.last_user_idx) or (preserve_thinking and message.get('tool_calls')) -%}\n {%- if thinking_text and thinking_gate -%}\n {{- '<|channel>thought\\n' + thinking_text + '\\n<channel|>' -}}\n {%- endif -%}\n\n {%- if message.get('tool_calls') -%}\n {%- for tool_call in message.get('tool_calls') -%}\n {%- set function = tool_call['function'] -%}\n {{- '<|tool_call>call:' + function['name'] + '{' -}}\n {%- if function['arguments'] is mapping -%}\n {%- set ns_args = namespace(found_first=false) -%}\n {%- for key, value in function['arguments'] | dictsort -%}\n {%- if ns_args.found_first %},{% endif -%}\n {%- set ns_args.found_first = true -%}\n {{- key -}}:{{- format_argument(value, escape_keys=False) -}}\n {%- endfor -%}\n {%- elif function['arguments'] is none -%}\n {%- else -%}\n {{- raise_exception(\n \"chat_template: tool_calls[].function.arguments must be a \"\n \"JSON object (mapping), not a string. Deserialize arguments \"\n \"before passing to the template.\"\n ) -}}\n {%- endif -%}\n {{- '}<tool_call|>' -}}\n {%- endfor -%}\n {%- set ns.prev_message_type = 'tool_call' -%}\n {%- endif -%}\n\n {%- set ns_tr_out = namespace(flag=false) -%}\n {%- if message.get('tool_responses') -%}\n {#- Legacy: tool_responses embedded on the assistant message (Google/Gemma native) -#}\n {%- for tool_response in message.get('tool_responses') -%}\n {{- format_tool_response_block(tool_response['name'] | default('unknown', true), tool_response['response']) -}}\n {%- set ns_tr_out.flag = true -%}\n {%- set ns.prev_message_type = 'tool_response' -%}\n {%- endfor -%}\n {%- elif message.get('tool_calls') -%}\n {#- OpenAI Chat Completions: forward-scan consecutive role:tool messages -#}\n {%- set ns_tool_scan = namespace(stopped=false) -%}\n {%- for k in range(loop.index0 + 1, loop_messages | length) -%}\n {%- if ns_tool_scan.stopped -%}\n {%- elif loop_messages[k]['role'] != 'tool' -%}\n {%- set ns_tool_scan.stopped = true -%}\n {%- else -%}\n {%- set follow = loop_messages[k] -%}\n {#- Resolve tool_call_id to function name -#}\n {%- set ns_tname = namespace(name=follow.get('name') or 'unknown') -%}\n {%- for tc in message.get('tool_calls') -%}\n {%- if tc.get('id') == follow.get('tool_call_id') -%}\n {%- set ns_tname.name = tc['function']['name'] -%}\n {%- endif -%}\n {%- endfor -%}\n {#- Handle content as string or content-parts array -#}\n {%- set tool_body = follow.get('content') -%}\n {%- if tool_body is string -%}\n {{- format_tool_response_block(ns_tname.name, tool_body) -}}\n {%- elif tool_body is sequence and tool_body is not string -%}\n {%- set ns_txt = namespace(s='') -%}\n {%- for part in tool_body -%}\n {%- if part.get('type') == 'text' -%}\n {%- set ns_txt.s = ns_txt.s + (part.get('text') | default('')) -%}\n {%- endif -%}\n {%- endfor -%}\n {{- format_tool_response_block(ns_tname.name, ns_txt.s) -}}\n {%- for part in tool_body -%}\n {%- if part.get('type') in ['image', 'image_url'] -%}\n {{- '<|image|>' -}}\n {%- elif part.get('type') in ['audio', 'input_audio'] -%}\n {{- '<|audio|>' -}}\n {%- elif part.get('type') == 'video' -%}\n {{- '<|video|>' -}}\n {%- endif -%}\n {%- endfor -%}\n {%- else -%}\n {{- format_tool_response_block(ns_tname.name, tool_body) -}}\n {%- endif -%}\n {%- set ns_tr_out.flag = true -%}\n {%- set ns.prev_message_type = 'tool_response' -%}\n {%- endif -%}\n {%- endfor -%}\n {%- endif -%}\n\n {%- set captured_content -%}\n {%- if message.get('content') is string -%}\n {%- if role == 'model' -%}\n {{- strip_thinking(message['content']) -}}\n {%- else -%}\n {{- message['content'] | trim -}}\n {%- endif -%}\n {%- elif message.get('content') is sequence -%}\n {%- for item in message['content'] -%}\n {%- if item.get('type') == 'text' -%}\n {%- if role == 'model' -%}\n {{- strip_thinking(item['text']) -}}\n {%- else -%}\n {{- item['text'] | trim -}}\n {%- endif -%}\n {%- elif item.get('type') in ['image', 'image_url'] -%}\n {{- '<|image|>' -}}\n {%- elif item.get('type') in ['audio', 'input_audio'] -%}\n {{- '<|audio|>' -}}\n {%- elif item.get('type') == 'video' -%}\n {{- '<|video|>' -}}\n {%- endif -%}\n {%- endfor -%}\n {%- endif -%}\n {%- endset -%}\n\n {{- captured_content -}}\n {%- set has_content = captured_content | trim | length > 0 -%}\n\n {#- Forward-scan: find next non-tool message role for continuation detection -#}\n {%- set next_nt = namespace(role=None, found=false) -%}\n {%- for j in range(loop.index0 + 1, loop_messages | length) -%}\n {%- if not next_nt.found -%}\n {%- if loop_messages[j]['role'] != 'tool' -%}\n {%- set next_nt.role = loop_messages[j]['role'] -%}\n {%- set next_nt.found = true -%}\n {%- endif -%}\n {%- endif -%}\n {%- endfor -%}\n\n {%- set continues_into_next = (\n role == 'model'\n and next_nt.role == 'assistant'\n and (not message.get('tool_calls') or ns_tr_out.flag)\n ) -%}\n\n {%- if ns.prev_message_type == 'tool_call' and not ns_tr_out.flag -%}\n {{- '<|tool_response>' -}}\n {%- elif continues_into_next -%}\n {%- elif not (ns_tr_out.flag and not has_content and not next_nt.found) -%}\n {{- '<turn|>\\n' -}}\n {%- endif -%}\n\n {#- Track previous non-tool role for next iteration (avoids O(n) backward scan) -#}\n {%- set ns.prev_non_tool_role = message['role'] -%}\n {%- endif -%}\n{%- endfor -%}\n\n{%- if add_generation_prompt -%}\n {%- if ns.prev_message_type != 'tool_response' and ns.prev_message_type != 'tool_call' -%}\n {{- '<|turn>model\\n' -}}\n {%- elif ns.prev_message_type == 'tool_response' and enable_thinking -%}\n {{- '<|channel>thought\\n' -}}\n {%- endif -%}\n{%- endif -%}\n"},"availableVersions":["1.3.0","1.2.1","1.2.0","1.1.2","1.1.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"gemma4-e4b-q4","name":"Gemma 4 (E4B, Q4)","description":"Google's edge-optimized Gemma 4 at ~4B effective parameters. Multimodal (text + image + audio), native tool calling. Quantization-aware-trained 4-bit weights — a strong compact default that leaves room to work on a 16GB laptop.","tags":["google","multimodal","vision","audio","tools","qat"],"maintainer":{"name":"Google","url":"https://huggingface.co/google/gemma-4-E4B-it"},"license":"Apache-2.0","licenseClass":"open","licenseShortName":"Apache 2.0","recoScore":15,"version":"1.3.0","releasedAt":"2026-08-28T00:00:00Z","parameterSize":"8B","approxSizeBytes":4215695776,"supportsTools":true,"contextWindow":128000,"upstream":"https://huggingface.co/google/gemma-4-E4B-it","category":"general","style":{"family":"gemma","reasoningFormat":"channel","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-channel-tags","prompt.private-reasoning-guidance","prompt.tool-cookbook-condensed","prompt.meester-build-prelude","fabrication.detect-past-tense-no-tools","fabrication.detect-claim-without-tool","turn.auto-acknowledge-tool-errors","mcp.compact-tool-schemas","mcp.relax-required-fields","mcp.default-missing-fields","turn.preamble-folding","turn.ramble-detection","parse.gemma-special-token","prompt.prefer-writefile-edits","prompt.derive-by-execution","tools.mlx-grammar",{"id":"tools.mlx-template-fix","config":{"template":"{#\n Template: Google Gemma 4 Canonical Chat Template\n Author: Google Gemma Engineering Team\n Published: 2026-07-09\n Context: Fixed tool-calling loops, turn closures, and thinking content-ordering.\n#}\n{%- macro format_parameters(properties, required, filter_keys=false) -%}\n {%- set standard_keys = ['description', 'type', 'properties', 'required', 'nullable'] -%}\n {%- set ns = namespace(found_first=false) -%}\n {%- for key, value in properties | dictsort -%}\n {%- set add_comma = false -%}\n {%- if not filter_keys or key not in standard_keys -%}\n {%- if ns.found_first %},{% endif -%}\n {%- set ns.found_first = true -%}\n {{ key }}:{\n {%- if value['description'] -%}\n description:<|\"|>{{ value['description'] }}<|\"|>\n {%- set add_comma = true -%}\n {%- endif -%}\n {%- if value['type'] | upper == 'STRING' -%}\n {%- if value['enum'] -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n enum:{{ format_argument(value['enum']) }}\n {%- endif -%}\n {%- elif value['type'] | upper == 'ARRAY' -%}\n {%- if value['items'] is mapping and value['items'] -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n items:{\n {%- set ns_items = namespace(found_first=false) -%}\n {%- for item_key, item_value in value['items'] | dictsort -%}\n {%- if item_value is not none -%}\n {%- if ns_items.found_first %},{% endif -%}\n {%- set ns_items.found_first = true -%}\n {%- if item_key == 'properties' -%}\n properties:{\n {%- if item_value is mapping -%}\n {{- format_parameters(item_value, value['items']['required'] | default([])) -}}\n {%- endif -%}\n }\n {%- elif item_key == 'required' -%}\n required:[\n {%- for req_item in item_value -%}\n <|\"|>{{- req_item -}}<|\"|>\n {%- if not loop.last %},{% endif -%}\n {%- endfor -%}\n ]\n {%- elif item_key == 'type' -%}\n {%- if item_value is string -%}\n type:{{ format_argument(item_value | upper) }}\n {%- else -%}\n type:{{ format_argument(item_value | map('upper') | list) }}\n {%- endif -%}\n {%- else -%}\n {{ item_key }}:{{ format_argument(item_value) }}\n {%- endif -%}\n {%- endif -%}\n {%- endfor -%}\n }\n {%- endif -%}\n {%- endif -%}\n {%- if value['nullable'] %}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n nullable:true\n {%- endif -%}\n {%- if value['type'] | upper == 'OBJECT' -%}\n {%- if value['properties'] is defined and value['properties'] is mapping -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n properties:{\n {{- format_parameters(value['properties'], value['required'] | default([])) -}}\n }\n {%- elif value is mapping -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n properties:{\n {{- format_parameters(value, value['required'] | default([]), filter_keys=true) -}}\n }\n {%- endif -%}\n {%- if value['required'] -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n required:[\n {%- for item in value['required'] | default([]) -%}\n <|\"|>{{- item -}}<|\"|>\n {%- if not loop.last %},{% endif -%}\n {%- endfor -%}\n ]\n {%- endif -%}\n {%- endif -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n type:<|\"|>{{ value['type'] | upper }}<|\"|>}\n {%- endif -%}\n {%- endfor -%}\n{%- endmacro -%}\n{%- macro format_function_declaration(tool_data) -%}\n declaration:{{- tool_data['function']['name'] -}}{description:<|\"|>{{- tool_data['function']['description'] -}}<|\"|>\n {%- set params = tool_data['function']['parameters'] -%}\n {%- if params -%}\n ,parameters:{\n {%- if params['properties'] -%}\n properties:{ {{- format_parameters(params['properties'], params['required']) -}} },\n {%- endif -%}\n {%- if params['required'] -%}\n required:[\n {%- for item in params['required'] -%}\n <|\"|>{{- item -}}<|\"|>\n {{- ',' if not loop.last -}}\n {%- endfor -%}\n ],\n {%- endif -%}\n {%- if params['type'] -%}\n type:<|\"|>{{- params['type'] | upper -}}<|\"|>}\n {%- endif -%}\n {%- endif -%}\n {%- if 'response' in tool_data['function'] -%}\n {%- set response_declaration = tool_data['function']['response'] -%}\n ,response:{\n {%- if response_declaration['description'] -%}\n description:<|\"|>{{- response_declaration['description'] -}}<|\"|>,\n {%- endif -%}\n {%- if response_declaration['type'] | upper == 'OBJECT' -%}\n type:<|\"|>{{- response_declaration['type'] | upper -}}<|\"|>}\n {%- endif -%}\n {%- endif -%}\n }\n{%- endmacro -%}\n{%- macro format_argument(argument, escape_keys=True) -%}\n {%- if argument is none -%}\n {{- 'null' -}}\n {%- elif argument is string -%}\n {{- '<|\"|>' + argument + '<|\"|>' -}}\n {%- elif argument is boolean -%}\n {{- 'true' if argument else 'false' -}}\n {%- elif argument is mapping -%}\n {{- '{' -}}\n {%- set ns = namespace(found_first=false) -%}\n {%- for key, value in argument | dictsort -%}\n {%- if ns.found_first %},{% endif -%}\n {%- set ns.found_first = true -%}\n {%- if escape_keys -%}\n {{- '<|\"|>' + key + '<|\"|>' -}}\n {%- else -%}\n {{- key -}}\n {%- endif -%}\n :{{- format_argument(value, escape_keys=escape_keys) -}}\n {%- endfor -%}\n {{- '}' -}}\n {%- elif argument is sequence -%}\n {{- '[' -}}\n {%- for item in argument -%}\n {{- format_argument(item, escape_keys=escape_keys) -}}\n {%- if not loop.last %},{% endif -%}\n {%- endfor -%}\n {{- ']' -}}\n {%- else -%}\n {{- argument -}}\n {%- endif -%}\n{%- endmacro -%}\n{%- macro strip_thinking(text) -%}\n {%- set ns = namespace(result='') -%}\n {%- for part in text.split('<channel|>') -%}\n {%- if '<|channel>' in part -%}\n {%- set ns.result = ns.result + part.split('<|channel>')[0] -%}\n {%- else -%}\n {%- set ns.result = ns.result + part -%}\n {%- endif -%}\n {%- endfor -%}\n {{- ns.result | trim -}}\n{%- endmacro -%}\n\n{%- macro format_tool_response_block(tool_name, response) -%}\n {{- '<|tool_response>' -}}\n {%- if response is mapping -%}\n {{- 'response:' + tool_name + '{' -}}\n {%- for key, value in response | dictsort -%}\n {{- key -}}:{{- format_argument(value, escape_keys=False) -}}\n {%- if not loop.last %},{% endif -%}\n {%- endfor -%}\n {{- '}' -}}\n {%- else -%}\n {{- 'response:' + tool_name + '{value:' + format_argument(response, escape_keys=False) + '}' -}}\n {%- endif -%}\n {{- '<tool_response|>' -}}\n{%- endmacro -%}\n\n{#- ===== SETUP ===== -#}\n{%- set ns = namespace(prev_message_type=None, prev_non_tool_role=None) -%}\n{%- set loop_messages = messages -%}\n{%- set enable_thinking = enable_thinking | default(false) -%}\n{%- set preserve_thinking = preserve_thinking | default(false) -%}\n{{- bos_token -}}\n{#- Handle System/Tool Definitions Block -#}\n{%- if enable_thinking or tools or (messages and messages[0]['role'] in ['system', 'developer']) -%}\n {{- '<|turn>system\\n' -}}\n {#- Inject Thinking token at the very top of the FIRST system turn -#}\n {%- if enable_thinking -%}\n {{- '<|think|>\\n' -}}\n {%- set ns.prev_message_type = 'think' -%}\n {%- endif -%}\n {%- if messages and messages[0]['role'] in ['system', 'developer'] -%}\n {%- if messages[0]['content'] is string -%}\n {{- messages[0]['content'] | trim -}}\n {%- elif messages[0]['content'] is sequence -%}\n {%- for item in messages[0]['content'] -%}\n {{- item['text'] | trim + ' '-}}\n {%- endfor -%}\n {%- endif -%}\n {%- set loop_messages = messages[1:] -%}\n {%- endif -%}\n {%- if tools -%}\n {%- for tool in tools %}\n {{- '<|tool>' -}}\n {{- format_function_declaration(tool) | trim -}}\n {{- '<tool|>' -}}\n {%- endfor %}\n {%- set ns.prev_message_type = 'tool' -%}\n {%- endif -%}\n {{- '<turn|>\\n' -}}\n{%- endif %}\n\n{#- Pre-scan: find last user message index for reasoning guard -#}\n{%- set ns_turn = namespace(last_user_idx=-1) -%}\n{%- for i in range(loop_messages | length) -%}\n {%- if loop_messages[i]['role'] == 'user' -%}\n {%- set ns_turn.last_user_idx = i -%}\n {%- endif -%}\n{%- endfor -%}\n\n{#- Loop through messages -#}\n{%- for message in loop_messages -%}\n {%- if message['role'] != 'tool' -%}\n {%- set ns.prev_message_type = None -%}\n {%- set role = 'model' if message['role'] == 'assistant' else message['role'] -%}\n {#- Detect continuation using tracked state — O(1) instead of O(n) backward scan -#}\n {%- set continue_same_model_turn = (role == 'model' and ns.prev_non_tool_role == 'assistant') -%}\n {%- if not continue_same_model_turn -%}\n {{- '<|turn>' + role + '\\n' }}\n {%- endif -%}\n\n {#- Render reasoning/reasoning_content as thinking channel -#}\n {%- set thinking_text = message.get('reasoning') or message.get('reasoning_content') -%}\n {%- set thinking_gate = (loop.index0 > ns_turn.last_user_idx) or (preserve_thinking and message.get('tool_calls')) -%}\n {%- if thinking_text and thinking_gate -%}\n {{- '<|channel>thought\\n' + thinking_text + '\\n<channel|>' -}}\n {%- endif -%}\n\n {%- if message.get('tool_calls') -%}\n {%- for tool_call in message.get('tool_calls') -%}\n {%- set function = tool_call['function'] -%}\n {{- '<|tool_call>call:' + function['name'] + '{' -}}\n {%- if function['arguments'] is mapping -%}\n {%- set ns_args = namespace(found_first=false) -%}\n {%- for key, value in function['arguments'] | dictsort -%}\n {%- if ns_args.found_first %},{% endif -%}\n {%- set ns_args.found_first = true -%}\n {{- key -}}:{{- format_argument(value, escape_keys=False) -}}\n {%- endfor -%}\n {%- elif function['arguments'] is none -%}\n {%- else -%}\n {{- raise_exception(\n \"chat_template: tool_calls[].function.arguments must be a \"\n \"JSON object (mapping), not a string. Deserialize arguments \"\n \"before passing to the template.\"\n ) -}}\n {%- endif -%}\n {{- '}<tool_call|>' -}}\n {%- endfor -%}\n {%- set ns.prev_message_type = 'tool_call' -%}\n {%- endif -%}\n\n {%- set ns_tr_out = namespace(flag=false) -%}\n {%- if message.get('tool_responses') -%}\n {#- Legacy: tool_responses embedded on the assistant message (Google/Gemma native) -#}\n {%- for tool_response in message.get('tool_responses') -%}\n {{- format_tool_response_block(tool_response['name'] | default('unknown', true), tool_response['response']) -}}\n {%- set ns_tr_out.flag = true -%}\n {%- set ns.prev_message_type = 'tool_response' -%}\n {%- endfor -%}\n {%- elif message.get('tool_calls') -%}\n {#- OpenAI Chat Completions: forward-scan consecutive role:tool messages -#}\n {%- set ns_tool_scan = namespace(stopped=false) -%}\n {%- for k in range(loop.index0 + 1, loop_messages | length) -%}\n {%- if ns_tool_scan.stopped -%}\n {%- elif loop_messages[k]['role'] != 'tool' -%}\n {%- set ns_tool_scan.stopped = true -%}\n {%- else -%}\n {%- set follow = loop_messages[k] -%}\n {#- Resolve tool_call_id to function name -#}\n {%- set ns_tname = namespace(name=follow.get('name') or 'unknown') -%}\n {%- for tc in message.get('tool_calls') -%}\n {%- if tc.get('id') == follow.get('tool_call_id') -%}\n {%- set ns_tname.name = tc['function']['name'] -%}\n {%- endif -%}\n {%- endfor -%}\n {#- Handle content as string or content-parts array -#}\n {%- set tool_body = follow.get('content') -%}\n {%- if tool_body is string -%}\n {{- format_tool_response_block(ns_tname.name, tool_body) -}}\n {%- elif tool_body is sequence and tool_body is not string -%}\n {%- set ns_txt = namespace(s='') -%}\n {%- for part in tool_body -%}\n {%- if part.get('type') == 'text' -%}\n {%- set ns_txt.s = ns_txt.s + (part.get('text') | default('')) -%}\n {%- endif -%}\n {%- endfor -%}\n {{- format_tool_response_block(ns_tname.name, ns_txt.s) -}}\n {%- for part in tool_body -%}\n {%- if part.get('type') in ['image', 'image_url'] -%}\n {{- '<|image|>' -}}\n {%- elif part.get('type') in ['audio', 'input_audio'] -%}\n {{- '<|audio|>' -}}\n {%- elif part.get('type') == 'video' -%}\n {{- '<|video|>' -}}\n {%- endif -%}\n {%- endfor -%}\n {%- else -%}\n {{- format_tool_response_block(ns_tname.name, tool_body) -}}\n {%- endif -%}\n {%- set ns_tr_out.flag = true -%}\n {%- set ns.prev_message_type = 'tool_response' -%}\n {%- endif -%}\n {%- endfor -%}\n {%- endif -%}\n\n {%- set captured_content -%}\n {%- if message.get('content') is string -%}\n {%- if role == 'model' -%}\n {{- strip_thinking(message['content']) -}}\n {%- else -%}\n {{- message['content'] | trim -}}\n {%- endif -%}\n {%- elif message.get('content') is sequence -%}\n {%- for item in message['content'] -%}\n {%- if item.get('type') == 'text' -%}\n {%- if role == 'model' -%}\n {{- strip_thinking(item['text']) -}}\n {%- else -%}\n {{- item['text'] | trim -}}\n {%- endif -%}\n {%- elif item.get('type') in ['image', 'image_url'] -%}\n {{- '<|image|>' -}}\n {%- elif item.get('type') in ['audio', 'input_audio'] -%}\n {{- '<|audio|>' -}}\n {%- elif item.get('type') == 'video' -%}\n {{- '<|video|>' -}}\n {%- endif -%}\n {%- endfor -%}\n {%- endif -%}\n {%- endset -%}\n\n {{- captured_content -}}\n {%- set has_content = captured_content | trim | length > 0 -%}\n\n {#- Forward-scan: find next non-tool message role for continuation detection -#}\n {%- set next_nt = namespace(role=None, found=false) -%}\n {%- for j in range(loop.index0 + 1, loop_messages | length) -%}\n {%- if not next_nt.found -%}\n {%- if loop_messages[j]['role'] != 'tool' -%}\n {%- set next_nt.role = loop_messages[j]['role'] -%}\n {%- set next_nt.found = true -%}\n {%- endif -%}\n {%- endif -%}\n {%- endfor -%}\n\n {%- set continues_into_next = (\n role == 'model'\n and next_nt.role == 'assistant'\n and (not message.get('tool_calls') or ns_tr_out.flag)\n ) -%}\n\n {%- if ns.prev_message_type == 'tool_call' and not ns_tr_out.flag -%}\n {{- '<|tool_response>' -}}\n {%- elif continues_into_next -%}\n {%- elif not (ns_tr_out.flag and not has_content and not next_nt.found) -%}\n {{- '<turn|>\\n' -}}\n {%- endif -%}\n\n {#- Track previous non-tool role for next iteration (avoids O(n) backward scan) -#}\n {%- set ns.prev_non_tool_role = message['role'] -%}\n {%- endif -%}\n{%- endfor -%}\n\n{%- if add_generation_prompt -%}\n {%- if ns.prev_message_type != 'tool_response' and ns.prev_message_type != 'tool_call' -%}\n {{- '<|turn>model\\n' -}}\n {%- elif ns.prev_message_type == 'tool_response' and enable_thinking -%}\n {{- '<|channel>thought\\n' -}}\n {%- endif -%}\n{%- endif -%}\n"}}],"tuning":{"sampling":{"temperature":1,"topP":0.95,"topK":64,"maxTokens":8192,"repetitionPenalty":1.1,"repetitionContext":20},"reasoning":{"thinkingBudget":96,"enableThinking":true},"engine":{"llamaCpp":{"spec":{"mtp":true,"nMax":4}}},"profiles":{"thinking-general":{"sampling":{"temperature":0.9,"topP":0.95,"topK":64,"maxTokens":8192,"repetitionPenalty":1.1,"repetitionContext":20}},"thinking-coding":{"sampling":{"temperature":0.3,"topP":0.9,"topK":40,"maxTokens":12288,"repetitionPenalty":1.1,"repetitionContext":32}},"thinking-precise":{"sampling":{"temperature":0.3,"topP":0.9,"topK":20,"maxTokens":4096,"seed":0,"repetitionPenalty":1.1,"repetitionContext":20}},"instruct":{"sampling":{"temperature":0.8,"topP":0.9,"topK":40,"maxTokens":4096,"repetitionPenalty":1.1,"repetitionContext":20}},"creative":{"sampling":{"temperature":1,"topP":0.95,"topK":80,"maxTokens":8192,"repetitionPenalty":1.1,"repetitionContext":20}}}},"ollama":{"tag":"gemma4:e4b"},"llamaCpp":{"huggingfaceRepo":"unsloth/gemma-4-E4B-it-qat-GGUF","revision":"8c5a9e4fd5482e2be20fe0bf013b4c262a8f4265","filename":"gemma-4-E4B-it-qat-UD-Q4_K_XL.gguf","sha256":"df0fd4ee07072c607c29a0a1cb4f98918426cca12f45a2776bdd6ee6d09a4de3","approxSizeBytes":4215695776,"quantization":"UD-Q4_K_XL","draftModel":{"filename":"MTP/mtp-gemma-4-E4B-it-Q4_0.gguf","sha256":"423074e537504b4f9ec5eafed5c639fac82c96631626efccacdd3c4039b20605","sizeBytes":59678016}},"mlx":{"huggingfaceRepo":"mlx-community/unsloth-gemma-4-E4B-it-qat-oQ4","revision":"eaa5413e7ee2ce04f6e9544c06b420b365b0bfce","files":[{"name":"chat_template.jinja","sha256":"33204f1acb5bd0002713e16a593847f24ceeafe711ed88bda2a352dc996a3373","sizeBytes":16804},{"name":"config.json","sha256":"a3a3425e9689657df91de6cb425f012ea3fd751102ca897041b3b26e55f3e5c0","sizeBytes":31139},{"name":"generation_config.json","sha256":"b69207f9be617e982d13cc273cce6fd88c98dda99a4bdc5e2d52ffe0a0d9f0a9","sizeBytes":203},{"name":"model-00001-of-00002.safetensors","sha256":"c4bf6bd02244f31e1be953068b46c78e88ad5fc29f5bf18a9bafbcd74b414ac9","sizeBytes":5009987483},{"name":"model-00002-of-00002.safetensors","sha256":"faca610bbaffcdd442ebac1bfbfbfa924034099cc51dbd20bf4368b6e25c6cbf","sizeBytes":334813346},{"name":"model.safetensors.index.json","sha256":"c6feb5428a432da55774ef4decab5c3ad749ef7dcf6dae44462a69bac6b2e09e","sizeBytes":271419},{"name":"processor_config.json","sha256":"32bdf45d2ad4cc29a0822ddd157a182de76644f0419a6228d151495256e9813c","sizeBytes":1689},{"name":"tokenizer.json","sha256":"cc8d3a0ce36466ccc1278bf987df5f71db1719b9ca6b4118264f45cb627bfe0f","sizeBytes":32169626},{"name":"tokenizer_config.json","sha256":"a1bab8c81ed15fa6ce912ec993c66cb49392e0487fb1ea5f5f11ea3618683627","sizeBytes":2742}],"approxSizeBytes":5377294451,"quantization":"oQ4","chatTemplateOverride":"{#\n Template: Google Gemma 4 Canonical Chat Template\n Author: Google Gemma Engineering Team\n Published: 2026-07-09\n Context: Fixed tool-calling loops, turn closures, and thinking content-ordering.\n#}\n{%- macro format_parameters(properties, required, filter_keys=false) -%}\n {%- set standard_keys = ['description', 'type', 'properties', 'required', 'nullable'] -%}\n {%- set ns = namespace(found_first=false) -%}\n {%- for key, value in properties | dictsort -%}\n {%- set add_comma = false -%}\n {%- if not filter_keys or key not in standard_keys -%}\n {%- if ns.found_first %},{% endif -%}\n {%- set ns.found_first = true -%}\n {{ key }}:{\n {%- if value['description'] -%}\n description:<|\"|>{{ value['description'] }}<|\"|>\n {%- set add_comma = true -%}\n {%- endif -%}\n {%- if value['type'] | upper == 'STRING' -%}\n {%- if value['enum'] -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n enum:{{ format_argument(value['enum']) }}\n {%- endif -%}\n {%- elif value['type'] | upper == 'ARRAY' -%}\n {%- if value['items'] is mapping and value['items'] -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n items:{\n {%- set ns_items = namespace(found_first=false) -%}\n {%- for item_key, item_value in value['items'] | dictsort -%}\n {%- if item_value is not none -%}\n {%- if ns_items.found_first %},{% endif -%}\n {%- set ns_items.found_first = true -%}\n {%- if item_key == 'properties' -%}\n properties:{\n {%- if item_value is mapping -%}\n {{- format_parameters(item_value, value['items']['required'] | default([])) -}}\n {%- endif -%}\n }\n {%- elif item_key == 'required' -%}\n required:[\n {%- for req_item in item_value -%}\n <|\"|>{{- req_item -}}<|\"|>\n {%- if not loop.last %},{% endif -%}\n {%- endfor -%}\n ]\n {%- elif item_key == 'type' -%}\n {%- if item_value is string -%}\n type:{{ format_argument(item_value | upper) }}\n {%- else -%}\n type:{{ format_argument(item_value | map('upper') | list) }}\n {%- endif -%}\n {%- else -%}\n {{ item_key }}:{{ format_argument(item_value) }}\n {%- endif -%}\n {%- endif -%}\n {%- endfor -%}\n }\n {%- endif -%}\n {%- endif -%}\n {%- if value['nullable'] %}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n nullable:true\n {%- endif -%}\n {%- if value['type'] | upper == 'OBJECT' -%}\n {%- if value['properties'] is defined and value['properties'] is mapping -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n properties:{\n {{- format_parameters(value['properties'], value['required'] | default([])) -}}\n }\n {%- elif value is mapping -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n properties:{\n {{- format_parameters(value, value['required'] | default([]), filter_keys=true) -}}\n }\n {%- endif -%}\n {%- if value['required'] -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n required:[\n {%- for item in value['required'] | default([]) -%}\n <|\"|>{{- item -}}<|\"|>\n {%- if not loop.last %},{% endif -%}\n {%- endfor -%}\n ]\n {%- endif -%}\n {%- endif -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n type:<|\"|>{{ value['type'] | upper }}<|\"|>}\n {%- endif -%}\n {%- endfor -%}\n{%- endmacro -%}\n{%- macro format_function_declaration(tool_data) -%}\n declaration:{{- tool_data['function']['name'] -}}{description:<|\"|>{{- tool_data['function']['description'] -}}<|\"|>\n {%- set params = tool_data['function']['parameters'] -%}\n {%- if params -%}\n ,parameters:{\n {%- if params['properties'] -%}\n properties:{ {{- format_parameters(params['properties'], params['required']) -}} },\n {%- endif -%}\n {%- if params['required'] -%}\n required:[\n {%- for item in params['required'] -%}\n <|\"|>{{- item -}}<|\"|>\n {{- ',' if not loop.last -}}\n {%- endfor -%}\n ],\n {%- endif -%}\n {%- if params['type'] -%}\n type:<|\"|>{{- params['type'] | upper -}}<|\"|>}\n {%- endif -%}\n {%- endif -%}\n {%- if 'response' in tool_data['function'] -%}\n {%- set response_declaration = tool_data['function']['response'] -%}\n ,response:{\n {%- if response_declaration['description'] -%}\n description:<|\"|>{{- response_declaration['description'] -}}<|\"|>,\n {%- endif -%}\n {%- if response_declaration['type'] | upper == 'OBJECT' -%}\n type:<|\"|>{{- response_declaration['type'] | upper -}}<|\"|>}\n {%- endif -%}\n {%- endif -%}\n }\n{%- endmacro -%}\n{%- macro format_argument(argument, escape_keys=True) -%}\n {%- if argument is none -%}\n {{- 'null' -}}\n {%- elif argument is string -%}\n {{- '<|\"|>' + argument + '<|\"|>' -}}\n {%- elif argument is boolean -%}\n {{- 'true' if argument else 'false' -}}\n {%- elif argument is mapping -%}\n {{- '{' -}}\n {%- set ns = namespace(found_first=false) -%}\n {%- for key, value in argument | dictsort -%}\n {%- if ns.found_first %},{% endif -%}\n {%- set ns.found_first = true -%}\n {%- if escape_keys -%}\n {{- '<|\"|>' + key + '<|\"|>' -}}\n {%- else -%}\n {{- key -}}\n {%- endif -%}\n :{{- format_argument(value, escape_keys=escape_keys) -}}\n {%- endfor -%}\n {{- '}' -}}\n {%- elif argument is sequence -%}\n {{- '[' -}}\n {%- for item in argument -%}\n {{- format_argument(item, escape_keys=escape_keys) -}}\n {%- if not loop.last %},{% endif -%}\n {%- endfor -%}\n {{- ']' -}}\n {%- else -%}\n {{- argument -}}\n {%- endif -%}\n{%- endmacro -%}\n{%- macro strip_thinking(text) -%}\n {%- set ns = namespace(result='') -%}\n {%- for part in text.split('<channel|>') -%}\n {%- if '<|channel>' in part -%}\n {%- set ns.result = ns.result + part.split('<|channel>')[0] -%}\n {%- else -%}\n {%- set ns.result = ns.result + part -%}\n {%- endif -%}\n {%- endfor -%}\n {{- ns.result | trim -}}\n{%- endmacro -%}\n\n{%- macro format_tool_response_block(tool_name, response) -%}\n {{- '<|tool_response>' -}}\n {%- if response is mapping -%}\n {{- 'response:' + tool_name + '{' -}}\n {%- for key, value in response | dictsort -%}\n {{- key -}}:{{- format_argument(value, escape_keys=False) -}}\n {%- if not loop.last %},{% endif -%}\n {%- endfor -%}\n {{- '}' -}}\n {%- else -%}\n {{- 'response:' + tool_name + '{value:' + format_argument(response, escape_keys=False) + '}' -}}\n {%- endif -%}\n {{- '<tool_response|>' -}}\n{%- endmacro -%}\n\n{#- ===== SETUP ===== -#}\n{%- set ns = namespace(prev_message_type=None, prev_non_tool_role=None) -%}\n{%- set loop_messages = messages -%}\n{%- set enable_thinking = enable_thinking | default(false) -%}\n{%- set preserve_thinking = preserve_thinking | default(false) -%}\n{{- bos_token -}}\n{#- Handle System/Tool Definitions Block -#}\n{%- if enable_thinking or tools or (messages and messages[0]['role'] in ['system', 'developer']) -%}\n {{- '<|turn>system\\n' -}}\n {#- Inject Thinking token at the very top of the FIRST system turn -#}\n {%- if enable_thinking -%}\n {{- '<|think|>\\n' -}}\n {%- set ns.prev_message_type = 'think' -%}\n {%- endif -%}\n {%- if messages and messages[0]['role'] in ['system', 'developer'] -%}\n {%- if messages[0]['content'] is string -%}\n {{- messages[0]['content'] | trim -}}\n {%- elif messages[0]['content'] is sequence -%}\n {%- for item in messages[0]['content'] -%}\n {{- item['text'] | trim + ' '-}}\n {%- endfor -%}\n {%- endif -%}\n {%- set loop_messages = messages[1:] -%}\n {%- endif -%}\n {%- if tools -%}\n {%- for tool in tools %}\n {{- '<|tool>' -}}\n {{- format_function_declaration(tool) | trim -}}\n {{- '<tool|>' -}}\n {%- endfor %}\n {%- set ns.prev_message_type = 'tool' -%}\n {%- endif -%}\n {{- '<turn|>\\n' -}}\n{%- endif %}\n\n{#- Pre-scan: find last user message index for reasoning guard -#}\n{%- set ns_turn = namespace(last_user_idx=-1) -%}\n{%- for i in range(loop_messages | length) -%}\n {%- if loop_messages[i]['role'] == 'user' -%}\n {%- set ns_turn.last_user_idx = i -%}\n {%- endif -%}\n{%- endfor -%}\n\n{#- Loop through messages -#}\n{%- for message in loop_messages -%}\n {%- if message['role'] != 'tool' -%}\n {%- set ns.prev_message_type = None -%}\n {%- set role = 'model' if message['role'] == 'assistant' else message['role'] -%}\n {#- Detect continuation using tracked state — O(1) instead of O(n) backward scan -#}\n {%- set continue_same_model_turn = (role == 'model' and ns.prev_non_tool_role == 'assistant') -%}\n {%- if not continue_same_model_turn -%}\n {{- '<|turn>' + role + '\\n' }}\n {%- endif -%}\n\n {#- Render reasoning/reasoning_content as thinking channel -#}\n {%- set thinking_text = message.get('reasoning') or message.get('reasoning_content') -%}\n {%- set thinking_gate = (loop.index0 > ns_turn.last_user_idx) or (preserve_thinking and message.get('tool_calls')) -%}\n {%- if thinking_text and thinking_gate -%}\n {{- '<|channel>thought\\n' + thinking_text + '\\n<channel|>' -}}\n {%- endif -%}\n\n {%- if message.get('tool_calls') -%}\n {%- for tool_call in message.get('tool_calls') -%}\n {%- set function = tool_call['function'] -%}\n {{- '<|tool_call>call:' + function['name'] + '{' -}}\n {%- if function['arguments'] is mapping -%}\n {%- set ns_args = namespace(found_first=false) -%}\n {%- for key, value in function['arguments'] | dictsort -%}\n {%- if ns_args.found_first %},{% endif -%}\n {%- set ns_args.found_first = true -%}\n {{- key -}}:{{- format_argument(value, escape_keys=False) -}}\n {%- endfor -%}\n {%- elif function['arguments'] is none -%}\n {%- else -%}\n {{- raise_exception(\n \"chat_template: tool_calls[].function.arguments must be a \"\n \"JSON object (mapping), not a string. Deserialize arguments \"\n \"before passing to the template.\"\n ) -}}\n {%- endif -%}\n {{- '}<tool_call|>' -}}\n {%- endfor -%}\n {%- set ns.prev_message_type = 'tool_call' -%}\n {%- endif -%}\n\n {%- set ns_tr_out = namespace(flag=false) -%}\n {%- if message.get('tool_responses') -%}\n {#- Legacy: tool_responses embedded on the assistant message (Google/Gemma native) -#}\n {%- for tool_response in message.get('tool_responses') -%}\n {{- format_tool_response_block(tool_response['name'] | default('unknown', true), tool_response['response']) -}}\n {%- set ns_tr_out.flag = true -%}\n {%- set ns.prev_message_type = 'tool_response' -%}\n {%- endfor -%}\n {%- elif message.get('tool_calls') -%}\n {#- OpenAI Chat Completions: forward-scan consecutive role:tool messages -#}\n {%- set ns_tool_scan = namespace(stopped=false) -%}\n {%- for k in range(loop.index0 + 1, loop_messages | length) -%}\n {%- if ns_tool_scan.stopped -%}\n {%- elif loop_messages[k]['role'] != 'tool' -%}\n {%- set ns_tool_scan.stopped = true -%}\n {%- else -%}\n {%- set follow = loop_messages[k] -%}\n {#- Resolve tool_call_id to function name -#}\n {%- set ns_tname = namespace(name=follow.get('name') or 'unknown') -%}\n {%- for tc in message.get('tool_calls') -%}\n {%- if tc.get('id') == follow.get('tool_call_id') -%}\n {%- set ns_tname.name = tc['function']['name'] -%}\n {%- endif -%}\n {%- endfor -%}\n {#- Handle content as string or content-parts array -#}\n {%- set tool_body = follow.get('content') -%}\n {%- if tool_body is string -%}\n {{- format_tool_response_block(ns_tname.name, tool_body) -}}\n {%- elif tool_body is sequence and tool_body is not string -%}\n {%- set ns_txt = namespace(s='') -%}\n {%- for part in tool_body -%}\n {%- if part.get('type') == 'text' -%}\n {%- set ns_txt.s = ns_txt.s + (part.get('text') | default('')) -%}\n {%- endif -%}\n {%- endfor -%}\n {{- format_tool_response_block(ns_tname.name, ns_txt.s) -}}\n {%- for part in tool_body -%}\n {%- if part.get('type') in ['image', 'image_url'] -%}\n {{- '<|image|>' -}}\n {%- elif part.get('type') in ['audio', 'input_audio'] -%}\n {{- '<|audio|>' -}}\n {%- elif part.get('type') == 'video' -%}\n {{- '<|video|>' -}}\n {%- endif -%}\n {%- endfor -%}\n {%- else -%}\n {{- format_tool_response_block(ns_tname.name, tool_body) -}}\n {%- endif -%}\n {%- set ns_tr_out.flag = true -%}\n {%- set ns.prev_message_type = 'tool_response' -%}\n {%- endif -%}\n {%- endfor -%}\n {%- endif -%}\n\n {%- set captured_content -%}\n {%- if message.get('content') is string -%}\n {%- if role == 'model' -%}\n {{- strip_thinking(message['content']) -}}\n {%- else -%}\n {{- message['content'] | trim -}}\n {%- endif -%}\n {%- elif message.get('content') is sequence -%}\n {%- for item in message['content'] -%}\n {%- if item.get('type') == 'text' -%}\n {%- if role == 'model' -%}\n {{- strip_thinking(item['text']) -}}\n {%- else -%}\n {{- item['text'] | trim -}}\n {%- endif -%}\n {%- elif item.get('type') in ['image', 'image_url'] -%}\n {{- '<|image|>' -}}\n {%- elif item.get('type') in ['audio', 'input_audio'] -%}\n {{- '<|audio|>' -}}\n {%- elif item.get('type') == 'video' -%}\n {{- '<|video|>' -}}\n {%- endif -%}\n {%- endfor -%}\n {%- endif -%}\n {%- endset -%}\n\n {{- captured_content -}}\n {%- set has_content = captured_content | trim | length > 0 -%}\n\n {#- Forward-scan: find next non-tool message role for continuation detection -#}\n {%- set next_nt = namespace(role=None, found=false) -%}\n {%- for j in range(loop.index0 + 1, loop_messages | length) -%}\n {%- if not next_nt.found -%}\n {%- if loop_messages[j]['role'] != 'tool' -%}\n {%- set next_nt.role = loop_messages[j]['role'] -%}\n {%- set next_nt.found = true -%}\n {%- endif -%}\n {%- endif -%}\n {%- endfor -%}\n\n {%- set continues_into_next = (\n role == 'model'\n and next_nt.role == 'assistant'\n and (not message.get('tool_calls') or ns_tr_out.flag)\n ) -%}\n\n {%- if ns.prev_message_type == 'tool_call' and not ns_tr_out.flag -%}\n {{- '<|tool_response>' -}}\n {%- elif continues_into_next -%}\n {%- elif not (ns_tr_out.flag and not has_content and not next_nt.found) -%}\n {{- '<turn|>\\n' -}}\n {%- endif -%}\n\n {#- Track previous non-tool role for next iteration (avoids O(n) backward scan) -#}\n {%- set ns.prev_non_tool_role = message['role'] -%}\n {%- endif -%}\n{%- endfor -%}\n\n{%- if add_generation_prompt -%}\n {%- if ns.prev_message_type != 'tool_response' and ns.prev_message_type != 'tool_call' -%}\n {{- '<|turn>model\\n' -}}\n {%- elif ns.prev_message_type == 'tool_response' and enable_thinking -%}\n {{- '<|channel>thought\\n' -}}\n {%- endif -%}\n{%- endif -%}\n"},"availableVersions":["1.3.0","1.2.1","1.2.0","1.1.2","1.1.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"glm-5.2-754b-q2","name":"GLM 5.2 (IQ2_XXS)","description":"antirez's routed 2-bit community GGUF of Z.ai's GLM 5.2 — a 754B-parameter Mixture-of-Experts (256 experts, 8 active per token, ~40B active) with a 1M-token context and DeepSeek-style sparse attention. The routed experts are crushed to IQ2_XXS (block 78 in Q2_K) while attention, the shared expert, embeddings, and the output head stay at Q8-class precision, landing the file at ~197 GB. Only ~20 GB of that is non-routed weight that must stay resident: DwarfStar streams the remaining ~177 GB of experts from SSD, so it runs on a 128 GB machine — but it is a very large download and a slow first turn. Built for antirez's `ds4` engine; these quants do not load on stock llama.cpp.","tags":["glm","reasoning","moe","tools","2-bit","iq2","long-context","large"],"maintainer":{"name":"antirez","url":"https://huggingface.co/antirez/glm-5.2-gguf"},"maker":{"name":"Z.ai","url":"https://huggingface.co/zai-org/GLM-5.2"},"license":"MIT","version":"1.0.0","releasedAt":"2026-07-25T00:00:00Z","parameterSize":"754B","approxSizeBytes":211075856448,"supportsTools":true,"contextWindow":1048576,"upstream":"https://huggingface.co/zai-org/GLM-5.2","category":"reasoning","style":{"family":"glm","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","prompt.tool-cookbook-condensed","mcp.compact-tool-schemas","fabrication.detect-past-tense-no-tools","turn.preamble-folding"],"tuning":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":16384},"reasoning":{"thinkingBudget":4096,"enableThinking":true},"profiles":{"thinking-general":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":16384},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"thinking-coding":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":16384},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"thinking-precise":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":8192,"seed":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"instruct":{"sampling":{"temperature":0.7,"topP":1,"maxTokens":4096},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":8192},"reasoning":{"enableThinking":false}}}},"ds4":{"huggingfaceRepo":"antirez/glm-5.2-gguf","revision":"2638b3b878f5c6cc3ae7334b8dbea1275025f52e","filename":"GLM-5.2-UD-IQ2_XXS_RoutedIQ2XXS_blk78Q2K.gguf","sha256":"a49de64c5020432bdae23de36a423a9660a5621bc0db8d12b66bd8814b07fea0","approxSizeBytes":211075856448,"residentBytes":61363217408,"kvBytesPerToken":91136,"residentCtxTokens":65536,"quantization":"IQ2_XXS","cacheExpertsBytes":34359738368,"ssdStreaming":true,"maxLaunchCtx":65536},"availableVersions":["1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"gpt-oss-120b-q4","name":"GPT-OSS (120B, MoE, Q4)","description":"OpenAI's open-weight 117B-parameter Mixture-of-Experts model (~5.1B active per token). Configurable reasoning effort (low/medium/high), full chain-of-thought access, and native function-calling. Frontier-class on-device reasoning for workstations and Mac Studio-class hardware — needs ~80GB of usable memory.","tags":["openai","tools","reasoning","moe","open-weights","large"],"maintainer":{"name":"OpenAI","url":"https://ollama.com/library/gpt-oss"},"license":"Apache-2.0","licenseClass":"open","licenseShortName":"Apache 2.0","version":"1.1.0","releasedAt":"2026-05-17T00:00:00Z","parameterSize":"117B","approxSizeBytes":65000000000,"supportsTools":true,"contextWindow":131072,"upstream":"https://huggingface.co/openai/gpt-oss-120b","category":"reasoning","style":{"family":"gpt-oss","reasoningFormat":"channel","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-channel-tags","prompt.private-reasoning-guidance","fabrication.detect-past-tense-no-tools","turn.preamble-folding"],"tuning":{"sampling":{"maxTokens":8192},"reasoning":{"effort":"medium","templateKwargs":{"reasoning_effort":"medium"}},"profiles":{"thinking-general":{"sampling":{"maxTokens":8192},"reasoning":{"effort":"medium","templateKwargs":{"reasoning_effort":"medium"}}},"thinking-deep":{"reasoning":{"effort":"high","templateKwargs":{"reasoning_effort":"high"}}},"thinking-coding":{"sampling":{"maxTokens":16384},"reasoning":{"effort":"high","templateKwargs":{"reasoning_effort":"high"}}},"thinking-precise":{"sampling":{"maxTokens":8192,"seed":0},"reasoning":{"effort":"medium","templateKwargs":{"reasoning_effort":"medium"}}},"instruct":{"sampling":{"maxTokens":4096},"reasoning":{"effort":"low","templateKwargs":{"reasoning_effort":"low"}}},"creative":{"sampling":{"maxTokens":8192},"reasoning":{"effort":"low","templateKwargs":{"reasoning_effort":"low"}}}}},"ollama":{"tag":"gpt-oss:120b"},"llamaCpp":{"huggingfaceRepo":"bartowski/openai_gpt-oss-120b-GGUF","revision":"8d64014efc314685c68ad448590f905fcb20e534","shards":[{"name":"openai_gpt-oss-120b-Q4_K_M/openai_gpt-oss-120b-Q4_K_M-00001-of-00002.gguf","sha256":"48b6bea561b52aaa3c10ca7681f35a923196cc348098e55ffc6ee3d184eb0949","sizeBytes":39954683808},{"name":"openai_gpt-oss-120b-Q4_K_M/openai_gpt-oss-120b-Q4_K_M-00002-of-00002.gguf","sha256":"06ab40ac3a9e2d7a77b6491b4cf76af152bee88ce493331a1f5147a0207abcad","sizeBytes":22887029536}],"approxSizeBytes":62841713344,"quantization":"Q4_K_M"},"mlx":{"huggingfaceRepo":"mlx-community/gpt-oss-120b-MXFP4-Q4","revision":"bce781bef0f2fc85ed4e575af74054f5aad73ddd","files":[{"name":"chat_template.jinja","sha256":"a4c9919cbbd4acdd51ccffe22da049264b1b73e59055fa58811a99efbd7c8146","sizeBytes":16738},{"name":"config.json","sha256":"d15a4db435befc6d28eff75c34f25386fb77ae56b88630857f372fd1fc25289d","sizeBytes":50145},{"name":"generation_config.json","sha256":"f9970ada892d2d1f72e3ed0a6535ccebadd11897318794ca671d8c7014c957da","sizeBytes":177},{"name":"model-00001-of-00013.safetensors","sha256":"f253063b8f2856e1e4bc0b3c3dcae743308574786c3de8e2b34e6108439a92a1","sizeBytes":4930648083},{"name":"model-00002-of-00013.safetensors","sha256":"75e5e879cf3eb84d8d520dd084f60aa9fa804a8ed9fe5bbfa3646c0abc196fcd","sizeBytes":5133844451},{"name":"model-00003-of-00013.safetensors","sha256":"8d45b4bd9a13913f1422d8056ab5e5455d961ee342810a483c65bc50e13e9825","sizeBytes":5133844463},{"name":"model-00004-of-00013.safetensors","sha256":"58a266ddeb125b5bb2f62329c1db6af5907917bce7e3228b6cd4c836d2b6ff1d","sizeBytes":5133844452},{"name":"model-00005-of-00013.safetensors","sha256":"9660b5a6a42ec1ecf59dd2d437ebb8f1e145d27d3d1a3b6551e4ad5f1231251c","sizeBytes":5133844583},{"name":"model-00006-of-00013.safetensors","sha256":"6a25c6255571f094de71bfbbbe0788edf40a1f42732caa67d5e34cafabe2b483","sizeBytes":5133844503},{"name":"model-00007-of-00013.safetensors","sha256":"baf2929ba19f5237b2eee1d70c62d366b7fe7efd2a36c301b276eb05117f92f4","sizeBytes":5133844579},{"name":"model-00008-of-00013.safetensors","sha256":"851ffd789b3fb575c93441b99a41326a1901ca931bebd1547fce68df91f6f9ae","sizeBytes":5133844553},{"name":"model-00009-of-00013.safetensors","sha256":"491729509a6b125c68f6756bb14fc27be8dc264fae3090ed6422468a07c16080","sizeBytes":5133844551},{"name":"model-00010-of-00013.safetensors","sha256":"3a985b1bb4073449483edcd1058390d46d6c2be2db74f77681ecd86114190367","sizeBytes":5133844567},{"name":"model-00011-of-00013.safetensors","sha256":"455f0edf416082de29bbcd906869bfcb2b8fddab58c3d6e57e348c72ccda0056","sizeBytes":5133844583},{"name":"model-00012-of-00013.safetensors","sha256":"40c8cf3a1797dce2b90a7e1db5858e337c173fc0e9055efe9362c56b8e0f06f1","sizeBytes":5133844567},{"name":"model-00013-of-00013.safetensors","sha256":"93e1477c64c3bd08f4f4202aee1e7305187e86dc82666659435620317f89bd83","sizeBytes":927119654},{"name":"model.safetensors.index.json","sha256":"6b2aab23124d1b9761c64a4f0076c8ecaf8955ed1d09f217aa9fb82c568991a6","sizeBytes":100431},{"name":"special_tokens_map.json","sha256":"8464cabd6eda239fe46ebf8ae63b46c417721784a961a022f6b59174a2cda0e2","sizeBytes":440},{"name":"tokenizer.json","sha256":"0614fe83cadab421296e664e1f48f4261fa8fef6e03e63bb75c20f38e37d07d3","sizeBytes":27868174},{"name":"tokenizer_config.json","sha256":"9279e942392b742d633c7adbb89ebe002c98399db8926a7af5125c726f404070","sizeBytes":4200}],"approxSizeBytes":62358097894,"quantization":"MXFP4-Q4"},"availableVersions":["1.1.0","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"gpt-oss-20b-q4","name":"GPT-OSS (20B, MoE, Q4)","description":"OpenAI's open-weight 20B-parameter Mixture-of-Experts model (~3.6B active per token). Configurable reasoning effort (low/medium/high), full chain-of-thought access, and native function-calling. Lower-latency frontier-class on-device option for machines with 16GB+ memory.","tags":["openai","tools","reasoning","moe","open-weights"],"maintainer":{"name":"OpenAI","url":"https://ollama.com/library/gpt-oss"},"license":"Apache-2.0","licenseClass":"open","licenseShortName":"Apache 2.0","minGezelVersion":"1.26227","version":"1.1.1","releasedAt":"2026-08-15T00:00:00Z","parameterSize":"20B","approxSizeBytes":12000000000,"supportsTools":true,"contextWindow":131072,"upstream":"https://ollama.com/library/gpt-oss","category":"reasoning","style":{"family":"gpt-oss","reasoningFormat":"channel","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-channel-tags","prompt.private-reasoning-guidance","prompt.prefer-writefile-edits","prompt.derive-by-execution","fabrication.detect-past-tense-no-tools","turn.preamble-folding","mcp.compact-tool-schemas"],"tuning":{"sampling":{"maxTokens":8192},"reasoning":{"effort":"medium","thinkingBudget":6144,"templateKwargs":{"reasoning_effort":"medium"}},"profiles":{"thinking-general":{"sampling":{"maxTokens":8192},"reasoning":{"effort":"medium","thinkingBudget":6144,"templateKwargs":{"reasoning_effort":"medium"}}},"thinking-deep":{"reasoning":{"effort":"high","thinkingBudget":6144,"templateKwargs":{"reasoning_effort":"high"}}},"thinking-coding":{"sampling":{"maxTokens":16384},"reasoning":{"effort":"high","thinkingBudget":6144,"templateKwargs":{"reasoning_effort":"high"}}},"thinking-precise":{"sampling":{"maxTokens":8192,"seed":0},"reasoning":{"effort":"medium","thinkingBudget":6144,"templateKwargs":{"reasoning_effort":"medium"}}},"instruct":{"sampling":{"maxTokens":4096},"reasoning":{"effort":"low","templateKwargs":{"reasoning_effort":"low"}}},"creative":{"sampling":{"maxTokens":8192},"reasoning":{"effort":"low","templateKwargs":{"reasoning_effort":"low"}}}}},"ollama":{"tag":"gpt-oss:20b"},"llamaCpp":{"huggingfaceRepo":"bartowski/openai_gpt-oss-20b-GGUF","revision":"e39ba3aa000c47c83dacdc9e1ca2c9dd0808c205","filename":"openai_gpt-oss-20b-Q4_K_M.gguf","sha256":"86a21df11afa5a40031ec1974e368ae0ab561ee3995f4d08ff432e8b2b7af9fc","approxSizeBytes":11673418816,"quantization":"Q4_K_M"},"mlx":{"huggingfaceRepo":"mlx-community/gpt-oss-20b-MXFP4-Q4","revision":"f356f2747216d7e98fee755df25987459fc19089","files":[{"name":"config.json","sha256":"e8ec3c105ab83e913a75baf587de778083ada1af3fac68d807e75ff926240e38","sizeBytes":33998},{"name":"generation_config.json","sha256":"f9970ada892d2d1f72e3ed0a6535ccebadd11897318794ca671d8c7014c957da","sizeBytes":177},{"name":"model-00001-of-00003.safetensors","sha256":"ec8571f6f8adba2d7d92a1f6029a69aecd18ab4e82404a306ceb063d9ae1362d","sizeBytes":5306798277},{"name":"model-00002-of-00003.safetensors","sha256":"9a32623d891d6f64694fdaaaeecf145d8796d17c238b9b99af953077d0f63837","sizeBytes":5263518916},{"name":"model-00003-of-00003.safetensors","sha256":"3fb80743340b3dbeb649e50b5fd1b5f063e98c143759025284344988d8fa0a95","sizeBytes":608251966},{"name":"model.safetensors.index.json","sha256":"065001869dd5ffd332419a432127467191b1bb0fd5c463dd0dc51f1359728a27","sizeBytes":67046},{"name":"special_tokens_map.json","sha256":"8464cabd6eda239fe46ebf8ae63b46c417721784a961a022f6b59174a2cda0e2","sizeBytes":440},{"name":"tokenizer.json","sha256":"0614fe83cadab421296e664e1f48f4261fa8fef6e03e63bb75c20f38e37d07d3","sizeBytes":27868174},{"name":"tokenizer_config.json","sha256":"2d8386578f85ea1fa698e78c58b2d8503e8122d6b110b61f93d3995601b07d91","sizeBytes":21694}],"approxSizeBytes":11206560688,"quantization":"MXFP4-Q4"},"availableVersions":["1.1.1","1.1.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"granite4.2-30b-q4","name":"Granite 4.2 (30B, Q4)","description":"IBM's flagship dense Granite 4.2 reasoning model at 30B parameters. Text-only, with native thinking, agentic coding, native tool calling, multilingual support, and a 128K context window. Q4 builds are suited to machines with 32GB+ usable memory.","tags":["ibm","reasoning","agentic","coding","tools","long-context","multilingual","open-weights","apple-silicon"],"maintainer":{"name":"IBM Granite","url":"https://huggingface.co/ibm-granite/granite-4.2-30b"},"license":"Apache-2.0","licenseClass":"open","licenseShortName":"Apache 2.0","minGezelVersion":"1.26238","version":"1.0.0","releasedAt":"2026-08-25T00:00:00Z","parameterSize":"30B","approxSizeBytes":17721455328,"supportsTools":true,"contextWindow":131072,"kvBytesPerTokenF16":262144,"upstream":"https://huggingface.co/ibm-granite/granite-4.2-30b","category":"reasoning","style":{"family":"granite","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","prompt.private-reasoning-guidance","mcp.compact-tool-schemas","fabrication.detect-past-tense-no-tools","prompt.retrieval-first","prompt.workspace-gestalt","prompt.documents-summaries","turn.preamble-folding","turn.ramble-detection","tools.mlx-grammar"],"tuning":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":8192},"samplingWhenThinking":{"temperature":1,"topP":0.95},"reasoning":{"thinkingBudget":8192,"enableThinking":true},"profiles":{"thinking-general":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":8192},"reasoning":{"thinkingBudget":8192,"enableThinking":true}},"thinking-deep":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":16384},"reasoning":{"thinkingBudget":12288,"enableThinking":true}},"thinking-coding":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":16384},"reasoning":{"thinkingBudget":8192,"enableThinking":true}},"thinking-precise":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":8192,"seed":0},"reasoning":{"thinkingBudget":8192,"enableThinking":true}},"instruct":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":8192},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":8192},"reasoning":{"enableThinking":false}}}},"llamaCpp":{"huggingfaceRepo":"ibm-granite/granite-4.2-30b-GGUF","revision":"dccfa56fbb20bc2d8bef5cc43f3c7ef190b090cb","filename":"granite-4.2-30b-Q4_K_M.gguf","sha256":"f299dace85d77ee0e24ca0b6720bd211b1f4cd1f65b9c0a2111e79692e29c9be","approxSizeBytes":17721455328,"quantization":"Q4_K_M"},"mlx":{"huggingfaceRepo":"lmstudio-community/granite-4.2-30b-MLX-4bit","revision":"a9b33b84944a3c27062c60bad1a37e0299f04eb2","files":[{"name":"chat_template.jinja","sha256":"f0ba43f79b3cabca5e5a7584c77aec92f49feae45cdf7779c87d9fc54cd90258","sizeBytes":9013},{"name":"config.json","sha256":"a745ccdfe4a4d7579c7e30cc9615b09f045cd9a7abe1e4e967dda8d548230870","sizeBytes":1187},{"name":"generation_config.json","sha256":"1b9baf0a7959d31d7fb58ff6b506c27d09a73d395cadccc7e6dd1d4b7e43fd9d","sizeBytes":207},{"name":"model-00001-of-00004.safetensors","sha256":"2c6e511eda2fd702c2c189211929202aedae5ddbd29cfb023682bf3f97619e10","sizeBytes":5332391152},{"name":"model-00002-of-00004.safetensors","sha256":"25350f8f9cf7c794ef5091d36cfdf5c48ee39439335f66bad4f213d02563d75a","sizeBytes":5327690091},{"name":"model-00003-of-00004.safetensors","sha256":"69300ea2414dc6ef214c943e1f4636d781be5ff231ba5d7421ae6b066cab64fa","sizeBytes":5351301086},{"name":"model-00004-of-00004.safetensors","sha256":"d51ae4e29e1fe98574b0f3e7087f7732fbf920d14d0f3f5946698d83d13dcacf","sizeBytes":457729616},{"name":"model.safetensors.index.json","sha256":"4db7a61eda74aba2a1229bff09bec129dbff49ca3241ffbe2d8a8fd0bd3f3b5b","sizeBytes":126768},{"name":"tokenizer.json","sha256":"883975314d58743726347caaf2c32ac89afd5ad57222cffbc4f052f2ab27b2d7","sizeBytes":7153414},{"name":"tokenizer_config.json","sha256":"856442330f3066df1f922cccbe107c4bc3b6764c791b803b475eecf88666b2a3","sizeBytes":9783}],"approxSizeBytes":16476412317,"quantization":"4bit"},"availableVersions":["1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"granite4.2-3b-q4","name":"Granite 4.2 (3B, Q4)","description":"IBM's compact dense Granite 4.2 reasoning model at 3B parameters. Text-only, with native thinking, native tool calling, multilingual support, and a 128K context window. Q4 builds are a lightweight option for machines with 8GB+ usable memory.","tags":["ibm","reasoning","agentic","coding","tools","long-context","multilingual","small","open-weights","apple-silicon"],"maintainer":{"name":"IBM Granite","url":"https://huggingface.co/ibm-granite/granite-4.2-3b"},"license":"Apache-2.0","licenseClass":"open","licenseShortName":"Apache 2.0","minGezelVersion":"1.26238","version":"1.0.0","releasedAt":"2026-08-25T00:00:00Z","parameterSize":"3B","approxSizeBytes":2244012160,"supportsTools":true,"contextWindow":131072,"kvBytesPerTokenF16":81920,"upstream":"https://huggingface.co/ibm-granite/granite-4.2-3b","category":"reasoning","style":{"family":"granite","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","prompt.private-reasoning-guidance","prompt.tool-cookbook-full","mcp.compact-tool-schemas","mcp.relax-required-fields","mcp.default-missing-fields","fabrication.detect-past-tense-no-tools","fabrication.detect-claim-without-tool","prompt.retrieval-first",{"id":"turn.continuation-budget","config":{"count":4}},"turn.preamble-folding","turn.ramble-detection","tools.mlx-grammar","prompt.prefer-writefile-edits","prompt.derive-by-execution"],"tuning":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":8192},"samplingWhenThinking":{"temperature":1,"topP":0.95},"reasoning":{"thinkingBudget":8192,"enableThinking":true},"profiles":{"thinking-general":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":8192},"reasoning":{"thinkingBudget":8192,"enableThinking":true}},"thinking-deep":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":16384},"reasoning":{"thinkingBudget":12288,"enableThinking":true}},"thinking-coding":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":16384},"reasoning":{"thinkingBudget":8192,"enableThinking":true}},"thinking-precise":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":8192,"seed":0},"reasoning":{"thinkingBudget":8192,"enableThinking":true}},"instruct":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":8192},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":8192},"reasoning":{"enableThinking":false}}}},"llamaCpp":{"huggingfaceRepo":"ibm-granite/granite-4.2-3b-GGUF","revision":"47a3d9699d7539606c83943d717fcea7bd9f6a19","filename":"granite-4.2-3b-Q4_K_M.gguf","sha256":"20e436143017578687f7f848225cc6c6038126c84149192229c7dff6e4e0f427","approxSizeBytes":2244012160,"quantization":"Q4_K_M"},"mlx":{"huggingfaceRepo":"lmstudio-community/granite-4.2-3b-MLX-4bit","revision":"4fe06f1699e99e288bf765ebc57f629cbca3bbfe","files":[{"name":"chat_template.jinja","sha256":"f0ba43f79b3cabca5e5a7584c77aec92f49feae45cdf7779c87d9fc54cd90258","sizeBytes":9013},{"name":"config.json","sha256":"bfcb1a01587dae223af89f07b960f0b456ef9fe9576167a126aa807941b213d7","sizeBytes":1185},{"name":"generation_config.json","sha256":"1b9baf0a7959d31d7fb58ff6b506c27d09a73d395cadccc7e6dd1d4b7e43fd9d","sizeBytes":207},{"name":"model.safetensors","sha256":"a71cf9297827b3c3d6ad426081b67c423044f6576632dabe40e7590552fd267d","sizeBytes":2059005430},{"name":"model.safetensors.index.json","sha256":"1cb600e4ea44dcbad15b65b3579fd06affb680b10b6f2ee1dec56db01f194f10","sizeBytes":65461},{"name":"tokenizer.json","sha256":"883975314d58743726347caaf2c32ac89afd5ad57222cffbc4f052f2ab27b2d7","sizeBytes":7153414},{"name":"tokenizer_config.json","sha256":"856442330f3066df1f922cccbe107c4bc3b6764c791b803b475eecf88666b2a3","sizeBytes":9783}],"approxSizeBytes":2066244493,"quantization":"4bit"},"availableVersions":["1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"granite4.2-8b-q4","name":"Granite 4.2 (8B, Q4)","description":"IBM's dense Granite 4.2 reasoning model at 8B parameters. Text-only, with native thinking, agentic coding, native tool calling, multilingual support, and a 128K context window. Q4 builds are suited to machines with 16GB+ usable memory.","tags":["ibm","reasoning","agentic","coding","tools","long-context","multilingual","open-weights","apple-silicon"],"maintainer":{"name":"IBM Granite","url":"https://huggingface.co/ibm-granite/granite-4.2-8b"},"license":"Apache-2.0","licenseClass":"open","licenseShortName":"Apache 2.0","minGezelVersion":"1.26238","version":"1.0.0","releasedAt":"2026-08-25T00:00:00Z","parameterSize":"8B","approxSizeBytes":5347917952,"supportsTools":true,"contextWindow":131072,"kvBytesPerTokenF16":163840,"upstream":"https://huggingface.co/ibm-granite/granite-4.2-8b","category":"reasoning","style":{"family":"granite","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","prompt.private-reasoning-guidance","prompt.tool-cookbook-condensed","mcp.compact-tool-schemas","mcp.relax-required-fields","mcp.default-missing-fields","fabrication.detect-past-tense-no-tools","fabrication.detect-claim-without-tool","prompt.retrieval-first","turn.preamble-folding","turn.ramble-detection","tools.mlx-grammar","prompt.prefer-writefile-edits","prompt.derive-by-execution"],"tuning":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":8192},"samplingWhenThinking":{"temperature":1,"topP":0.95},"reasoning":{"thinkingBudget":8192,"enableThinking":true},"profiles":{"thinking-general":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":8192},"reasoning":{"thinkingBudget":8192,"enableThinking":true}},"thinking-deep":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":16384},"reasoning":{"thinkingBudget":12288,"enableThinking":true}},"thinking-coding":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":16384},"reasoning":{"thinkingBudget":8192,"enableThinking":true}},"thinking-precise":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":8192,"seed":0},"reasoning":{"thinkingBudget":8192,"enableThinking":true}},"instruct":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":8192},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":8192},"reasoning":{"enableThinking":false}}}},"llamaCpp":{"huggingfaceRepo":"ibm-granite/granite-4.2-8b-GGUF","revision":"31239b3e4a93d1c2bc0e0d1160f711bf300cef05","filename":"granite-4.2-8b-Q4_K_M.gguf","sha256":"16a9369d0805f80b7377d25d87f937a90c05dc04ad79173a52001e42c9aab311","approxSizeBytes":5347917952,"quantization":"Q4_K_M"},"mlx":{"huggingfaceRepo":"lmstudio-community/granite-4.2-8b-MLX-4bit","revision":"1cfd523c66d94e2697af82cd968368d050166af4","files":[{"name":"chat_template.jinja","sha256":"f0ba43f79b3cabca5e5a7584c77aec92f49feae45cdf7779c87d9fc54cd90258","sizeBytes":9013},{"name":"config.json","sha256":"a1ee533ce70c3792b0281f9c7458ad4513ea3a9102e860f5da6f3f636e19c75c","sizeBytes":1187},{"name":"generation_config.json","sha256":"1b9baf0a7959d31d7fb58ff6b506c27d09a73d395cadccc7e6dd1d4b7e43fd9d","sizeBytes":207},{"name":"model.safetensors","sha256":"86a0c04a5deb24de6ada66a37c7373e3e37dbf2a138ed28bb03c212d331b6429","sizeBytes":4945853970},{"name":"model.safetensors.index.json","sha256":"e8d7bddce3c9ab993b8f4af8c390a10390c2966483f5391a808f9c6242e0c594","sizeBytes":65461},{"name":"tokenizer.json","sha256":"883975314d58743726347caaf2c32ac89afd5ad57222cffbc4f052f2ab27b2d7","sizeBytes":7153414},{"name":"tokenizer_config.json","sha256":"856442330f3066df1f922cccbe107c4bc3b6764c791b803b475eecf88666b2a3","sizeBytes":9783}],"approxSizeBytes":4953093035,"quantization":"4bit"},"availableVersions":["1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"laguna-s-2.1-118b-q4","name":"Laguna S 2.1 (118B-A8B, Q4)","description":"Poolside's Laguna S 2.1, a 118B-parameter Mixture-of-Experts model with about 8B active parameters per token, built for agentic coding and long-horizon software work. It supports native tool calling and interleaved reasoning between tool calls. Choose the official imatrix Q4_K_M GGUF (about 75GB) for llama.cpp, or the calibrated oQ4e MLX build (about 64GB) for native Apple Silicon inference on a 96GB-or-larger Mac. Gezel defaults to Poolside's quality-recommended 256K context window; the underlying checkpoint can be extended to 1M context with explicit YaRN overrides.","tags":["poolside","coding","agentic","tools","reasoning","long-context","moe","large","open-weights","apple-silicon"],"maintainer":{"name":"Poolside","url":"https://huggingface.co/poolside/Laguna-S-2.1"},"license":"OpenMDW-1.1","licenseClass":"open","licenseShortName":"OpenMDW 1.1","licenseUrl":"https://huggingface.co/poolside/Laguna-S-2.1/blob/main/LICENSE.md","minGezelVersion":"1.26227","version":"1.0.2","releasedAt":"2026-08-15T00:00:00Z","parameterSize":"118B","approxSizeBytes":96031829760,"supportsTools":true,"contextWindow":262144,"upstream":"https://huggingface.co/poolside/Laguna-S-2.1","category":"coding","style":{"family":"glm","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","prompt.private-reasoning-guidance","fabrication.detect-past-tense-no-tools","turn.preamble-folding","turn.ramble-detection","tools.mlx-grammar"],"tuning":{"sampling":{"temperature":0.7,"topP":0.95,"maxTokens":8192},"samplingWhenThinking":{"temperature":0.7,"topP":0.95},"reasoning":{"thinkingBudget":4096,"enableThinking":true},"profiles":{"thinking-general":{"sampling":{"temperature":0.7,"topP":0.95,"maxTokens":12288},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"thinking-coding":{"sampling":{"temperature":0.6,"topP":0.95,"maxTokens":16384},"reasoning":{"thinkingBudget":6144,"enableThinking":true}},"thinking-precise":{"sampling":{"temperature":0.4,"topP":0.9,"maxTokens":6144,"seed":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"instruct":{"sampling":{"temperature":0.7,"topP":0.95,"maxTokens":4096},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":8192},"reasoning":{"enableThinking":false}}}},"llamaCpp":{"huggingfaceRepo":"poolside/Laguna-S-2.1-GGUF","revision":"fc4e481289523cf7d0df668da6d1d391616141ca","filename":"laguna-s-2.1-Q4_K_M.gguf","sha256":"a8b55c75714ea73fd90ec85de5defdc0b8d88ca0ad2108343cdd8fc22f7583e4","approxSizeBytes":96031829760,"quantization":"Q4_K_M"},"mlx":{"huggingfaceRepo":"mlx-community/Laguna-S-2.1-oQ4e","revision":"d785a9349850807a34ac0ac1c22c66b718e77881","files":[{"name":"chat_template.jinja","sha256":"444819b8ad4612870827ac05b9147fe9e3344d3850cae8c2790898fc514099ff","sizeBytes":3961},{"name":"config.json","sha256":"de530f3a85f0dbef0b22c6e7caff51d21b6b75d1f04024b07947d103e22a630c","sizeBytes":106567},{"name":"generation_config.json","sha256":"81ff120c8c6739e2d0fc7a2829368b966fa2956938bc20393006ca3e800866a4","sizeBytes":479},{"name":"model-00001-of-00013.safetensors","sha256":"060e75728bc97e0659ee2294ad5ee29a36e3a94c514d2bc5276d7f178e2370fd","sizeBytes":5082945345},{"name":"model-00002-of-00013.safetensors","sha256":"f3751eadd95017b135e8cd44291a55bffd88c7deefa3fe7ec691b9e66b9f92bc","sizeBytes":5133833178},{"name":"model-00003-of-00013.safetensors","sha256":"f6095c47fbca034c6b83a05fac8f23e138059816cbe2d34b88601d34bbf3d8cc","sizeBytes":5133833188},{"name":"model-00004-of-00013.safetensors","sha256":"1e1f2502df93b1ac5f06d81522d0a2a2ca0ddb8842b8686941caf36fb2fdd202","sizeBytes":5133833222},{"name":"model-00005-of-00013.safetensors","sha256":"68d29552e4d763395081968a1ea020639168c1bfcd16cd140b1bfa1bf926ed7c","sizeBytes":5133833218},{"name":"model-00006-of-00013.safetensors","sha256":"4eb9afb24b47e73dc383ced9d89de273d9d8b4dd8ff6da3be2588834e6b77139","sizeBytes":5133833226},{"name":"model-00007-of-00013.safetensors","sha256":"7a72b8555831b05e54b222ef264f060c026d6dea04bec21e02b4ab2a901b79d7","sizeBytes":5133833236},{"name":"model-00008-of-00013.safetensors","sha256":"6f8cce69ae48076407c627a0a6e01c297a98a45ae6a05d34251b6f8a38c9a246","sizeBytes":5133833208},{"name":"model-00009-of-00013.safetensors","sha256":"15e76c2e5c1cdc6c97df0d0cea7e2b5619a9219fb145a8bd6e9faa584b8e7496","sizeBytes":5133833224},{"name":"model-00010-of-00013.safetensors","sha256":"f8d5d3a9b4328563fe273f0ea9471dc694897dadf055a7db5b82d1ae8bb818dc","sizeBytes":5133833218},{"name":"model-00011-of-00013.safetensors","sha256":"70e46864afd6fef184ef1dc4158e1c7d4f395615d988cc32b1b082020d30b50e","sizeBytes":5133833210},{"name":"model-00012-of-00013.safetensors","sha256":"ae943ae55c0b255d6194a728f2b8b3190ee31507f9c07b45f6e793b19ab58e2b","sizeBytes":5133833230},{"name":"model-00013-of-00013.safetensors","sha256":"3678e371f54756f19ac5f960880260c34b8fb97ca07fd8d7c089099ae6562559","sizeBytes":2566916620},{"name":"model.safetensors.index.json","sha256":"45709bf61be0398b4b34ed68845c80f8d2bab75f1f16d19e63c95e15571f0cc2","sizeBytes":190679},{"name":"special_tokens_map.json","sha256":"70cd3459fde61761e9440751a590e89a108c09b1803cc7727f5ad1ed1ea6122b","sizeBytes":214},{"name":"tokenizer.json","sha256":"809240f7a182cde859a4fc4ebc902e619a173d507e99304c1092aa04e7a6658e","sizeBytes":7287677},{"name":"tokenizer_config.json","sha256":"8103b5dd4baf13b38ee927370fbfeab2b1378457efaa233d1c5f0410c40dc9f9","sizeBytes":12978}],"approxSizeBytes":64129629878,"quantization":"oQ4e"},"availableVersions":["1.0.2","1.0.1","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"laguna-s-2.1-118b-q6","name":"Laguna S 2.1 (118B-A8B, Q6 MLX)","description":"Poolside's Laguna S 2.1 in a calibrated oQ6e MLX quantization for native Apple Silicon inference. The model has 118B total parameters with about 8B active per token and is built for agentic coding, long-horizon software work, native tool calling, and interleaved reasoning. This MLX-only build is about 92GB on disk, measured about 90GB peak at 64K context, and targets 128GB Macs. Gezel defaults to Poolside's quality-recommended 256K context window; the underlying checkpoint can be extended to 1M context with explicit YaRN overrides.","tags":["poolside","coding","agentic","tools","reasoning","long-context","moe","large","open-weights","apple-silicon"],"maintainer":{"name":"Poolside","url":"https://huggingface.co/poolside/Laguna-S-2.1"},"license":"OpenMDW-1.1","licenseClass":"open","licenseShortName":"OpenMDW 1.1","licenseUrl":"https://huggingface.co/poolside/Laguna-S-2.1/blob/main/LICENSE.md","minGezelVersion":"1.26227","version":"1.0.1","releasedAt":"2026-08-15T00:00:00Z","parameterSize":"118B","approxSizeBytes":92000000000,"supportsTools":true,"contextWindow":262144,"upstream":"https://huggingface.co/poolside/Laguna-S-2.1","category":"coding","style":{"family":"glm","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","prompt.private-reasoning-guidance","fabrication.detect-past-tense-no-tools","turn.preamble-folding","turn.ramble-detection","tools.mlx-grammar"],"tuning":{"sampling":{"temperature":0.7,"topP":0.95,"maxTokens":8192},"samplingWhenThinking":{"temperature":0.7,"topP":0.95},"reasoning":{"thinkingBudget":4096,"enableThinking":true},"profiles":{"thinking-general":{"sampling":{"temperature":0.7,"topP":0.95,"maxTokens":12288},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"thinking-coding":{"sampling":{"temperature":0.6,"topP":0.95,"maxTokens":16384},"reasoning":{"thinkingBudget":6144,"enableThinking":true}},"thinking-precise":{"sampling":{"temperature":0.4,"topP":0.9,"maxTokens":6144,"seed":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"instruct":{"sampling":{"temperature":0.7,"topP":0.95,"maxTokens":4096},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":8192},"reasoning":{"enableThinking":false}}}},"mlx":{"huggingfaceRepo":"mlx-community/Laguna-S-2.1-oQ6e","revision":"ec7a62ea672ddaf487384bce7093520e97656127","files":[{"name":"chat_template.jinja","sha256":"444819b8ad4612870827ac05b9147fe9e3344d3850cae8c2790898fc514099ff","sizeBytes":3961},{"name":"config.json","sha256":"54b4a72dafacf9df9091d4674c103bc7f60d822e59c680a7cb85417becfc64d4","sizeBytes":71357},{"name":"generation_config.json","sha256":"81ff120c8c6739e2d0fc7a2829368b966fa2956938bc20393006ca3e800866a4","sizeBytes":479},{"name":"model-00001-of-00019.safetensors","sha256":"9c4ae85da6cfbfc430882eb40e116c35ef00007c096c4039216a2a234a011a06","sizeBytes":5048917835},{"name":"model-00002-of-00019.safetensors","sha256":"b500001bb3fbbdda232c183523970eb0f38c616475c12728b1ff5df5c8bfdade","sizeBytes":5033168218},{"name":"model-00003-of-00019.safetensors","sha256":"74d46a48a614571e56f04a1135e4731e7b74954b2eee165a29a76804ccce92a1","sizeBytes":5033168202},{"name":"model-00004-of-00019.safetensors","sha256":"d4aca6b4a8236963929ca49c806c6ebf66f129f0274eec3ec29f8daa2d1292c0","sizeBytes":5033168200},{"name":"model-00005-of-00019.safetensors","sha256":"d178613bb91da16d0702e4c55a3f204b914aa87ec849f0284fc66d2dd3c1cfc1","sizeBytes":5033168225},{"name":"model-00006-of-00019.safetensors","sha256":"4b6b9bced366edae07b1635dc3c371d02fd6fc38070713a0546a0d6e38fa604c","sizeBytes":5033168230},{"name":"model-00007-of-00019.safetensors","sha256":"81baa5c2ef766e2e6b58aa370f2ed647b62556718cdd8dfc312fbb7351305154","sizeBytes":5033168222},{"name":"model-00008-of-00019.safetensors","sha256":"9bbc8236f09bf82bcf3d008f12d9a3a910c2ce0c387e78d0f0090d89dfdbff0b","sizeBytes":5033168228},{"name":"model-00009-of-00019.safetensors","sha256":"80f7a3b491ce469bf8e9659ffd5c98efa978a785c0e7ca05dbc6f58c2618895b","sizeBytes":5033168230},{"name":"model-00010-of-00019.safetensors","sha256":"26f35921be353b2294774b5f6e6a58f62c22411d7c47d7e3e884332c1daf2b81","sizeBytes":5033168226},{"name":"model-00011-of-00019.safetensors","sha256":"1b7c89212b8b7194c52efe21b9e3ee01bf14fc6f51547df47a4bd498a642545e","sizeBytes":5033168230},{"name":"model-00012-of-00019.safetensors","sha256":"52f47cd39a8a6b9acf086add059deeeae33d6c5293f6c45150dc75f2aafd4a76","sizeBytes":5033168230},{"name":"model-00013-of-00019.safetensors","sha256":"fc2fa934bbefaa00d0b8d1ad3185d482557d861b355388247ea3f87a458b25dd","sizeBytes":5033168232},{"name":"model-00014-of-00019.safetensors","sha256":"0c376d1871a47193f430fddde76c501043ac1fa683a66611b44149f5914a399a","sizeBytes":5033168236},{"name":"model-00015-of-00019.safetensors","sha256":"e5d7ec1efbef7a93f0790c5860a8dea59703700ec86702f071c85a1db7450e59","sizeBytes":5033168228},{"name":"model-00016-of-00019.safetensors","sha256":"843d385b2e99f6608631c9b3f42d3f080e26e4d204ca2ec539fe6cd2c60f7b43","sizeBytes":5033168232},{"name":"model-00017-of-00019.safetensors","sha256":"6c8e2bdbb72babb99ffd15252ae51495bb087df0dc9c94450572b50d4bb3e945","sizeBytes":5033168218},{"name":"model-00018-of-00019.safetensors","sha256":"4ecc87fc880407dcd0c9d86af1c83d32bd3c5611bb0b3ea29dab4de321f87f58","sizeBytes":5033168228},{"name":"model-00019-of-00019.safetensors","sha256":"28f27d6b9f5c3271bcbbbe53aa83005bf661d2e5c6d1f54e27652e5a173109a5","sizeBytes":1887438103},{"name":"model.safetensors.index.json","sha256":"714284a03a0b3b83c649e88cc9fbf0dd2f7e7cbd67827e7426fb45c75c9762f1","sizeBytes":190679},{"name":"special_tokens_map.json","sha256":"70cd3459fde61761e9440751a590e89a108c09b1803cc7727f5ad1ed1ea6122b","sizeBytes":214},{"name":"tokenizer.json","sha256":"809240f7a182cde859a4fc4ebc902e619a173d507e99304c1092aa04e7a6658e","sizeBytes":7287677},{"name":"tokenizer_config.json","sha256":"8103b5dd4baf13b38ee927370fbfeab2b1378457efaa233d1c5f0410c40dc9f9","sizeBytes":12978}],"approxSizeBytes":92507783098,"quantization":"oQ6e"},"availableVersions":["1.0.1","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"laguna-s-2.1-118b-q8","name":"Laguna S 2.1 (118B-A8B, Q8)","description":"Poolside's Laguna S 2.1, a 118B-parameter Mixture-of-Experts model with about 8B active parameters per token, built for agentic coding and long-horizon software work. It supports native tool calling and interleaved reasoning between tool calls. The official Q8_0 GGUF is about 128GB on disk, while the community MLX 8-bit conversion is about 125GB and runs natively on Apple Silicon. Both target larger-memory workstations; Q6 is the practical Laguna tier for a 128GB Mac. Gezel defaults to Poolside's quality-recommended 256K context window; the underlying checkpoint can be extended to 1M context with explicit YaRN overrides.","tags":["poolside","coding","agentic","tools","reasoning","long-context","moe","large","open-weights","apple-silicon"],"maintainer":{"name":"Poolside","url":"https://huggingface.co/poolside/Laguna-S-2.1"},"license":"OpenMDW-1.1","licenseClass":"open","licenseShortName":"OpenMDW 1.1","licenseUrl":"https://huggingface.co/poolside/Laguna-S-2.1/blob/main/LICENSE.md","minGezelVersion":"1.26227","version":"1.0.2","releasedAt":"2026-08-15T00:00:00Z","parameterSize":"118B","approxSizeBytes":128750823168,"supportsTools":true,"contextWindow":262144,"upstream":"https://huggingface.co/poolside/Laguna-S-2.1","category":"coding","style":{"family":"glm","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","prompt.private-reasoning-guidance","fabrication.detect-past-tense-no-tools","turn.preamble-folding","turn.ramble-detection","tools.mlx-grammar"],"tuning":{"sampling":{"temperature":0.7,"topP":0.95,"maxTokens":8192},"samplingWhenThinking":{"temperature":0.7,"topP":0.95},"reasoning":{"thinkingBudget":4096,"enableThinking":true},"profiles":{"thinking-general":{"sampling":{"temperature":0.7,"topP":0.95,"maxTokens":12288},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"thinking-coding":{"sampling":{"temperature":0.6,"topP":0.95,"maxTokens":16384},"reasoning":{"thinkingBudget":6144,"enableThinking":true}},"thinking-precise":{"sampling":{"temperature":0.4,"topP":0.9,"maxTokens":6144,"seed":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"instruct":{"sampling":{"temperature":0.7,"topP":0.95,"maxTokens":4096},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":8192},"reasoning":{"enableThinking":false}}}},"llamaCpp":{"huggingfaceRepo":"poolside/Laguna-S-2.1-GGUF","revision":"fc4e481289523cf7d0df668da6d1d391616141ca","filename":"laguna-s-2.1-Q8_0.gguf","sha256":"d946b221d69f2c5f87a986952bcd3cfb75831e5a6a2184e626e361663e1bfe2b","approxSizeBytes":128750823168,"quantization":"Q8_0"},"mlx":{"huggingfaceRepo":"Vontra/Laguna-S-2.1-MLX-8bit","revision":"b22cb31666ef6b5400a3c271a83e680499f24d73","files":[{"name":"chat_template.jinja","sha256":"2d3c724b3c2e9eb71fe9ccc5423ff268a370a8bfa89e9238b6de14fe000825c8","sizeBytes":3874},{"name":"config.json","sha256":"ab1a897c6f746f3884d3c9c23c89e49290ea0b752e4bc82d3d67695363cf8acf","sizeBytes":15759},{"name":"generation_config.json","sha256":"2deeac08584c9177028e108a994e37dffd06acf61ca429dc064f76fee52e2bea","sizeBytes":505},{"name":"model-00001-of-00024.safetensors","sha256":"a6071236c1018c6420088de8017723049a621e1826fc59e14d2a447a5a2e9ee7","sizeBytes":4918912786},{"name":"model-00002-of-00024.safetensors","sha256":"e3ad6a264165b579ef0e9f50003b0774683e4a5d44c0898bc96d785090a3b482","sizeBytes":5269620694},{"name":"model-00003-of-00024.safetensors","sha256":"6d1408c39b29e8f8da9cab266d6339eee3e4f8b2da0298d561dd2cb9dc1aca6f","sizeBytes":5289753118},{"name":"model-00004-of-00024.safetensors","sha256":"224a9902dace7b13a26bf632b81f0fe237c626ccc4b60ebe713fd92ee65802fe","sizeBytes":5269620770},{"name":"model-00005-of-00024.safetensors","sha256":"ab51e34e261f5f24c34b6f3c66ab73fa2e90ee2f84adf468be285ae3ed89a312","sizeBytes":5289753145},{"name":"model-00006-of-00024.safetensors","sha256":"75e7a2c66978f949f66a33066b48b4df09154683b926e334ee3aaa50ceb2168c","sizeBytes":5269620896},{"name":"model-00007-of-00024.safetensors","sha256":"a300396550270ab549d1937d06f30417935ba48686031613a40d6e419c994c5d","sizeBytes":5289753216},{"name":"model-00008-of-00024.safetensors","sha256":"e2d7e4baa5bf6ab6370903c007607ea9c67678942624ad7f407de433dbcc7122","sizeBytes":5269620902},{"name":"model-00009-of-00024.safetensors","sha256":"f46011b1ba7766e21a8f6d664f2db559b54dc6756a25f61485b94c5e589f6678","sizeBytes":5289753194},{"name":"model-00010-of-00024.safetensors","sha256":"bb4a638a64f15e753550ecda8ee953afc3ae7d7be92a0610db349d6381a307b7","sizeBytes":5269620878},{"name":"model-00011-of-00024.safetensors","sha256":"5d8401ab7462ce99e2d7de4dc4eb658ddbb4a2eecc658e3cf541e76e07114599","sizeBytes":5289753186},{"name":"model-00012-of-00024.safetensors","sha256":"0f5904a9da592e74db1358b7142264b302dd2f671a44fbb52033b7d33184188e","sizeBytes":5269620852},{"name":"model-00013-of-00024.safetensors","sha256":"41e74bda56d658c7c098e6fe044fd5444c1b85ad6602015fb2a30feea9ad7002","sizeBytes":5289753166},{"name":"model-00014-of-00024.safetensors","sha256":"1b4f7a55df54b8af0b06e47eb5693ff0d6827a579e073725a111c162fd372ef8","sizeBytes":5269620804},{"name":"model-00015-of-00024.safetensors","sha256":"dfc16dbd991c04a3cf6b93c5247e87a298dec25105a74745bb583d471ff3d5fb","sizeBytes":5289753254},{"name":"model-00016-of-00024.safetensors","sha256":"4b678f34d14445cb6a82689deea26b5b064d3a593f823dc716c2e60db59d9249","sizeBytes":5269620898},{"name":"model-00017-of-00024.safetensors","sha256":"6f746b737ea0254926bbd58b6305141c7d77aa7ed98c887376136be40eb5be38","sizeBytes":5289753198},{"name":"model-00018-of-00024.safetensors","sha256":"75a419263dee375f488e7746e36d5e6d40c07ff9b224b9a59320070efa84acfe","sizeBytes":5269620842},{"name":"model-00019-of-00024.safetensors","sha256":"5e8ac15f5ac2641707c330b1e9a30f3d48fc7636b51c456e8d5930b5230bfa7c","sizeBytes":5289753210},{"name":"model-00020-of-00024.safetensors","sha256":"edcd461565e4ae6ba0c6717e0689876e3325841bbefd1b30fbe130170c671f46","sizeBytes":5269620860},{"name":"model-00021-of-00024.safetensors","sha256":"3bf92e1f72ef570223f7e5864b103d60808e98379d83bfb3907a7b0c28b52717","sizeBytes":5289753130},{"name":"model-00022-of-00024.safetensors","sha256":"2f1b102b6b455e36dfabea3e908fdfa52f972a2ded7f2496b4fe228ef3760b13","sizeBytes":5269620836},{"name":"model-00023-of-00024.safetensors","sha256":"d44e48e98f11197b4f0558e5e079f019fd9332294d6f3af634d6ab1ceb2c0cdd","sizeBytes":5289753254},{"name":"model-00024-of-00024.safetensors","sha256":"35113954b195224343c057948a1beb795ae60652307566fc497fcfa512c4771b","sizeBytes":3838111062},{"name":"model.safetensors.index.json","sha256":"bde81b6ebdd0f3ed4f304a073020b5277542090854cec639dbdec0f46357a551","sizeBytes":178064},{"name":"tokenizer.json","sha256":"ff04405d2d1e1b6c77a8be25f0fce9371003a558b055c23248d9e8ca1d956d92","sizeBytes":7287678},{"name":"tokenizer_config.json","sha256":"fb4815e0e871cd4cb1cffa77722ce798df97db11da0481489b8da4d76142596e","sizeBytes":460}],"approxSizeBytes":124917624491,"quantization":"8bit"},"availableVersions":["1.0.2","1.0.1","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"lfm2.5-2.6b-q4","name":"LFM2.5 (2.6B, Q4)","description":"Liquid AI's LFM2.5 at 2.6B parameters. A hybrid convolution-attention design built for on-device speed — light on memory, quick even on modest hardware, with integrated reasoning, native tool calling, and a 128K context window.","tags":["liquid-ai","small","tools"],"maintainer":{"name":"Liquid AI","url":"https://huggingface.co/LiquidAI/LFM2.5-2.6B"},"license":"LFM Open License v1.0","licenseClass":"custom-restricted","licenseShortName":"LFM Open 1.0","minGezelVersion":"1.26227","version":"1.0.1","releasedAt":"2026-08-15T00:00:00Z","parameterSize":"2.6B","approxSizeBytes":1674454848,"supportsTools":true,"contextWindow":128000,"upstream":"https://huggingface.co/LiquidAI/LFM2.5-2.6B","category":"general","style":{"family":"other","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","prompt.private-reasoning-guidance","prompt.tool-cookbook-full","fabrication.detect-past-tense-no-tools","mcp.compact-tool-schemas","mcp.relax-required-fields","mcp.default-missing-fields",{"id":"turn.continuation-budget","config":{"count":4}},"turn.ollama-num-predict-bumped","turn.preamble-folding","turn.ramble-detection","prompt.prefer-writefile-edits","prompt.derive-by-execution",{"id":"prompt.native-tool-call-format","config":{"example":"<|tool_call_start|>[write_file(path='notes.md', content='hello')]<|tool_call_end|>"}}],"tuning":{"sampling":{"temperature":0.1,"topK":50,"repetitionPenalty":1.1},"reasoning":{"thinkingBudget":2048,"enableThinking":true},"profiles":{"thinking-general":{"sampling":{"temperature":0.1,"topP":0.95,"topK":50,"repetitionPenalty":1.1}},"thinking-coding":{"sampling":{"temperature":0.1,"topP":0.9,"topK":50,"repetitionPenalty":1.1}},"thinking-precise":{"sampling":{"temperature":0.05,"topP":0.9,"topK":20,"repetitionPenalty":1.1}},"instruct":{"sampling":{"temperature":0.1,"topP":0.95,"topK":50,"repetitionPenalty":1.1}},"creative":{"sampling":{"temperature":0.3,"topP":0.95,"topK":50,"repetitionPenalty":1.05}}}},"llamaCpp":{"huggingfaceRepo":"LiquidAI/LFM2.5-2.6B-GGUF","revision":"b22e29ebf6249a8c9fcdda36914743e9980595c4","filename":"LFM2.5-2.6B-Q4_K_M.gguf","sha256":"79fdf00351b46cf26f020aead28d01889886be87c55fa0eb907e6f9b00bfee14","approxSizeBytes":1674454848,"quantization":"Q4_K_M"},"mlx":{"huggingfaceRepo":"mlx-community/LFM2.5-2.6B-4bit","revision":"6b421051711933cdbad5b63a79f1c03ca782dc3b","files":[{"name":"chat_template.jinja","sha256":"ea663864491de7ade391839479860ca95541f892f72665c73251fbd4643b1bef","sizeBytes":5443},{"name":"config.json","sha256":"183f59ddf55580609fbc271a2e4025317b4a48daec2c43a9db61d7a3985ba2e3","sizeBytes":2377},{"name":"generation_config.json","sha256":"e08c9a83f4bfe64468c9671a2b69b60549728e2a9481387f3555471f64e958bc","sizeBytes":306},{"name":"model.safetensors","sha256":"c60882ad5ae00906e17b6fe14d1a86d6f63d4e2e2782ea0dced24bb97bef9766","sizeBytes":1517625850},{"name":"model.safetensors.index.json","sha256":"1c0460f5ce5e990b60ab83cdd446932738a327847fba5069dbb8cf92c0d7f389","sizeBytes":50943},{"name":"tokenizer.json","sha256":"695be7802a0e4b8a81048f0ff5ebb7fc811a0ba5a6be63dbb24deb5a81096f41","sizeBytes":17905598},{"name":"tokenizer_config.json","sha256":"11f1de897317b489dd09199284528382eeb17f566398b16e2039bb2266d26b09","sizeBytes":363}],"approxSizeBytes":1535590880,"quantization":"4bit"},"availableVersions":["1.0.1","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"llama3.2-3b-q4","name":"Llama 3.2 (3B, Q4)","description":"Meta's 3B chat model. Small enough to run on modest hardware, sharp enough to be a useful default.","tags":["meta","small"],"maintainer":{"name":"Meta","url":"https://ollama.com/library/llama3.2"},"license":"Llama 3.2 Community License","licenseClass":"custom-restricted","licenseShortName":"Llama 3.2 Community","minGezelVersion":"1.26227","version":"1.1.1","releasedAt":"2026-08-15T00:00:00Z","parameterSize":"3B","approxSizeBytes":2019377696,"supportsTools":true,"contextWindow":128000,"upstream":"https://ollama.com/library/llama3.2","category":"general","style":{"family":"llama","reasoningFormat":"none","toolCallFormat":"function-call"},"behaviors":["fabrication.detect-past-tense-no-tools","mcp.compact-tool-schemas","mcp.relax-required-fields","mcp.default-missing-fields"],"tuning":{"sampling":{"temperature":0.6,"topP":0.9},"profiles":{"thinking-general":{"sampling":{"temperature":0.5,"topP":0.9,"topK":40,"repetitionPenalty":1.1}},"thinking-coding":{"sampling":{"temperature":0.4,"topP":0.9,"topK":40,"repetitionPenalty":1.1}},"thinking-precise":{"sampling":{"temperature":0.2,"topP":0.9,"topK":20,"repetitionPenalty":1.1}},"instruct":{"sampling":{"temperature":0.6,"topP":0.9,"topK":40,"repetitionPenalty":1.1}},"creative":{"sampling":{"temperature":0.9,"topP":0.95,"topK":50,"repetitionPenalty":1.05}}}},"ollama":{"tag":"llama3.2"},"llamaCpp":{"huggingfaceRepo":"bartowski/Llama-3.2-3B-Instruct-GGUF","revision":"5ab33fa94d1d04e903623ae72c95d1696f09f9e8","filename":"Llama-3.2-3B-Instruct-Q4_K_M.gguf","sha256":"6c1a2b41161032677be168d354123594c0e6e67d2b9227c84f296ad037c728ff","approxSizeBytes":2019377696,"quantization":"Q4_K_M"},"mlx":{"huggingfaceRepo":"mlx-community/Llama-3.2-3B-Instruct-4bit","revision":"7f0dc925e0d0afb0322d96f9255cfddf2ba5636e","files":[{"name":"config.json","sha256":"c546925585e48f43890d9dc5150df4fec73dd3780d92961c5ace451934cc4cd6","sizeBytes":1122},{"name":"model.safetensors","sha256":"d75e1ee0ea653cc5b76191ec934c7c0d568e94d4e47846619f1f4bc715b7b265","sizeBytes":1807496278},{"name":"model.safetensors.index.json","sha256":"2ef31fa0b9dcda01f87835851d5e1d5a39ab6258ae618af6ea864c3747e556e4","sizeBytes":45720},{"name":"special_tokens_map.json","sha256":"6f38c73729248f6c127296386e3cdde96e254636cc58b4169d3fd32328d9a8ec","sizeBytes":296},{"name":"tokenizer.json","sha256":"6b9e4e7fb171f92fd137b777cc2714bf87d11576700a1dcd7a399e7bbe39537b","sizeBytes":17209920},{"name":"tokenizer_config.json","sha256":"022d5ae3df4737998ab97d8f31ac2bcb4c06dd8ebe5a8aba2b4aceef1e5ea7d3","sizeBytes":54558}],"approxSizeBytes":1824807894,"quantization":"4bit"},"availableVersions":["1.1.1","1.1.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"mistral-7b-q4","name":"Mistral 7B Instruct (Q4)","description":"Mistral AI's retired 7B Instruct v0.3 model, retained for compatibility with existing installs. Prefer a current small model for new work.","tags":["mistral","tools","retired"],"maintainer":{"name":"Mistral AI","url":"https://ollama.com/library/mistral"},"license":"Apache-2.0","licenseClass":"open","licenseShortName":"Apache 2.0","minGezelVersion":"1.26227","version":"1.1.1","releasedAt":"2026-08-15T00:00:00Z","parameterSize":"7B","approxSizeBytes":4372812000,"supportsTools":true,"contextWindow":32768,"upstream":"https://ollama.com/library/mistral","category":"general","style":{"family":"mistral","reasoningFormat":"none","toolCallFormat":"function-call"},"behaviors":["fabrication.detect-past-tense-no-tools","fabrication.detect-claim-without-tool","prompt.tool-cookbook-condensed","turn.preamble-folding","turn.ramble-detection","provider.flatten-tool-transcript","mcp.compact-tool-schemas","mcp.relax-required-fields","mcp.default-missing-fields"],"tuning":{"sampling":{"temperature":0.7,"topP":0.95,"maxTokens":8192,"repetitionPenalty":1.1,"repetitionContext":20},"engine":{"llamaCpp":{"chatTemplate":"{{ bos_token }}\n{% if tools %}\n{{ '[AVAILABLE_TOOLS] ' + (tools | tojson) + ' [/AVAILABLE_TOOLS]' }}\n{% endif %}\n{% for message in messages %}\n{% if message['role'] == 'system' %}\n{{ message['content'] }}\n{% elif message['role'] == 'user' %}\n{{ '[INST] ' + message['content'] + ' [/INST]' }}\n{% elif message['role'] == 'assistant' %}\n{% if message.get('tool_calls') %}\n{{ '[TOOL_CALLS] ' + (message['tool_calls'] | tojson) }}\n{% else %}\n{{ message['content'] + eos_token }}\n{% endif %}\n{% elif message['role'] == 'tool' %}\n{{ '[TOOL_RESULTS] ' + message['content'] + ' [/TOOL_RESULTS]' }}\n{% endif %}\n{% endfor %}"}},"profiles":{"thinking-general":{"sampling":{"temperature":0.6,"topP":0.9,"topK":40,"maxTokens":8192,"repetitionPenalty":1.1}},"thinking-coding":{"sampling":{"temperature":0.4,"topP":0.9,"topK":40,"maxTokens":8192,"repetitionPenalty":1.1}},"thinking-precise":{"sampling":{"temperature":0.2,"topP":0.9,"topK":20,"maxTokens":4096,"seed":0,"repetitionPenalty":1.1}},"instruct":{"sampling":{"temperature":0.7,"topP":0.95,"topK":40,"maxTokens":8192,"repetitionPenalty":1.1}},"creative":{"sampling":{"temperature":0.9,"topP":0.95,"topK":50,"maxTokens":8192,"repetitionPenalty":1.05}}}},"ollama":{"tag":"mistral:7b"},"llamaCpp":{"huggingfaceRepo":"bartowski/Mistral-7B-Instruct-v0.3-GGUF","revision":"61fd4167fff3ab01ee1cfe0da183fa27a944db48","filename":"Mistral-7B-Instruct-v0.3-Q4_K_M.gguf","sha256":"1270d22c0fbb3d092fb725d4d96c457b7b687a5f5a715abe1e818da303e562b6","approxSizeBytes":4372812000,"quantization":"Q4_K_M"},"mlx":{"huggingfaceRepo":"mlx-community/Mistral-7B-Instruct-v0.3-4bit","revision":"a4b8f870474b0eb527f466a03fbc187830d271f5","files":[{"name":"config.json","sha256":"efc145d2f53d6d6ef2639be0556b4ecf6faac6cf8a7199ad2b7bb5ebcf443bdd","sizeBytes":721},{"name":"model.safetensors","sha256":"d7182d886f93a9efa73d6d556ee33ffe839a4e09e15965eeef46f295ab5b503d","sizeBytes":4077480215},{"name":"model.safetensors.index.json","sha256":"525940738b16d210fdfd692a24752d050c15a50cbe208dd82b06204d640d687b","sizeBytes":52381},{"name":"special_tokens_map.json","sha256":"6fa06efa2785e450051989a6f8fb4416b10149ded485ddd3f127a40734f5cfd0","sizeBytes":414},{"name":"tokenizer.json","sha256":"e553af6fff7d7ad76e830608b218c5c0b0822998d5a1a96099a74cd3c1cb1a49","sizeBytes":1961548},{"name":"tokenizer.model","sha256":"37f00374dea48658ee8f5d0f21895b9bc55cb0103939607c8185bfd1c6ca1f89","sizeBytes":587404},{"name":"tokenizer_config.json","sha256":"e8fbcfef34d855dba2c7f1d91a2c5470cf493d00ecfd06488ce21e45325bc8ae","sizeBytes":138039}],"approxSizeBytes":4080220722,"quantization":"4bit"},"availableVersions":["1.1.1","1.1.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"mistral-medium-3.5-128b-q4","name":"Mistral Medium 3.5 (128B, Q4)","description":"Mistral AI's frontier dense 128B model with configurable reasoning (instant or chain-of-thought via `reasoning_effort`). Native function-calling, 256K context. Workstation-tier on-device — needs ~80GB of usable memory for Q4_K_M; an MLX 4-bit build is available for Apple Silicon Mac Studio-class hardware. License is a Modified MIT with a revenue carve-out — free for commercial and non-commercial use unless the licensee company exceeds Mistral's revenue threshold.","tags":["mistral","reasoning","tools","large","revenue-limited"],"maintainer":{"name":"Mistral AI","url":"https://huggingface.co/mistralai/Mistral-Medium-3.5-128B"},"license":"MIT-Modified","licenseClass":"custom-restricted","licenseShortName":"MIT-Modified","minGezelVersion":"1.26227","version":"1.0.1","releasedAt":"2026-08-15T00:00:00Z","parameterSize":"128B","approxSizeBytes":74897139136,"supportsTools":true,"contextWindow":262144,"upstream":"https://huggingface.co/mistralai/Mistral-Medium-3.5-128B","category":"reasoning","style":{"family":"mistral","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","prompt.private-reasoning-guidance","fabrication.detect-past-tense-no-tools","turn.preamble-folding","provider.flatten-tool-transcript"],"tuning":{"sampling":{"temperature":0.7,"topP":0.95,"topK":64,"maxTokens":8192,"repetitionPenalty":1.05,"repetitionContext":20},"reasoning":{"thinkingBudget":4096,"enableThinking":true,"templateKwargs":{"reasoning_effort":"high"}},"profiles":{"thinking-general":{"sampling":{"temperature":0.7,"topP":0.95,"maxTokens":8192},"reasoning":{"thinkingBudget":4096,"enableThinking":true,"templateKwargs":{"reasoning_effort":"high"}}},"thinking-coding":{"sampling":{"temperature":0.7,"topP":0.95,"maxTokens":16384},"reasoning":{"thinkingBudget":4096,"enableThinking":true,"templateKwargs":{"reasoning_effort":"high"}}},"thinking-precise":{"sampling":{"temperature":0.4,"topP":0.95,"maxTokens":8192,"seed":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true,"templateKwargs":{"reasoning_effort":"high"}}},"instruct":{"sampling":{"temperature":0.1,"topP":1,"maxTokens":4096},"reasoning":{"enableThinking":false,"templateKwargs":{"reasoning_effort":"none"}}},"creative":{"sampling":{"temperature":0.7,"topP":1,"maxTokens":8192},"reasoning":{"enableThinking":false,"templateKwargs":{"reasoning_effort":"none"}}}}},"llamaCpp":{"huggingfaceRepo":"unsloth/Mistral-Medium-3.5-128B-GGUF","revision":"c8f5b1477e1b22cd2d819157d450f001f7047298","shards":[{"name":"Q4_K_M/Mistral-Medium-3.5-128B-Q4_K_M-00001-of-00003.gguf","sha256":"94bf2dd90d80f41b1dfb1f94b569d11fd78fd302a79ae9fdf828f8082d1dfeaa","sizeBytes":7875456},{"name":"Q4_K_M/Mistral-Medium-3.5-128B-Q4_K_M-00002-of-00003.gguf","sha256":"8396392f4b9eafac69e59355b569b6603f42d103505988e26939db7f5bfecb95","sizeBytes":49927945056},{"name":"Q4_K_M/Mistral-Medium-3.5-128B-Q4_K_M-00003-of-00003.gguf","sha256":"3f4ddc0284d522e6f1a020eaa731eaf851d6708a26431773de7bba504227c2e5","sizeBytes":24961318624}],"approxSizeBytes":74897139136,"quantization":"Q4_K_M"},"mlx":{"huggingfaceRepo":"mlx-community/Mistral-Medium-3.5-128B-4bit","revision":"5a7b6b72ca9eb2324a90bdb5e6079789dae68348","files":[{"name":"chat_template.jinja","sha256":"07ef40663bd181457c9c2a823296c83b33dc4f09e5d5f11478c219f7fb4f5633","sizeBytes":13479},{"name":"config.json","sha256":"915a6627d7cef04adf8efbb7c8befa1f09833d038eeddd80958aa88f5ae5dabb","sizeBytes":2127},{"name":"consolidated.safetensors.index.json","sha256":"abf847cd7a832d633fc800945dabf54fad3fca04a853c7d53eefa1e9b90fd8d0","sizeBytes":217908},{"name":"generation_config.json","sha256":"a107bf29bb85bd142694b293f41f5984176c598c8c3a3bc47f1f5ac8008bf89e","sizeBytes":131},{"name":"model-00001-of-00015.safetensors","sha256":"595e23a7aaf89c392165e653cb8d4cf862aa596f6cbfb1d03ed671330f72d0de","sizeBytes":5356508226},{"name":"model-00002-of-00015.safetensors","sha256":"59db0909274c1464a058fb6d98ba5ed39280bf96ed34f81867b27351e1c9154d","sizeBytes":5368448119},{"name":"model-00003-of-00015.safetensors","sha256":"91e857ebe77e1020f7e90742ee643290f71a67cccd56ba81250daeb2e2876e64","sizeBytes":5263167745},{"name":"model-00004-of-00015.safetensors","sha256":"dfa77b77d40ff44aa27a8be3d1a611e177a9e29b7fcf47d99959643b115bb435","sizeBytes":5252157665},{"name":"model-00005-of-00015.safetensors","sha256":"0b62abf4d755c9a882e513f74cfebcffb7cce94fe6746aff4912eb411174a962","sizeBytes":5365403842},{"name":"model-00006-of-00015.safetensors","sha256":"fc241be9252defbe6bd44c1ec3c2c1cc7e3cbfef3c710025944aa45c91e63477","sizeBytes":5351247306},{"name":"model-00007-of-00015.safetensors","sha256":"95ba57e62c4979b6dcc23dc4d4d199c7ac6c71b5f9a96d20ebf99e231202fe36","sizeBytes":5252108242},{"name":"model-00008-of-00015.safetensors","sha256":"574edc0a63b23874258610a132a69c648520dbd8db2a6a68929ead73872c8d67","sizeBytes":5252157663},{"name":"model-00009-of-00015.safetensors","sha256":"dab1076222d40b7777d8fe09285cb804188ad8a10af1d5232ba19b842d34cec3","sizeBytes":5252157629},{"name":"model-00010-of-00015.safetensors","sha256":"1c7836f1b077dbffa6a54a3458dd66879f343f4f8e648d74e7f21e2642ecf48c","sizeBytes":5365403830},{"name":"model-00011-of-00015.safetensors","sha256":"13402c3ceccea8af794bec72d841885c7f63a7fba534a1b9c6d7f722d028c7d5","sizeBytes":5351247296},{"name":"model-00012-of-00015.safetensors","sha256":"b2f988520b06cc34a9f9b0c4f71b1cc0fbd465b7c45a20ead3911fe1ca434d5a","sizeBytes":5252108278},{"name":"model-00013-of-00015.safetensors","sha256":"97f3bb3f7b2486db4d4912d5a3620b5ae8d34b8f55ce23c17b7a553c19dc6a1f","sizeBytes":5252157667},{"name":"model-00014-of-00015.safetensors","sha256":"7a1f12144046d582ff6997eeefd29f025060586f5cf23880be3416bb630adce5","sizeBytes":5252157631},{"name":"model-00015-of-00015.safetensors","sha256":"e03cd427f534273d586bad3d9f7ff24d3eb838572dc5be7bc4bc98cdeba86d92","sizeBytes":3815843471},{"name":"model.safetensors.index.json","sha256":"7dd3ad9ef87bae38057d528bd92342bd6dadae4112113c2b55c8ee6ef67a85b4","sizeBytes":256576},{"name":"processor_config.json","sha256":"c64dadda906c723a428eedfe6263485a343c35adb64d24295a9b408c372aba31","sizeBytes":661},{"name":"tokenizer.json","sha256":"2ba5b3330fd84d5376fcca797cfb3b42eee6241ce23e3271e6fb2a115a8751bd","sizeBytes":17077420},{"name":"tokenizer_config.json","sha256":"776dd712367ab3da3e79c5008c6141b1f8912c74310410c4ed49827299b856d1","sizeBytes":21190}],"approxSizeBytes":78019864102,"quantization":"4bit"},"availableVersions":["1.0.1","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"muse-glimmer-30b-q4","name":"Muse Glimmer (30B, Q4)","description":"Meta Superintelligence Labs' Muse Glimmer at 30B parameters, distilled from the larger Muse Spark and built for long-horizon tool use on everyday hardware. Multimodal (text + image), 131K context, native tool calling, and adjustable reasoning effort. Meta's own build, sized for machines with 24GB+ memory.","tags":["meta","agentic","multimodal","vision","tools","long-context","reasoning"],"maintainer":{"name":"Meta Superintelligence Labs","url":"https://huggingface.co/meta-models/Muse-Glimmer-30B"},"license":"Apache-2.0","licenseClass":"open","licenseShortName":"Apache 2.0","minGezelVersion":"1.26227","version":"1.0.2","releasedAt":"2026-08-23T00:00:00Z","parameterSize":"30B","approxSizeBytes":16756681056,"supportsTools":true,"contextWindow":131072,"upstream":"https://huggingface.co/meta-models/Muse-Glimmer-30B","category":"general","style":{"family":"muse","reasoningFormat":"channel","toolCallFormat":"function-call"},"tuning":{"sampling":{"temperature":1,"topP":0.95,"topK":64,"maxTokens":8192},"reasoning":{"thinkingBudget":4096,"enableThinking":true,"templateKwargs":{"reasoning_strength":"high"}},"profiles":{"thinking-general":{"sampling":{"temperature":1,"topP":0.95,"topK":64,"maxTokens":8192},"reasoning":{"enableThinking":true,"templateKwargs":{"reasoning_strength":"high"}}},"thinking-coding":{"sampling":{"temperature":1,"topP":0.95,"topK":64,"maxTokens":16384},"reasoning":{"enableThinking":true,"templateKwargs":{"reasoning_strength":"xhigh"}}},"thinking-precise":{"sampling":{"temperature":0.6,"topP":0.9,"topK":64,"maxTokens":8192},"reasoning":{"enableThinking":true,"templateKwargs":{"reasoning_strength":"high"}}},"instruct":{"sampling":{"temperature":0.7,"topP":0.95,"topK":64,"maxTokens":4096},"reasoning":{"templateKwargs":{"reasoning_strength":"low"}}},"creative":{"sampling":{"temperature":1.1,"topP":0.95,"topK":64,"maxTokens":8192},"reasoning":{"templateKwargs":{"reasoning_strength":"low"}}}}},"llamaCpp":{"huggingfaceRepo":"meta-models/Muse-Glimmer-30B-GGUF","revision":"93769bc7ab5ad1e9cd22d857e3138cf5d977ae81","filename":"muse-glimmer-30B-kquant-17gb.gguf","sha256":"7e9b74b7c8875e9e265695df9613bf6290f2392e479ce740495a129019c488d8","approxSizeBytes":16756681056,"quantization":"Q4_K_M","mmproj":{"filename":"mmproj-kquant.gguf","sha256":"f48b452316f9b213758e8659444029b961a24a07f99a1abb2a9f88b06f7c00c6","sizeBytes":1400328928}},"availableVersions":["1.0.2","1.0.1","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"nemotron3.5-lightning-30b-q4","name":"Nemotron 3.5 Lightning (30B-A3B, Q4)","description":"NVIDIA's Nemotron 3.5 Lightning at 30B parameters — text-only, with native reasoning, native tool calling, and a 256K context window. Capable-tier on-device option: about 25GB of memory on most machines, about 18GB on Apple Silicon.","tags":["nvidia","reasoning","agentic","coding","tools","long-context","moe","hybrid","mamba","open-weights","apple-silicon"],"maintainer":{"name":"NVIDIA","url":"https://huggingface.co/nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16"},"license":"OpenMDW-1.1","licenseClass":"open","licenseShortName":"OpenMDW 1.1","licenseUrl":"https://huggingface.co/nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16/blob/main/LICENSE","minGezelVersion":"1.26227","version":"1.0.1","releasedAt":"2026-08-15T00:00:00Z","parameterSize":"30B","approxSizeBytes":25430738944,"supportsTools":true,"contextWindow":262144,"kvBytesPerTokenF16":6144,"upstream":"https://huggingface.co/nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16","category":"reasoning","style":{"family":"nemotron","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","prompt.private-reasoning-guidance","prompt.tool-cookbook-condensed","mcp.compact-tool-schemas","fabrication.detect-past-tense-no-tools","prompt.retrieval-first","prompt.workspace-gestalt","turn.preamble-folding","turn.ramble-detection","tools.mlx-grammar"],"tuning":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":16384},"samplingWhenThinking":{"temperature":1,"topP":0.95},"reasoning":{"thinkingBudget":8192,"enableThinking":true},"profiles":{"thinking-general":{"sampling":{"temperature":0.6,"topP":0.95,"maxTokens":16384},"reasoning":{"thinkingBudget":8192,"enableThinking":true}},"thinking-coding":{"sampling":{"temperature":0.6,"topP":0.95,"maxTokens":32768},"reasoning":{"thinkingBudget":12288,"enableThinking":true}},"thinking-precise":{"sampling":{"temperature":0.6,"topP":0.9,"maxTokens":8192,"seed":0},"reasoning":{"thinkingBudget":6144,"enableThinking":true}},"instruct":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":8192},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":16384},"reasoning":{"enableThinking":false}}}},"llamaCpp":{"huggingfaceRepo":"ggml-org/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-GGUF","revision":"88d7ce0b0fa385c5108866ce5d33690927531a37","filename":"NVIDIA-Nemotron-3.5-Lightning-30B-A3B-Q4_K_M.gguf","sha256":"6110e2e2e6cd324e6ee69ddced5a6b34fad6c94ca9827222a1e420fb92e3c90b","approxSizeBytes":25430738944,"quantization":"Q4_K_M"},"mlx":{"huggingfaceRepo":"mlx-community/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-4bit","revision":"55ac8c89261109b36c04371cd3f479a4594208c8","files":[{"name":"chat_template.jinja","sha256":"58933db77d3099b4f78c55a38347a72e1ea05b97d6bd8f38775303dc0194e0a9","sizeBytes":9867},{"name":"config.json","sha256":"2d4bdc543efd8ccd68fccbf1231b1d1216ab2a0482229ea5638d448127973b27","sizeBytes":2932},{"name":"generation_config.json","sha256":"0ed94823ae737b507aef6af01e837041b7aa2fb0306793a310cd201d89a31ff4","sizeBytes":210},{"name":"model-00001-of-00004.safetensors","sha256":"12e2ba8a7f0990b7e34ddb25cf4043fe39b105215fe61a0b7dc1447be6b247b3","sizeBytes":5118631442},{"name":"model-00002-of-00004.safetensors","sha256":"a095b11193a9d58e2c67c83bc2aff0eedde8f76b77ff8ee4781fe08f6c3f5363","sizeBytes":5291568433},{"name":"model-00003-of-00004.safetensors","sha256":"c55808e0cf33a6b957d34ab57caf4185c4aed49c6ef15c7c69683e7af7e892cc","sizeBytes":5291568429},{"name":"model-00004-of-00004.safetensors","sha256":"9c541daef892060fffb831afb9e20251ff18c492df7bacd0bfee4d8e43124d89","sizeBytes":2073657055},{"name":"model.safetensors.index.json","sha256":"4c12ae32746441ec65e94d8cf312462ac10ab0d3c80513bba3d1c1ca3f2ed9ca","sizeBytes":65410},{"name":"tokenizer.json","sha256":"623c34567aebb18582765289fbe23d901c62704d6518d71866e0e58db892b5b7","sizeBytes":17077484},{"name":"tokenizer_config.json","sha256":"ec380f0a6c0c2e294eb2435f5ec521fb2121cfc970e6ebf023d06829714a4eaa","sizeBytes":430}],"approxSizeBytes":17792581692,"quantization":"4bit"},"availableVersions":["1.0.1","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"nemotron3.5-lightning-30b-q8","name":"Nemotron 3.5 Lightning (30B-A3B, Q8)","description":"NVIDIA's Nemotron 3.5 Lightning at 30B parameters — text-only, with native reasoning, native tool calling, and a 256K context window. 8-bit quantization for higher fidelity than the Q4 build, at roughly a third more memory (about 35GB, or 34GB on Apple Silicon).","tags":["nvidia","reasoning","agentic","coding","tools","long-context","moe","hybrid","mamba","open-weights","apple-silicon"],"maintainer":{"name":"NVIDIA","url":"https://huggingface.co/nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16"},"license":"OpenMDW-1.1","licenseClass":"open","licenseShortName":"OpenMDW 1.1","licenseUrl":"https://huggingface.co/nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16/blob/main/LICENSE","minGezelVersion":"1.26227","version":"1.0.1","releasedAt":"2026-08-15T00:00:00Z","parameterSize":"30B","approxSizeBytes":35004642304,"supportsTools":true,"contextWindow":262144,"kvBytesPerTokenF16":6144,"upstream":"https://huggingface.co/nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16","category":"reasoning","style":{"family":"nemotron","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","prompt.private-reasoning-guidance","prompt.tool-cookbook-condensed","mcp.compact-tool-schemas","fabrication.detect-past-tense-no-tools","prompt.retrieval-first","prompt.workspace-gestalt","turn.preamble-folding","turn.ramble-detection","tools.mlx-grammar"],"tuning":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":16384},"samplingWhenThinking":{"temperature":1,"topP":0.95},"reasoning":{"thinkingBudget":8192,"enableThinking":true},"profiles":{"thinking-general":{"sampling":{"temperature":0.6,"topP":0.95,"maxTokens":16384},"reasoning":{"thinkingBudget":8192,"enableThinking":true}},"thinking-coding":{"sampling":{"temperature":0.6,"topP":0.95,"maxTokens":32768},"reasoning":{"thinkingBudget":12288,"enableThinking":true}},"thinking-precise":{"sampling":{"temperature":0.6,"topP":0.9,"maxTokens":8192,"seed":0},"reasoning":{"thinkingBudget":6144,"enableThinking":true}},"instruct":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":8192},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":16384},"reasoning":{"enableThinking":false}}}},"llamaCpp":{"huggingfaceRepo":"ggml-org/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-GGUF","revision":"88d7ce0b0fa385c5108866ce5d33690927531a37","filename":"NVIDIA-Nemotron-3.5-Lightning-30B-A3B-Q8_0.gguf","sha256":"8544826247d087745baf4e7540f6911608a61caba7a16702314946af5e4235ae","approxSizeBytes":35004642304,"quantization":"Q8_0"},"mlx":{"huggingfaceRepo":"mlx-community/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-8bit","revision":"881a85f9e84dac5ab1a61d4493739b5ef67efeaa","files":[{"name":"chat_template.jinja","sha256":"58933db77d3099b4f78c55a38347a72e1ea05b97d6bd8f38775303dc0194e0a9","sizeBytes":9867},{"name":"config.json","sha256":"a1b0135c0973322d188a836c86746e69ea07c02b241e1f26681bf5123345359b","sizeBytes":2932},{"name":"generation_config.json","sha256":"0ed94823ae737b507aef6af01e837041b7aa2fb0306793a310cd201d89a31ff4","sizeBytes":210},{"name":"model-00001-of-00007.safetensors","sha256":"7ce9d0b7b01bb133ebf089a65dbcce23dcf35d73eb28dfa20b639a21e86711f3","sizeBytes":5359226316},{"name":"model-00002-of-00007.safetensors","sha256":"ad229b96564455b865364db16918a557d55f21199e4ff7a9d0e0952e56c5c9e0","sizeBytes":5046688726},{"name":"model-00003-of-00007.safetensors","sha256":"a2c01a7ae42cc9881768fc3f4c1820a86c00766f8f88f154fd17e32d10ed1a46","sizeBytes":4963631598},{"name":"model-00004-of-00007.safetensors","sha256":"f9afcd3cedfc7e107b7e199fea995d105ee2ad56929fd3dd017ce6dd24ea9f55","sizeBytes":5051598289},{"name":"model-00005-of-00007.safetensors","sha256":"bf8ef73665e3d894d5badd01cef18a99e7da7dcc3a21c52c80a298976499420c","sizeBytes":4938766121},{"name":"model-00006-of-00007.safetensors","sha256":"bbd2d487828c3e2434ca181673023a1489699a6739c2725250ac0c91d5eb1e17","sizeBytes":5026732862},{"name":"model-00007-of-00007.safetensors","sha256":"01b0ace9963a901962e9bbe492d66faa5a0ed47b09ade9da5529375694fa770e","sizeBytes":3173319638},{"name":"model.safetensors.index.json","sha256":"14f9c8d6ff717ea35d64585e4f723544aa0964d7492c10dbf2e27a1ee29a87e5","sizeBytes":65410},{"name":"tokenizer.json","sha256":"623c34567aebb18582765289fbe23d901c62704d6518d71866e0e58db892b5b7","sizeBytes":17077484},{"name":"tokenizer_config.json","sha256":"ec380f0a6c0c2e294eb2435f5ec521fb2121cfc970e6ebf023d06829714a4eaa","sizeBytes":430}],"approxSizeBytes":33577119883,"quantization":"8bit"},"availableVersions":["1.0.1","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"nemotron3-nano-30b-q4","name":"Nemotron-3 Nano (30B, MoE Reasoning, Q4)","description":"NVIDIA's Nemotron-3 Nano Omni at 30B parameters, tuned for reasoning. Multimodal (text + image + audio + video), 128K context, native tool calling. Capable-tier on-device option for machines with 32GB+ memory.","tags":["nvidia","reasoning","moe","hybrid","tools","multimodal","vision","audio","video"],"maintainer":{"name":"NVIDIA","url":"https://huggingface.co/nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning"},"license":"NVIDIA Open Model License","licenseClass":"custom-restricted","licenseShortName":"NVIDIA Open Model","minGezelVersion":"1.26227","version":"1.0.2","releasedAt":"2026-08-15T00:00:00Z","parameterSize":"30B","approxSizeBytes":24515129536,"supportsTools":true,"contextWindow":131072,"upstream":"https://huggingface.co/nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning","category":"reasoning","style":{"family":"nemotron","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","prompt.private-reasoning-guidance","fabrication.detect-past-tense-no-tools","turn.preamble-folding","mcp.compact-tool-schemas"],"tuning":{"sampling":{"temperature":0.2,"topK":1},"samplingWhenThinking":{"temperature":0.6,"topP":0.95},"reasoning":{"thinkingBudget":8192,"enableThinking":true},"engine":{"llamaCpp":{"contextSize":98304}},"profiles":{"thinking-general":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"thinking-coding":{"sampling":{"temperature":0.4,"topP":0.95,"topK":20,"repetitionPenalty":1.05},"reasoning":{"thinkingBudget":6144,"enableThinking":true}},"thinking-precise":{"sampling":{"temperature":0.2,"topP":0.9,"topK":20,"seed":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"instruct":{"sampling":{"temperature":0.2,"topK":1},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":0.9,"topP":0.95,"topK":40},"reasoning":{"enableThinking":false}}}},"llamaCpp":{"huggingfaceRepo":"lmstudio-community/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-GGUF","revision":"49a5b1ae335e30e775d4eb03f822b52a63ea4271","filename":"Nemotron-3-Nano-Omni-30B-A3B-Reasoning-Q4_K_M.gguf","sha256":"e3efd3f173538eef6a422cfb20f273413348adfd75e14b846acf36943894ef43","approxSizeBytes":24515129536,"quantization":"Q4_K_M","mmproj":{"filename":"mmproj-Nemotron-3-Nano-Omni-30B-A3B-Reasoning-BF16.gguf","sha256":"0e46f4126eb65732c645262d78b2ac41955ced3de4643dddfa9892f68d08c9e9","sizeBytes":1589506176}},"mlx":{"huggingfaceRepo":"mlx-community/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-nvfp4","revision":"3f65bc48c603081c6ba89b63fdc23400ea087e38","files":[{"name":"chat_template.jinja","sha256":"41428e0c65e312c359df2495ef5284769a9520b15a693deda4c34a1538208faa","sizeBytes":14277},{"name":"config.json","sha256":"1fb89f29105b9fb455ee8e1dc88de963b95a631c7cc6a68d7e17d4aa24570aac","sizeBytes":9459},{"name":"generation_config.json","sha256":"dbe3dfa851ad1462c45beed3a9a35f02e24af5311d79e8b9de5a41428b3a8e7a","sizeBytes":309},{"name":"model-00001-of-00004.safetensors","sha256":"128a189c3e20c23b5199394b0c84f1dae226405f82081e5d559e3fb2c980b343","sizeBytes":5118626596},{"name":"model-00002-of-00004.safetensors","sha256":"a2097eb987352e665992af87edd101047e713a1f80cc34555254179033f00fe6","sizeBytes":5291563052},{"name":"model-00003-of-00004.safetensors","sha256":"1c77e0cb0d69884a9bb01e540fa43818c10f106bb447edbef5fe7a80b5a4f38b","sizeBytes":5291563074},{"name":"model-00004-of-00004.safetensors","sha256":"903b1ecdef13e3a80fe430a28143ffd4062337c6cd5e78ba9986a127fbd78a25","sizeBytes":3931693211},{"name":"model.safetensors.index.json","sha256":"09a169e3c52670cfe7ea95930139f17abed38144d2d220db5057e2e0ba000f13","sizeBytes":191231},{"name":"preprocessor_config.json","sha256":"e53c54889896ad6104a031f58831cf237e1416bfb16612d856213ce94a91df17","sizeBytes":342},{"name":"processor_config.json","sha256":"f7de807026c387af42011cc85058253b7cf39ddb5cb8cedf8927d7d2eb2c6ce7","sizeBytes":743},{"name":"special_tokens_map.json","sha256":"e3a4f63da745f02317a45e00e6476c17fc66ac41faf14bb1b0be1f3211b0ca53","sizeBytes":420},{"name":"tokenizer.json","sha256":"d0432ad8b1c2984a2e2dca82e1933e3fd5628df6e95c51fba4c3ee9950dce299","sizeBytes":17077366},{"name":"tokenizer_config.json","sha256":"1293fc27661bc2989b8c3b42db6ffbdfad87e35144b9b686eab2538b4c56c60e","sizeBytes":582}],"approxSizeBytes":19650740662,"quantization":"nvfp4"},"availableVersions":["1.0.2","1.0.1","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"nemotron3-super-120b-q4","name":"Nemotron-3 Super (120B-A12B, Q4)","description":"NVIDIA's flagship Nemotron-3 Super at 120B parameters, tuned for reasoning. Native tool calling, 128K context. Frontier-tier on-device reasoning for workstations and Mac Studio-class hardware — needs ~100GB of usable memory. No Apple Silicon build yet.","tags":["nvidia","reasoning","moe","hybrid","tools","large"],"maintainer":{"name":"NVIDIA","url":"https://huggingface.co/nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-BF16"},"license":"NVIDIA Open Model License","licenseClass":"custom-restricted","licenseShortName":"NVIDIA Open Model","minGezelVersion":"1.26227","version":"1.0.1","releasedAt":"2026-08-15T00:00:00Z","parameterSize":"120B","approxSizeBytes":86051079584,"supportsTools":true,"contextWindow":131072,"upstream":"https://huggingface.co/nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-BF16","category":"reasoning","style":{"family":"nemotron","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","prompt.private-reasoning-guidance","fabrication.detect-past-tense-no-tools","turn.preamble-folding"],"tuning":{"sampling":{"temperature":1,"topP":0.95},"reasoning":{"thinkingBudget":4096,"enableThinking":true},"profiles":{"thinking-general":{"sampling":{"temperature":0.7,"topP":0.95,"topK":20},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"thinking-coding":{"sampling":{"temperature":0.4,"topP":0.95,"topK":20},"reasoning":{"thinkingBudget":6144,"enableThinking":true}},"thinking-precise":{"sampling":{"temperature":0.2,"topP":0.9,"topK":20,"seed":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"instruct":{"sampling":{"temperature":0.7,"topP":0.9,"topK":40},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1,"topP":0.95,"topK":40},"reasoning":{"enableThinking":false}}}},"llamaCpp":{"huggingfaceRepo":"lmstudio-community/NVIDIA-Nemotron-3-Super-120B-A12B-GGUF","revision":"16410500b9bdc62081c34cc2dff52471e001f970","shards":[{"name":"NVIDIA-Nemotron-3-Super-120B-A12B-Q4_K_M-00001-of-00003.gguf","sha256":"2cf8e99b9b71babc5932eb594b1fe1f9b9e407a460a5b49b0625f0c25e0ba799","sizeBytes":39205633408},{"name":"NVIDIA-Nemotron-3-Super-120B-A12B-Q4_K_M-00002-of-00003.gguf","sha256":"770b505e6fe3b19b422b5b0dd06201b07218d0af99e72e69086208983fe54219","sizeBytes":39720681760},{"name":"NVIDIA-Nemotron-3-Super-120B-A12B-Q4_K_M-00003-of-00003.gguf","sha256":"7420107ccfc77230deaf57971ae84a58a18c4e6e035aa99cf0e25fbbc4c7614a","sizeBytes":7124764416}],"approxSizeBytes":86051079584,"quantization":"Q4_K_M"},"availableVersions":["1.0.1","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"ornith-35b-q4","name":"Ornith 1.0 (35B, Q4)","description":"DeepReinforce's Ornith 1.0 at 35B parameters — an agentic-coding model built for hands-on software work: reading a codebase, running tools, and seeing a change through. Native reasoning, native tool calling, 256K context. Capable-tier on-device option for machines with 32GB+ memory. MIT licensed.","tags":["deepreinforce","coding","agentic","tools","reasoning","long-context","moe"],"maintainer":{"name":"DeepReinforce","url":"https://huggingface.co/deepreinforce-ai"},"license":"MIT","licenseClass":"open","licenseShortName":"MIT","minGezelVersion":"1.26227","version":"1.0.1","releasedAt":"2026-08-15T00:00:00Z","parameterSize":"35B","approxSizeBytes":21200000000,"supportsTools":true,"contextWindow":262144,"kvBytesPerTokenF16":20480,"kvFixedBytesF16":64389120,"upstream":"https://huggingface.co/deepreinforce-ai/Ornith-1.0-35B","category":"coding","style":{"family":"qwen","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","prompt.private-reasoning-guidance","prompt.tool-cookbook-condensed","fabrication.detect-past-tense-no-tools","turn.ollama-num-predict-bumped","turn.preamble-folding","turn.ramble-detection","mcp.compact-tool-schemas"],"tuning":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":8192},"samplingWhenThinking":{"temperature":0.6,"topP":0.95},"reasoning":{"thinkingBudget":4096,"enableThinking":true},"promptTags":{"enableThinkingTag":"/think","disableThinkingTag":"/no_think"},"profiles":{"thinking-general":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":12288,"repetitionPenalty":1},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"thinking-coding":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":16384,"repetitionPenalty":1},"reasoning":{"thinkingBudget":6144,"enableThinking":true}},"thinking-precise":{"sampling":{"temperature":0.4,"topP":0.9,"topK":20,"minP":0,"maxTokens":6144,"seed":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"instruct":{"sampling":{"temperature":0.7,"topP":0.8,"topK":20,"minP":0,"maxTokens":4096,"repetitionPenalty":1,"presencePenalty":1.5},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1.1,"topP":0.95,"topK":40,"maxTokens":8192},"reasoning":{"enableThinking":false}}}},"llamaCpp":{"huggingfaceRepo":"deepreinforce-ai/Ornith-1.0-35B-GGUF","revision":"c2e1703039380de4ce6820e97afd185682d3c16c","filename":"ornith-1.0-35b-Q4_K_M.gguf","sha256":"ff25291b2599fb927a835e624d2b3540106af61761c3fa57ac4264046dbec002","approxSizeBytes":21166757760,"quantization":"Q4_K_M"},"mlx":{"huggingfaceRepo":"mlx-community/Ornith-1.0-35B-4bit","revision":"781f91090809411b7fc07449817f398a99feb188","files":[{"name":"chat_template.jinja","sha256":"182e77dd83bd8e9ca818b240b82e28f243762cd5dda32e6eef327df7b1cd107e","sizeBytes":7536},{"name":"config.json","sha256":"550efce0158addbcab424cfc92bdaa297138a949bfc71c724918994b7b692d2f","sizeBytes":24151},{"name":"generation_config.json","sha256":"896eeba60a1195e034dc6b9a7bbddd64b6174992348f5dc7d75daaa93d0bdd45","sizeBytes":213},{"name":"model-00001-of-00004.safetensors","sha256":"2a34b0daa08c1decdeb817301ec4927bfdfa5e573559a3f541f73834383b21d0","sizeBytes":5288196062},{"name":"model-00002-of-00004.safetensors","sha256":"5eab94545fdddd6db8c6d8cd54a3481ba26f2d9fc6d48ee47ea94951c631680b","sizeBytes":5368472657},{"name":"model-00003-of-00004.safetensors","sha256":"8fc467f4036656f488afc86776757ad3cbd4910ab9031f84bb28c55768a904fb","sizeBytes":5368324255},{"name":"model-00004-of-00004.safetensors","sha256":"c700f3b3a89d613dfaf5b430f8e3b70e1aeb0e5b7ad4fe3aebf8c64e3644ce17","sizeBytes":4377211327},{"name":"model.safetensors.index.json","sha256":"0b28df60e33753a14e816d3b31577ae2c93884c58430a4a6de6ae9ea483842ea","sizeBytes":215755},{"name":"preprocessor_config.json","sha256":"27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516","sizeBytes":390},{"name":"processor_config.json","sha256":"45fc17c8dd2474af6b493b52483c26c0584b0082d368c480f9fa611e73070040","sizeBytes":991},{"name":"tokenizer.json","sha256":"06b9509352d2af50381ab2247e083b80d32d5c0aba91c272ca9ff729b6a0e523","sizeBytes":19989325},{"name":"tokenizer_config.json","sha256":"792fa3f0cb88b111e54ef3134c873531008c4df471d108da17903426e308aa7b","sizeBytes":1165},{"name":"video_preprocessor_config.json","sha256":"7768af27c1fafa9cc9011c1dc20067e03f8915e03b63504550e11d5066986d13","sizeBytes":385},{"name":"vocab.json","sha256":"ce99b4cb2983d118806ce0a8b777a35b093e2000a503ebde25853284c9dfa003","sizeBytes":6722759}],"approxSizeBytes":20429166971,"quantization":"4bit"},"availableVersions":["1.0.1","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"ornith-35b-q8","name":"Ornith 1.0 (35B, Q8)","description":"DeepReinforce's Ornith 1.0 at 35B parameters — an agentic-coding model built for hands-on software work: reading a codebase, running tools, and seeing a change through. Native reasoning, native tool calling, 256K context. 8-bit quantization for higher fidelity than the Q4 build, at roughly double the memory footprint (~37GB). MIT licensed.","tags":["deepreinforce","coding","agentic","tools","reasoning","long-context","moe"],"maintainer":{"name":"DeepReinforce","url":"https://huggingface.co/deepreinforce-ai"},"license":"MIT","licenseClass":"open","licenseShortName":"MIT","minGezelVersion":"1.26227","version":"1.0.1","releasedAt":"2026-08-15T00:00:00Z","parameterSize":"35B","approxSizeBytes":37000000000,"supportsTools":true,"contextWindow":262144,"kvBytesPerTokenF16":20480,"kvFixedBytesF16":64389120,"upstream":"https://huggingface.co/deepreinforce-ai/Ornith-1.0-35B","category":"coding","style":{"family":"qwen","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","prompt.private-reasoning-guidance","prompt.tool-cookbook-condensed","fabrication.detect-past-tense-no-tools","turn.ollama-num-predict-bumped","turn.preamble-folding","turn.ramble-detection","mcp.compact-tool-schemas"],"tuning":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":8192},"samplingWhenThinking":{"temperature":0.6,"topP":0.95},"reasoning":{"thinkingBudget":4096,"enableThinking":true},"promptTags":{"enableThinkingTag":"/think","disableThinkingTag":"/no_think"},"profiles":{"thinking-general":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":12288,"repetitionPenalty":1},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"thinking-coding":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":16384,"repetitionPenalty":1},"reasoning":{"thinkingBudget":6144,"enableThinking":true}},"thinking-precise":{"sampling":{"temperature":0.4,"topP":0.9,"topK":20,"minP":0,"maxTokens":6144,"seed":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"instruct":{"sampling":{"temperature":0.7,"topP":0.8,"topK":20,"minP":0,"maxTokens":4096,"repetitionPenalty":1,"presencePenalty":1.5},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1.1,"topP":0.95,"topK":40,"maxTokens":8192},"reasoning":{"enableThinking":false}}}},"llamaCpp":{"huggingfaceRepo":"deepreinforce-ai/Ornith-1.0-35B-GGUF","revision":"c2e1703039380de4ce6820e97afd185682d3c16c","filename":"ornith-1.0-35b-Q8_0.gguf","sha256":"cbc992bca07901c1a51f33e65e6fc5d687de179c852a772dfd15e4c3261dbf5c","approxSizeBytes":36903138880,"quantization":"Q8_0"},"mlx":{"huggingfaceRepo":"mlx-community/Ornith-1.0-35B-8bit","revision":"28d10f45a04981989f5a2e53e38f6473e81e815a","files":[{"name":"chat_template.jinja","sha256":"182e77dd83bd8e9ca818b240b82e28f243762cd5dda32e6eef327df7b1cd107e","sizeBytes":7536},{"name":"config.json","sha256":"c1cfeef1ed8dc341d400c33d7a2a93b61d01b1a8b70bf8b8992550b09a5dfc07","sizeBytes":24151},{"name":"generation_config.json","sha256":"896eeba60a1195e034dc6b9a7bbddd64b6174992348f5dc7d75daaa93d0bdd45","sizeBytes":213},{"name":"model-00001-of-00008.safetensors","sha256":"356cbcbe9244d120e352782e7f8ab582f8a3125a0a82876c0bc43275b73ad217","sizeBytes":5329916013},{"name":"model-00002-of-00008.safetensors","sha256":"59f16e6cb8bce7a47a5c11458cac47307070c00984a0849e29f1873101f4e102","sizeBytes":5365573922},{"name":"model-00003-of-00008.safetensors","sha256":"449d965928a225fdb5f1d90e4ed0f718a3733dbe03ecc733d65daaf120fca526","sizeBytes":5358684668},{"name":"model-00004-of-00008.safetensors","sha256":"d6754fbc66cbc37c953843aeaf074546f8807860adc1ea7c067b3f747bd09f6c","sizeBytes":5365574194},{"name":"model-00005-of-00008.safetensors","sha256":"d4325c8eb40a2871674ca701340edecc7e753389a3c3ddb11365474a34cf7169","sizeBytes":5358684644},{"name":"model-00006-of-00008.safetensors","sha256":"43a4bd68352772825dfb79c0bd844031818994e953bbd1adb06f3dbb4d9b1e70","sizeBytes":5365574174},{"name":"model-00007-of-00008.safetensors","sha256":"1f6b3423dc7c560ae2ad43781b66ab92fe439cd684ab47be051c4bd45a0032b4","sizeBytes":5037050574},{"name":"model-00008-of-00008.safetensors","sha256":"259f82efaf13be9af40eb427d913a51c8bb340e57bfd8ea2b5cf629a5cb78de6","sizeBytes":540344667},{"name":"model.safetensors.index.json","sha256":"3db12edeebeb65cab9a6eeb63cd74be4e0c74139a75f672701290b98230501cf","sizeBytes":215755},{"name":"preprocessor_config.json","sha256":"27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516","sizeBytes":390},{"name":"processor_config.json","sha256":"45fc17c8dd2474af6b493b52483c26c0584b0082d368c480f9fa611e73070040","sizeBytes":991},{"name":"tokenizer.json","sha256":"06b9509352d2af50381ab2247e083b80d32d5c0aba91c272ca9ff729b6a0e523","sizeBytes":19989325},{"name":"tokenizer_config.json","sha256":"792fa3f0cb88b111e54ef3134c873531008c4df471d108da17903426e308aa7b","sizeBytes":1165},{"name":"video_preprocessor_config.json","sha256":"7768af27c1fafa9cc9011c1dc20067e03f8915e03b63504550e11d5066986d13","sizeBytes":385},{"name":"vocab.json","sha256":"ce99b4cb2983d118806ce0a8b777a35b093e2000a503ebde25853284c9dfa003","sizeBytes":6722759}],"approxSizeBytes":37748365526,"quantization":"8bit"},"availableVersions":["1.0.1","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"ornith-9b-q4","name":"Ornith 1.0 (9B, Q4)","description":"DeepReinforce's Ornith 1.0 at 9B parameters — an agentic-coding model built for hands-on software work. Native reasoning, native tool calling, 256K context. The small-tier pick for tool-heavy work on a 12GB+ inference budget. MIT licensed.","tags":["deepreinforce","coding","agentic","tools","reasoning","long-context"],"maintainer":{"name":"DeepReinforce","url":"https://huggingface.co/deepreinforce-ai"},"license":"MIT","licenseClass":"open","licenseShortName":"MIT","minGezelVersion":"1.26227","version":"1.0.1","releasedAt":"2026-08-15T00:00:00Z","parameterSize":"9B","approxSizeBytes":5600000000,"supportsTools":true,"contextWindow":262144,"kvBytesPerTokenF16":32768,"kvFixedBytesF16":51511296,"upstream":"https://huggingface.co/deepreinforce-ai/Ornith-1.0-9B","category":"coding","style":{"family":"qwen","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","prompt.private-reasoning-guidance","prompt.tool-cookbook-condensed","fabrication.detect-past-tense-no-tools","mcp.compact-tool-schemas","mcp.relax-required-fields","mcp.default-missing-fields","turn.ollama-num-predict-bumped","turn.preamble-folding","provider.merge-system-messages"],"tuning":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":16384},"samplingWhenThinking":{"temperature":0.6,"topP":0.95},"reasoning":{"thinkingBudget":2048,"enableThinking":true},"promptTags":{"enableThinkingTag":"/think","disableThinkingTag":"/no_think"},"profiles":{"thinking-general":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":12288,"repetitionPenalty":1},"reasoning":{"thinkingBudget":2048,"enableThinking":true}},"thinking-coding":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":16384,"repetitionPenalty":1},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"thinking-precise":{"sampling":{"temperature":0.4,"topP":0.9,"topK":20,"minP":0,"maxTokens":6144,"seed":0},"reasoning":{"thinkingBudget":2048,"enableThinking":true}},"instruct":{"sampling":{"temperature":0.7,"topP":0.8,"topK":20,"minP":0,"maxTokens":4096,"repetitionPenalty":1,"presencePenalty":1.5},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1.1,"topP":0.95,"topK":40,"maxTokens":8192},"reasoning":{"enableThinking":false}}}},"llamaCpp":{"huggingfaceRepo":"deepreinforce-ai/Ornith-1.0-9B-GGUF","revision":"3296bc7a404871a72ac3f1903f561459c09b5c17","filename":"ornith-1.0-9b-Q4_K_M.gguf","sha256":"5720d1f671b4996481274fffe01868c3c36e87c135cc8538471cc7bd6087b106","approxSizeBytes":5629108704,"quantization":"Q4_K_M"},"mlx":{"huggingfaceRepo":"mlx-community/Ornith-1.0-9B-4bit","revision":"1e980b9742a9e554a4d57e90b4c597811fb2fc4e","files":[{"name":"chat_template.jinja","sha256":"8b4d21a1e70ccbc8849e5e5e6dd32f3acfb2e2060739475909edc6e9b27c7165","sizeBytes":7594},{"name":"config.json","sha256":"e661291d14e6c4e239ae430d7a72ab1c947440ca89c94fc09be71ff0acb45c37","sizeBytes":3876},{"name":"generation_config.json","sha256":"be19d3c48cd249efd6e0327b69916caae8279007dd14c0aad86f7b6b28c5d148","sizeBytes":137},{"name":"model-00001-of-00002.safetensors","sha256":"60e62b00a2ff10d793aed5fe7efc40137e46c9d4028b14c84f1d170eef964beb","sizeBytes":5349769710},{"name":"model-00002-of-00002.safetensors","sha256":"736da49643bb8c64fa081f2415ce624f40e983be1fc590ad30e65af75cdd5a5a","sizeBytes":600449850},{"name":"model.safetensors.index.json","sha256":"4518e4d98baed265cb25c5adb45839d5b69e0b9700f4bd573533392097bbb874","sizeBytes":123592},{"name":"preprocessor_config.json","sha256":"27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516","sizeBytes":390},{"name":"processor_config.json","sha256":"45fc17c8dd2474af6b493b52483c26c0584b0082d368c480f9fa611e73070040","sizeBytes":991},{"name":"tokenizer.json","sha256":"06b9509352d2af50381ab2247e083b80d32d5c0aba91c272ca9ff729b6a0e523","sizeBytes":19989325},{"name":"tokenizer_config.json","sha256":"c908cd42c5e6eac721445fb70841e45845a6a269c6ef2c595e97a578a9724671","sizeBytes":1168},{"name":"video_preprocessor_config.json","sha256":"7768af27c1fafa9cc9011c1dc20067e03f8915e03b63504550e11d5066986d13","sizeBytes":385},{"name":"vocab.json","sha256":"ce99b4cb2983d118806ce0a8b777a35b093e2000a503ebde25853284c9dfa003","sizeBytes":6722759}],"approxSizeBytes":5977069777,"quantization":"4bit"},"availableVersions":["1.0.1","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"ornith1.5-35b-a3b-q4","name":"Ornith 1.5 (35B-A3B, Q4)","description":"Ornith AI's Ornith 1.5 at 35B total parameters with roughly 3B active per token — a self-improving, agentic-coding model trained for software engineering, tool use, and reasoning. The 4-bit build is the practical pick at this size, keeping fast MoE decode in a much smaller footprint than Q8, with native tool calling and a 256K context window. MIT licensed; best suited to machines with 32GB+ usable memory.","tags":["ornith","coding","agentic","tools","reasoning","long-context","moe"],"maintainer":{"name":"Ornith AI","url":"https://huggingface.co/ornith-ai"},"license":"MIT","licenseClass":"open","licenseShortName":"MIT","minGezelVersion":"1.26227","version":"1.0.0","releasedAt":"2026-08-27T00:00:00Z","parameterSize":"35B","approxSizeBytes":21713463040,"supportsTools":true,"contextWindow":262144,"kvBytesPerTokenF16":20480,"kvFixedBytesF16":64389120,"upstream":"https://huggingface.co/ornith-ai/Ornith-1.5-35B-A3B","category":"coding","style":{"family":"qwen","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","prompt.private-reasoning-guidance","prompt.tool-cookbook-condensed","fabrication.detect-past-tense-no-tools","turn.ollama-num-predict-bumped","turn.preamble-folding","turn.ramble-detection","mcp.compact-tool-schemas","tools.mlx-grammar"],"tuning":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":8192,"repetitionPenalty":1},"samplingWhenThinking":{"temperature":0.6,"topP":0.95},"reasoning":{"thinkingBudget":4096,"enableThinking":true},"promptTags":{"enableThinkingTag":"/think","disableThinkingTag":"/no_think"},"profiles":{"thinking-general":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":12288,"repetitionPenalty":1},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"thinking-coding":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":16384,"repetitionPenalty":1},"reasoning":{"thinkingBudget":6144,"enableThinking":true}},"thinking-precise":{"sampling":{"temperature":0.4,"topP":0.9,"topK":20,"minP":0,"maxTokens":6144,"seed":0,"repetitionPenalty":1},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"instruct":{"sampling":{"temperature":0.7,"topP":0.8,"topK":20,"minP":0,"maxTokens":4096,"repetitionPenalty":1,"presencePenalty":1.5},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1.1,"topP":0.95,"topK":40,"maxTokens":8192},"reasoning":{"enableThinking":false}}}},"llamaCpp":{"huggingfaceRepo":"ornith-ai/Ornith-1.5-35B-A3B-GGUF","revision":"12393612fd4f730ff5aadc23e9b8f9648aa49ceb","filename":"Ornith-1.5-35B-Q4_K_M.gguf","sha256":"42739874cc2ccfdb8523b23fbe52e29b2a7555c8176737ca9ca0b5d59859d41f","approxSizeBytes":21713463040,"quantization":"Q4_K_M"},"mlx":{"huggingfaceRepo":"ornith-ai/Ornith-1.5-35B-A3B-MLX-4bit","revision":"19504d912fa8fc7622bf6b1de3db5d5d890b1f02","files":[{"name":"chat_template.jinja","sha256":"182e77dd83bd8e9ca818b240b82e28f243762cd5dda32e6eef327df7b1cd107e","sizeBytes":7536},{"name":"config.json","sha256":"fc27b922c3506e955271c68120be9079ad8bba7266c8086c02dfbb8c98723bd5","sizeBytes":23203},{"name":"generation_config.json","sha256":"e70c136c1b78ddc1fb0905bac8e733a4dc448d4f852a5dd75143fffc70be550e","sizeBytes":202},{"name":"model-00001-of-00004.safetensors","sha256":"f0b2b03fb3eecf84096ee5abb213c99e9c3725f9947004a01999dc5cc55ebdd9","sizeBytes":5343699466},{"name":"model-00002-of-00004.safetensors","sha256":"971b1935112c4221616ddab04ead15d50b3c489754e619d74304dc4f64d034dc","sizeBytes":5368472837},{"name":"model-00003-of-00004.safetensors","sha256":"041377369466c48cb486ce2911c3cce638b8702080bb39113a7cf190632f5529","sizeBytes":5368324245},{"name":"model-00004-of-00004.safetensors","sha256":"d1088c7f6e9d705a253d3049bf7308704ccf1f4099cf40678ff077da88f0184b","sizeBytes":3428527653},{"name":"model.safetensors.index.json","sha256":"c118f13c0dcb729e4ca2e3d653ab193067551eb1a6410badb5192eb426104f36","sizeBytes":187263},{"name":"tokenizer.json","sha256":"06b9509352d2af50381ab2247e083b80d32d5c0aba91c272ca9ff729b6a0e523","sizeBytes":19989325},{"name":"tokenizer_config.json","sha256":"386ba246ba3dfa4d3a21d8bc8712eba38de558e5ac94c2c90436d8f94d519d5e","sizeBytes":1160}],"approxSizeBytes":19529232890,"quantization":"4bit","disabledReason":"The official MLX conversion omits 393 vision-tower parameters while declaring the multimodal Qwen3.5 architecture, so mlx-vlm cannot construct the checkpoint."},"availableVersions":["1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"ornith1.5-35b-a3b-q8","name":"Ornith 1.5 (35B-A3B, Q8)","description":"Ornith AI's Ornith 1.5 at 35B total parameters with roughly 3B active per token — a self-improving, agentic-coding model trained for software engineering, tool use, and reasoning. The 8-bit build preserves more fidelity than Q4 while retaining fast MoE decode, with native tool calling and a 256K context window. MIT licensed; best suited to machines with 48GB+ usable memory.","tags":["ornith","coding","agentic","tools","reasoning","long-context","moe"],"maintainer":{"name":"Ornith AI","url":"https://huggingface.co/ornith-ai"},"license":"MIT","licenseClass":"open","licenseShortName":"MIT","minGezelVersion":"1.26227","version":"1.0.0","releasedAt":"2026-08-19T00:00:00Z","parameterSize":"35B","approxSizeBytes":36850134517,"supportsTools":true,"contextWindow":262144,"kvBytesPerTokenF16":20480,"kvFixedBytesF16":64389120,"upstream":"https://huggingface.co/ornith-ai/Ornith-1.5-35B-A3B","category":"coding","style":{"family":"qwen","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","prompt.private-reasoning-guidance","prompt.tool-cookbook-condensed","fabrication.detect-past-tense-no-tools","turn.ollama-num-predict-bumped","turn.preamble-folding","turn.ramble-detection","mcp.compact-tool-schemas","tools.mlx-grammar"],"tuning":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":8192,"repetitionPenalty":1},"samplingWhenThinking":{"temperature":0.6,"topP":0.95},"reasoning":{"thinkingBudget":4096,"enableThinking":true},"promptTags":{"enableThinkingTag":"/think","disableThinkingTag":"/no_think"},"profiles":{"thinking-general":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":12288,"repetitionPenalty":1},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"thinking-coding":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":16384,"repetitionPenalty":1},"reasoning":{"thinkingBudget":6144,"enableThinking":true}},"thinking-precise":{"sampling":{"temperature":0.4,"topP":0.9,"topK":20,"minP":0,"maxTokens":6144,"seed":0,"repetitionPenalty":1},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"instruct":{"sampling":{"temperature":0.7,"topP":0.8,"topK":20,"minP":0,"maxTokens":4096,"repetitionPenalty":1,"presencePenalty":1.5},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1.1,"topP":0.95,"topK":40,"maxTokens":8192},"reasoning":{"enableThinking":false}}}},"llamaCpp":{"huggingfaceRepo":"ornith-ai/Ornith-1.5-35B-A3B-GGUF","revision":"5ae357e3eaf951ae221e8d784c71a8a3cdb6aa5f","filename":"Ornith-1.5-35B-Q8_0.gguf","sha256":"854cf83f80cd37a061ed86df1fa7201162e4e1fb820b91068cc12a11d2746c9e","approxSizeBytes":37802149120,"quantization":"Q8_0"},"mlx":{"huggingfaceRepo":"ornith-ai/Ornith-1.5-35B-A3B-MLX-8bit","revision":"42e87ef9eb541877dfbd497a1bd3d765b09d3191","files":[{"name":"chat_template.jinja","sha256":"182e77dd83bd8e9ca818b240b82e28f243762cd5dda32e6eef327df7b1cd107e","sizeBytes":7536},{"name":"config.json","sha256":"99ea92ebd3d749cbecad2a85327193b3aa5d7635e1416c5d31ec487082406d53","sizeBytes":23203},{"name":"generation_config.json","sha256":"e70c136c1b78ddc1fb0905bac8e733a4dc448d4f852a5dd75143fffc70be550e","sizeBytes":202},{"name":"model-00001-of-00007.safetensors","sha256":"a195a70b050e72c4adf357d5130fd10375d370dcb729bb64a114f9d364198c0c","sizeBytes":5332146247},{"name":"model-00002-of-00007.safetensors","sha256":"51e214cd9b9912930458f525ebab05b536ebe8e255cd20914f57cf615b5d429f","sizeBytes":5358684441},{"name":"model-00003-of-00007.safetensors","sha256":"1ba1d27677f32e3c23f1f9d7cb69acc2e3a9eafe14e18240c521082f70ad182c","sizeBytes":5365574222},{"name":"model-00004-of-00007.safetensors","sha256":"ff68dde1ed5170af0b07429558c06b716a5404f63f2e2f0af77e8f0cd72ed498","sizeBytes":5358684656},{"name":"model-00005-of-00007.safetensors","sha256":"8e36a2581814d5a0df550379ad83742b71abd793e5fe54ceb51dcf1434d6826b","sizeBytes":5365574220},{"name":"model-00006-of-00007.safetensors","sha256":"e8e5bd7c6e4e285121a714742580eb42f7c909d5164e333e189509f54f1bc18c","sizeBytes":5358684638},{"name":"model-00007-of-00007.safetensors","sha256":"91c6f632a3447f3e64abc623ea04e950ea1428214c739835d4b129532d30db54","sizeBytes":4688874137},{"name":"model.safetensors.index.json","sha256":"83c641a791aa957df7d280eef1b0c8faf7a2ec9b19dd3355fb13abae8ae0ed15","sizeBytes":187263},{"name":"tokenizer.json","sha256":"06b9509352d2af50381ab2247e083b80d32d5c0aba91c272ca9ff729b6a0e523","sizeBytes":19989325},{"name":"tokenizer_config.json","sha256":"386ba246ba3dfa4d3a21d8bc8712eba38de558e5ac94c2c90436d8f94d519d5e","sizeBytes":1160}],"approxSizeBytes":36848431250,"quantization":"8bit","disabledReason":"The official MLX conversion omits 393 vision-tower parameters while declaring the multimodal Qwen3.5 architecture, so mlx-vlm cannot construct the checkpoint."},"availableVersions":["1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"ornith1.5-9b-q4","name":"Ornith 1.5 (9B, Q4)","description":"Ornith AI's dense 9B Ornith 1.5 model — a compact self-improving agentic coder trained for software engineering, tool use, and reasoning. The 4-bit build offers the practical small-tier balance of quality and memory use, with native tool calling and a 256K context window. MIT licensed; best suited to machines with 12GB+ usable memory.","tags":["ornith","coding","agentic","tools","reasoning","long-context"],"maintainer":{"name":"Ornith AI","url":"https://huggingface.co/ornith-ai"},"license":"MIT","licenseClass":"open","licenseShortName":"MIT","minGezelVersion":"1.26227","version":"1.0.0","releasedAt":"2026-08-23T00:00:00Z","parameterSize":"9B","approxSizeBytes":5629108992,"supportsTools":true,"contextWindow":262144,"upstream":"https://huggingface.co/ornith-ai/Ornith-1.5-9B","category":"coding","style":{"family":"qwen","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","prompt.private-reasoning-guidance","prompt.tool-cookbook-condensed","fabrication.detect-past-tense-no-tools","turn.ollama-num-predict-bumped","turn.preamble-folding","turn.ramble-detection","mcp.compact-tool-schemas","mcp.relax-required-fields","mcp.default-missing-fields","prompt.retrieval-first","tools.mlx-grammar"],"tuning":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":8192,"repetitionPenalty":1},"samplingWhenThinking":{"temperature":0.6,"topP":0.95},"reasoning":{"thinkingBudget":4096,"enableThinking":true},"promptTags":{"enableThinkingTag":"/think","disableThinkingTag":"/no_think"},"profiles":{"thinking-general":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":12288,"repetitionPenalty":1},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"thinking-coding":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":16384,"repetitionPenalty":1},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"thinking-precise":{"sampling":{"temperature":0.4,"topP":0.9,"topK":20,"minP":0,"maxTokens":6144,"seed":0,"repetitionPenalty":1},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"instruct":{"sampling":{"temperature":0.7,"topP":0.8,"topK":20,"minP":0,"maxTokens":4096,"repetitionPenalty":1,"presencePenalty":1.5},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1.1,"topP":0.95,"topK":40,"maxTokens":8192},"reasoning":{"enableThinking":false}}}},"llamaCpp":{"huggingfaceRepo":"ornith-ai/Ornith-1.5-9B-GGUF","revision":"85bf2b98cdcbad4291cb4f46943526cc089f75a0","filename":"Ornith-1.5-9B-Q4_K_M.gguf","sha256":"7d791afcb31812acc88cd5aafc675391df28c6fc3d8eae002bb4e6cc3d8cfd8d","approxSizeBytes":5629108992,"quantization":"Q4_K_M"},"mlx":{"huggingfaceRepo":"ornith-ai/Ornith-1.5-9B-MLX-4bit","revision":"a48173b246ac705be75c05bedf1a0666db522d53","files":[{"name":"chat_template.jinja","sha256":"9dd2fbd270feaa1fbef2d4f634d7887c9c506e3bde140f8e7351c8944e8fd235","sizeBytes":7593},{"name":"config.json","sha256":"7ddc5bb8c3057edaa0a3337c1721312a8f3d28ad587b77dd6ac075876929d95d","sizeBytes":3084},{"name":"model.safetensors","sha256":"c022a4c4b8de62c75306e2442fd78161ff49bce85fe7abb308c5ad5d04454a26","sizeBytes":5038161163},{"name":"model.safetensors.index.json","sha256":"215f9abadc1cea4d465b01c036dffcac5a84c2fb2386777863eff6928b91ed0b","sizeBytes":81194},{"name":"tokenizer.json","sha256":"06b9509352d2af50381ab2247e083b80d32d5c0aba91c272ca9ff729b6a0e523","sizeBytes":19989325},{"name":"tokenizer_config.json","sha256":"386ba246ba3dfa4d3a21d8bc8712eba38de558e5ac94c2c90436d8f94d519d5e","sizeBytes":1160}],"approxSizeBytes":5058243519,"quantization":"4bit"},"availableVersions":["1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"ornith1.5-9b-q8","name":"Ornith 1.5 (9B, Q8)","description":"Ornith AI's dense 9B Ornith 1.5 model — a compact self-improving agentic coder trained for software engineering, tool use, and reasoning. This 8-bit build prioritizes fidelity while staying practical on Apple Silicon, with native tool calling and a 256K context window. MIT licensed; best suited to machines with 16GB+ usable memory.","tags":["ornith","coding","agentic","tools","reasoning","long-context"],"maintainer":{"name":"Ornith AI","url":"https://huggingface.co/ornith-ai"},"license":"MIT","licenseClass":"open","licenseShortName":"MIT","minGezelVersion":"1.26227","version":"1.0.0","releasedAt":"2026-08-19T00:00:00Z","parameterSize":"9B","approxSizeBytes":9534628340,"supportsTools":true,"contextWindow":262144,"upstream":"https://huggingface.co/ornith-ai/Ornith-1.5-9B","category":"coding","style":{"family":"qwen","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","prompt.private-reasoning-guidance","prompt.tool-cookbook-condensed","fabrication.detect-past-tense-no-tools","turn.ollama-num-predict-bumped","turn.preamble-folding","turn.ramble-detection","mcp.compact-tool-schemas","mcp.relax-required-fields","mcp.default-missing-fields","prompt.retrieval-first","tools.mlx-grammar"],"tuning":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":8192,"repetitionPenalty":1},"samplingWhenThinking":{"temperature":0.6,"topP":0.95},"reasoning":{"thinkingBudget":4096,"enableThinking":true},"promptTags":{"enableThinkingTag":"/think","disableThinkingTag":"/no_think"},"profiles":{"thinking-general":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":12288,"repetitionPenalty":1},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"thinking-coding":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":16384,"repetitionPenalty":1},"reasoning":{"thinkingBudget":6144,"enableThinking":true}},"thinking-precise":{"sampling":{"temperature":0.4,"topP":0.9,"topK":20,"minP":0,"maxTokens":6144,"seed":0,"repetitionPenalty":1},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"instruct":{"sampling":{"temperature":0.7,"topP":0.8,"topK":20,"minP":0,"maxTokens":4096,"repetitionPenalty":1,"presencePenalty":1.5},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1.1,"topP":0.95,"topK":40,"maxTokens":8192},"reasoning":{"enableThinking":false}}}},"llamaCpp":{"huggingfaceRepo":"ornith-ai/Ornith-1.5-9B-GGUF","revision":"85bf2b98cdcbad4291cb4f46943526cc089f75a0","filename":"Ornith-1.5-9B-Q8_0.gguf","sha256":"6874eeb25c71081dc8f0bbe88f3ebb786312447132745371cd980bce95d259b9","approxSizeBytes":9527501248,"quantization":"Q8_0"},"mlx":{"huggingfaceRepo":"ornith-ai/Ornith-1.5-9B-MLX-8bit","revision":"c66111f39e6c07aa98dd566f019cfa79a1cd5782","files":[{"name":"chat_template.jinja","sha256":"9dd2fbd270feaa1fbef2d4f634d7887c9c506e3bde140f8e7351c8944e8fd235","sizeBytes":7593},{"name":"config.json","sha256":"45e0cb999e819bb8394ac6ffc317683ca492ece1f6b2c86cefdd0e533919b395","sizeBytes":3084},{"name":"model-00001-of-00002.safetensors","sha256":"f66e0c3f49a399269845824135d92f91e8f8be9830a49cefb5985f884b13dc09","sizeBytes":5346606498},{"name":"model-00002-of-00002.safetensors","sha256":"4f2b6a779d7c42eee7ee932aea1b6bea0dbbce54acc2231962a20a1616a60fbe","sizeBytes":4167925581},{"name":"model.safetensors.index.json","sha256":"d11d30241db3acd6c2e2b5eea59b2ca0f2ca63776aa91f025699e4307a4d0370","sizeBytes":95099},{"name":"tokenizer.json","sha256":"06b9509352d2af50381ab2247e083b80d32d5c0aba91c272ca9ff729b6a0e523","sizeBytes":19989325},{"name":"tokenizer_config.json","sha256":"386ba246ba3dfa4d3a21d8bc8712eba38de558e5ac94c2c90436d8f94d519d5e","sizeBytes":1160}],"approxSizeBytes":9534628340,"quantization":"8bit"},"availableVersions":["1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"qwen3.5-122b-a10b-q4","name":"Qwen 3.5 (122B-A10B, Q4)","description":"Alibaba's Qwen 3.5 flagship open-weight model: 122B total parameters with 10B active per token, sparse MoE/Gated DeltaNet architecture, multimodal text + image + video support, native tool calling, and 262K native context extensible to roughly 1M tokens. Workstation-tier on-device option via Q4 GGUF or MLX 4-bit; expect around 90GB of usable memory before large KV-cache workloads.","tags":["alibaba","multimodal","vision","video","tools","long-context","moe","reasoning","large"],"maintainer":{"name":"Alibaba","url":"https://huggingface.co/Qwen/Qwen3.5-122B-A10B"},"license":"Apache-2.0","licenseClass":"open","licenseShortName":"Apache 2.0","minGezelVersion":"1.26227","version":"1.0.3","releasedAt":"2026-08-15T00:00:00Z","parameterSize":"122B","approxSizeBytes":78260403200,"supportsTools":true,"contextWindow":262144,"upstream":"https://huggingface.co/Qwen/Qwen3.5-122B-A10B","category":"general","style":{"family":"qwen","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","prompt.private-reasoning-guidance","prompt.tool-cookbook-condensed","prompt.meester-build-prelude","fabrication.detect-past-tense-no-tools","fabrication.detect-claim-without-tool","mcp.relax-required-fields","mcp.default-missing-fields","turn.ollama-num-predict-bumped","turn.preamble-folding","turn.ramble-detection","tools.mlx-grammar","provider.merge-system-messages","validate.inline-js-parses","prompt.prefer-writefile-edits","prompt.derive-by-execution"],"tuning":{"sampling":{"temperature":1,"topP":0.95,"topK":20,"minP":0,"maxTokens":16384,"repetitionPenalty":1,"presencePenalty":1.5},"samplingWhenThinking":{"temperature":0.6,"topP":0.95},"reasoning":{"thinkingBudget":4096,"enableThinking":true},"engine":{"llamaCpp":{"spec":{"mtp":true,"nMax":4}}},"profiles":{"thinking-general":{"sampling":{"temperature":1,"topP":0.95,"topK":20,"minP":0,"maxTokens":12288,"repetitionPenalty":1,"presencePenalty":1.5},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"thinking-coding":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":16384,"repetitionPenalty":1,"presencePenalty":0},"reasoning":{"thinkingBudget":6144,"enableThinking":true}},"thinking-precise":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":6144,"seed":0,"repetitionPenalty":1,"presencePenalty":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"instruct":{"sampling":{"temperature":0.7,"topP":0.8,"topK":20,"minP":0,"maxTokens":4096,"repetitionPenalty":1,"presencePenalty":1.5},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1,"topP":1,"topK":40,"minP":0,"maxTokens":8192,"repetitionPenalty":1,"presencePenalty":2},"reasoning":{"enableThinking":false}}}},"llamaCpp":{"huggingfaceRepo":"unsloth/Qwen3.5-122B-A10B-MTP-GGUF","revision":"907becb33103ab66b23da06a2dc74a5fca0583bd","shards":[{"name":"UD-Q4_K_M/Qwen3.5-122B-A10B-UD-Q4_K_M-00001-of-00003.gguf","sha256":"2faef922e80dcb9558c5a358510244a7c0bb96868b974a359dac87ce52a84316","sizeBytes":10943808},{"name":"UD-Q4_K_M/Qwen3.5-122B-A10B-UD-Q4_K_M-00002-of-00003.gguf","sha256":"d4ea910bb66552114eab0eee7b3c01c4bc490210855cffa400bd6bed065259ed","sizeBytes":49995868640},{"name":"UD-Q4_K_M/Qwen3.5-122B-A10B-UD-Q4_K_M-00003-of-00003.gguf","sha256":"985f36efe05d1bd8ed50bfb17f1294b6957b8f343e14fed0d7ec7c81b739d32a","sizeBytes":28253590752}],"approxSizeBytes":78260403200,"quantization":"UD-Q4_K_M","mmproj":{"filename":"mmproj-BF16.gguf","sha256":"8f2442758a6f5a2bbfbbddb4b160b08ff4e29c3a76cad7627a0fe2beca2325e6","sizeBytes":912263776}},"mlx":{"huggingfaceRepo":"mlx-community/Qwen3.5-122B-A10B-4bit","revision":"e9c67b08899964be5fdd069bb1b4bc8907fe68f5","files":[{"name":"chat_template.jinja","sha256":"a4aee8afcf2e0711942cf848899be66016f8d14a889ff9ede07bca099c28f715","sizeBytes":7756},{"name":"config.json","sha256":"fc1c3921b5146143cda7a5feed445cc31c8929cc3f164f967ec6340b448086eb","sizeBytes":4063},{"name":"generation_config.json","sha256":"303aba891d66ab63908a7b3cc9163bcb835fdf8b9f6301c73216f3f1eb3992dd","sizeBytes":244},{"name":"model-00001-of-00014.safetensors","sha256":"a2e5982d8ae4087ef151c5faab112a4a1d4b511a399dd4c83390183cf9dc2bed","sizeBytes":5117191884},{"name":"model-00002-of-00014.safetensors","sha256":"617d0276db85950faff4d7e8a253940addcb05137f6374d95d0a9c83e752f883","sizeBytes":5199749275},{"name":"model-00003-of-00014.safetensors","sha256":"a96a3a6e837c1f2dea15f312ed85189c1887c04b94bbf0e9bd4ce400f4514991","sizeBytes":5199749313},{"name":"model-00004-of-00014.safetensors","sha256":"fb70d290b16264828109df54b627e448fefbe3477c2772a0c36bc6e8cbbdadb3","sizeBytes":5144114566},{"name":"model-00005-of-00014.safetensors","sha256":"d396eef8d4fe4911bdf6dcc0e219f60fa55922baae647929c9f2fa00d26abab6","sizeBytes":5199749511},{"name":"model-00006-of-00014.safetensors","sha256":"19f338fdd7ac3f9246addcb9ec387f28f129a3b36082ebb8f90de20abea10ad2","sizeBytes":5199749419},{"name":"model-00007-of-00014.safetensors","sha256":"ef428dd92ed6ee5a7d4e32dd8caba3919cb2963040b11e26fbeae98191e23f7f","sizeBytes":5144114570},{"name":"model-00008-of-00014.safetensors","sha256":"e7c877102c7f1e572838cce84d83890478ca45a3dd6f603d923da2bd9fc68cf5","sizeBytes":5199749483},{"name":"model-00009-of-00014.safetensors","sha256":"4fb3c12704e6010312fd8c377ec15b0f582ca5772e61d67dd4e28c91decc56ce","sizeBytes":5199749473},{"name":"model-00010-of-00014.safetensors","sha256":"a1de2cfcb5c251578bde9cec23c4d02ed2c37be3de4b5a8a30f5168078aa5a07","sizeBytes":5144114588},{"name":"model-00011-of-00014.safetensors","sha256":"b8f6fc3bdf62bad1d0db747bafff02a8c179172508bf5ed08d625690f8bac2d1","sizeBytes":5199749481},{"name":"model-00012-of-00014.safetensors","sha256":"bd42762181ba345e1b092b95384d575b37fe402ad191796b6eab2d38d8b7d357","sizeBytes":5199749423},{"name":"model-00013-of-00014.safetensors","sha256":"e240d793b2b925df9564ff934ce2da30ba81f72c78fa1671cffe6958fc7fcbe8","sizeBytes":5149742812},{"name":"model-00014-of-00014.safetensors","sha256":"aeee4503d75b5d55bd65e001cb4d781bacac886529351cfa7593e9d9fb25ecb0","sizeBytes":2296363141},{"name":"model.safetensors.index.json","sha256":"e6bbd20503bb8f43b7df32983a5711e7fb54785807c296614801d7209ab40222","sizeBytes":253155},{"name":"preprocessor_config.json","sha256":"27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516","sizeBytes":390},{"name":"processor_config.json","sha256":"14932921ca485d458a04dafd8069fbb0a4505622a48208d19ed247115801385b","sizeBytes":1300},{"name":"tokenizer.json","sha256":"87a7830d63fcf43bf241c3c5242e96e62dd3fdc29224ca26fed8ea333db72de4","sizeBytes":19989343},{"name":"tokenizer_config.json","sha256":"e98f1901ac6f0adff67b1d540bfa0c36ac1a0cf59eb72ed78146ef89aafa1182","sizeBytes":1139},{"name":"video_preprocessor_config.json","sha256":"7768af27c1fafa9cc9011c1dc20067e03f8915e03b63504550e11d5066986d13","sizeBytes":385},{"name":"vocab.json","sha256":"ce99b4cb2983d118806ce0a8b777a35b093e2000a503ebde25853284c9dfa003","sizeBytes":6722759}],"approxSizeBytes":69620617473,"quantization":"4bit"},"availableVersions":["1.0.3","1.0.2","1.0.1","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"qwen3.5-2b-q4","name":"Qwen 3.5 (2B, Q4)","description":"Alibaba's Qwen 3.5 at 2B parameters. Multimodal (text + images) with native tool calling and a 256K context window. A very compact choice for constrained devices.","tags":["alibaba","multimodal","vision","tools","small"],"maintainer":{"name":"Alibaba","url":"https://ollama.com/library/qwen3.5"},"license":"Apache-2.0","licenseClass":"open","licenseShortName":"Apache 2.0","minGezelVersion":"1.26227","version":"1.1.3","releasedAt":"2026-08-15T00:00:00Z","parameterSize":"2B","approxSizeBytes":1329851808,"supportsTools":true,"contextWindow":256000,"upstream":"https://ollama.com/library/qwen3.5","category":"general","style":{"family":"qwen","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","prompt.private-reasoning-guidance","prompt.tool-cookbook-full","fabrication.detect-past-tense-no-tools","mcp.compact-tool-schemas","mcp.relax-required-fields","mcp.default-missing-fields",{"id":"turn.continuation-budget","config":{"count":4}},"turn.ollama-num-predict-bumped","turn.preamble-folding","turn.ramble-detection","tools.mlx-grammar","prompt.prefer-writefile-edits","prompt.derive-by-execution"],"tuning":{"sampling":{"temperature":0.7,"topP":0.8,"topK":20,"minP":0},"samplingWhenThinking":{"temperature":0.6,"topP":0.95},"reasoning":{"thinkingBudget":2048,"enableThinking":true},"promptTags":{"enableThinkingTag":"/think","disableThinkingTag":"/no_think"},"engine":{"llamaCpp":{"spec":{"mtp":true,"nMax":4}}},"profiles":{"thinking-general":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"repetitionPenalty":1.05}},"thinking-coding":{"sampling":{"temperature":0.5,"topP":0.9,"topK":20,"repetitionPenalty":1.05}},"thinking-precise":{"sampling":{"temperature":0.3,"topP":0.9,"topK":10,"repetitionPenalty":1.05}},"instruct":{"sampling":{"temperature":0.7,"topP":0.8,"topK":20,"repetitionPenalty":1.1}},"creative":{"sampling":{"temperature":0.9,"topP":0.95,"topK":40,"repetitionPenalty":1.1}}}},"ollama":{"tag":"qwen3.5:2b"},"llamaCpp":{"huggingfaceRepo":"unsloth/Qwen3.5-2B-MTP-GGUF","revision":"e05864f8066d874d5f85aaff007ae57a2a7d1efe","filename":"Qwen3.5-2B-Q4_K_M.gguf","sha256":"18c92228fc1498a02506f64593f7cc8cc02f406f732a217c6ba99ad1254d4f0b","approxSizeBytes":1329851808,"quantization":"Q4_K_M"},"mlx":{"huggingfaceRepo":"mlx-community/Qwen3.5-2B-4bit","revision":"674aaa7240b91e8012fcad5d791b7dfe5ba90207","files":[{"name":"chat_template.jinja","sha256":"273d8e0e683b885071fb17e08d71e5f2a5ddfb5309756181681de4f5a1822d80","sizeBytes":7755},{"name":"config.json","sha256":"beb7fc5a6e0405fe332821cf1a8ef7b69bb390a8c8933171647de5579debf949","sizeBytes":3113},{"name":"model.safetensors","sha256":"713fe7e5d3c3965f7106b0d0ee17615f7869c23c8d327996df8c1196fbcf07d5","sizeBytes":1722271785},{"name":"model.safetensors.index.json","sha256":"8294c05cca7d53a6c33e3db2b379539bd296d054e0b689711b16b6ac93c7e49d","sizeBytes":81722},{"name":"preprocessor_config.json","sha256":"27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516","sizeBytes":390},{"name":"processor_config.json","sha256":"14932921ca485d458a04dafd8069fbb0a4505622a48208d19ed247115801385b","sizeBytes":1300},{"name":"tokenizer.json","sha256":"87a7830d63fcf43bf241c3c5242e96e62dd3fdc29224ca26fed8ea333db72de4","sizeBytes":19989343},{"name":"tokenizer_config.json","sha256":"e98f1901ac6f0adff67b1d540bfa0c36ac1a0cf59eb72ed78146ef89aafa1182","sizeBytes":1139},{"name":"video_preprocessor_config.json","sha256":"7768af27c1fafa9cc9011c1dc20067e03f8915e03b63504550e11d5066986d13","sizeBytes":385},{"name":"vocab.json","sha256":"ce99b4cb2983d118806ce0a8b777a35b093e2000a503ebde25853284c9dfa003","sizeBytes":6722759}],"approxSizeBytes":1749079691,"quantization":"4bit"},"availableVersions":["1.1.3","1.1.2","1.1.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"qwen3.5-4b-q4","name":"Qwen 3.5 (4B, Q4)","description":"Alibaba's Qwen 3.5 at 4B parameters. Multimodal (text + images) with native tool calling and a 256K context window. A balanced compact default for modern laptops.","tags":["alibaba","multimodal","vision","tools"],"maintainer":{"name":"Alibaba","url":"https://ollama.com/library/qwen3.5"},"license":"Apache-2.0","licenseClass":"open","licenseShortName":"Apache 2.0","minGezelVersion":"1.26227","version":"1.1.3","releasedAt":"2026-08-15T00:00:00Z","parameterSize":"4B","approxSizeBytes":2834975040,"supportsTools":true,"contextWindow":256000,"upstream":"https://ollama.com/library/qwen3.5","category":"general","style":{"family":"qwen","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["provider.merge-system-messages","reasoning.strip-think-tags","prompt.private-reasoning-guidance","prompt.tool-cookbook-condensed","fabrication.detect-past-tense-no-tools","mcp.compact-tool-schemas","mcp.relax-required-fields","mcp.default-missing-fields","turn.ollama-num-predict-bumped","turn.preamble-folding","turn.ramble-detection","tools.mlx-grammar","prompt.prefer-writefile-edits","prompt.derive-by-execution"],"tuning":{"sampling":{"temperature":0.7,"topP":0.8,"topK":20,"minP":0},"samplingWhenThinking":{"temperature":0.6,"topP":0.95},"reasoning":{"thinkingBudget":2048,"enableThinking":true},"promptTags":{"enableThinkingTag":"/think","disableThinkingTag":"/no_think"},"engine":{"llamaCpp":{"spec":{"mtp":true,"nMax":4}}},"profiles":{"thinking-general":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"repetitionPenalty":1.05}},"thinking-coding":{"sampling":{"temperature":0.5,"topP":0.9,"topK":20,"repetitionPenalty":1.05}},"thinking-precise":{"sampling":{"temperature":0.3,"topP":0.9,"topK":10,"repetitionPenalty":1.05}},"instruct":{"sampling":{"temperature":0.7,"topP":0.8,"topK":20,"repetitionPenalty":1.1}},"creative":{"sampling":{"temperature":0.9,"topP":0.95,"topK":40,"repetitionPenalty":1.1}}}},"ollama":{"tag":"qwen3.5:4b"},"llamaCpp":{"huggingfaceRepo":"unsloth/Qwen3.5-4B-MTP-GGUF","revision":"86835bf9949e4d14d6860f7910b1340ad4f271a9","filename":"Qwen3.5-4B-Q4_K_M.gguf","sha256":"3874209241c9a397e2f62cd3f70f80fd2dfbf0dfccb6838416bdb48a714e8630","approxSizeBytes":2834975040,"quantization":"Q4_K_M"},"mlx":{"huggingfaceRepo":"mlx-community/Qwen3.5-4B-4bit","revision":"0e7ffd5c629ef7719d4cbc04069232580bfa9d9c","files":[{"name":"chat_template.jinja","sha256":"a4aee8afcf2e0711942cf848899be66016f8d14a889ff9ede07bca099c28f715","sizeBytes":7756},{"name":"config.json","sha256":"f3efc81b2ea8d96a45301037d3ccccbcccdef44a961845c87f286aaddbc6eaaa","sizeBytes":3366},{"name":"model.safetensors","sha256":"5fb9acd0246866381cf8c5c354c6db1019f6498eec4ccb4f5edcc71ffeacb2db","sizeBytes":3034300695},{"name":"model.safetensors.index.json","sha256":"52e534c41f7b97708329c85f762e5882bf48bd5955a422c6ae74eba321e6048a","sizeBytes":101944},{"name":"preprocessor_config.json","sha256":"27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516","sizeBytes":390},{"name":"processor_config.json","sha256":"14932921ca485d458a04dafd8069fbb0a4505622a48208d19ed247115801385b","sizeBytes":1300},{"name":"tokenizer.json","sha256":"87a7830d63fcf43bf241c3c5242e96e62dd3fdc29224ca26fed8ea333db72de4","sizeBytes":19989343},{"name":"tokenizer_config.json","sha256":"e98f1901ac6f0adff67b1d540bfa0c36ac1a0cf59eb72ed78146ef89aafa1182","sizeBytes":1139},{"name":"video_preprocessor_config.json","sha256":"7768af27c1fafa9cc9011c1dc20067e03f8915e03b63504550e11d5066986d13","sizeBytes":385},{"name":"vocab.json","sha256":"ce99b4cb2983d118806ce0a8b777a35b093e2000a503ebde25853284c9dfa003","sizeBytes":6722759}],"approxSizeBytes":3061129077,"quantization":"4bit"},"availableVersions":["1.1.3","1.1.2","1.1.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"qwen3.5-9b-q4","name":"Qwen 3.5 (9B, Q4)","description":"Alibaba's Qwen 3.5 at 9B parameters. Multimodal (text + images), native tool calling, 256K context. Strong reasoning + tool use for devices with a 12GB+ inference budget — the small-tier sweet spot for tool-heavy work.","tags":["alibaba","multimodal","vision","tools"],"maintainer":{"name":"Alibaba","url":"https://ollama.com/library/qwen3.5"},"license":"Apache-2.0","licenseClass":"open","licenseShortName":"Apache 2.0","minGezelVersion":"1.26227","version":"1.1.3","releasedAt":"2026-08-15T00:00:00Z","parameterSize":"9B","approxSizeBytes":5868826976,"supportsTools":true,"contextWindow":262144,"upstream":"https://ollama.com/library/qwen3.5","category":"general","style":{"family":"qwen","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","prompt.private-reasoning-guidance","prompt.tool-cookbook-condensed","prompt.meester-build-prelude","fabrication.detect-past-tense-no-tools","fabrication.detect-claim-without-tool","mcp.compact-tool-schemas","mcp.relax-required-fields","mcp.default-missing-fields","turn.ollama-num-predict-bumped","turn.preamble-folding","turn.ramble-detection","tools.mlx-grammar","provider.merge-system-messages","validate.inline-js-parses","prompt.prefer-writefile-edits","prompt.derive-by-execution"],"tuning":{"sampling":{"temperature":0.7,"topP":0.8,"topK":20,"minP":0,"maxTokens":16384,"repetitionPenalty":1.1,"repetitionContext":20},"samplingWhenThinking":{"temperature":0.6,"topP":0.95},"reasoning":{"thinkingBudget":2048,"enableThinking":true},"promptTags":{"enableThinkingTag":"/think","disableThinkingTag":"/no_think"},"engine":{"llamaCpp":{"spec":{"mtp":true,"nMax":4}}},"profiles":{"thinking-general":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"repetitionPenalty":1.05}},"thinking-coding":{"sampling":{"temperature":0.5,"topP":0.9,"topK":20,"repetitionPenalty":1.05,"repetitionContext":32,"dry":{"multiplier":0.8,"base":1.75,"allowedLength":2}}},"thinking-precise":{"sampling":{"temperature":0.3,"topP":0.9,"topK":10,"repetitionPenalty":1.05}},"instruct":{"sampling":{"temperature":0.7,"topP":0.8,"topK":20,"repetitionPenalty":1.1}},"creative":{"sampling":{"temperature":0.9,"topP":0.95,"topK":40,"repetitionPenalty":1.1}}}},"ollama":{"tag":"qwen3.5:9b"},"llamaCpp":{"huggingfaceRepo":"unsloth/Qwen3.5-9B-MTP-GGUF","revision":"9716a636ee4bddc3fed678220b7a33dd2a4160ae","filename":"Qwen3.5-9B-Q4_K_M.gguf","sha256":"e8dd94817e95d6c0939102049d068418269978377b13616c4726235e232841fe","approxSizeBytes":5868826976,"quantization":"Q4_K_M"},"mlx":{"huggingfaceRepo":"mlx-community/Qwen3.5-9B-4bit","revision":"8b2b98c00a6b4d291155e4890773ca8f769aee53","files":[{"name":"chat_template.jinja","sha256":"a4aee8afcf2e0711942cf848899be66016f8d14a889ff9ede07bca099c28f715","sizeBytes":7756},{"name":"config.json","sha256":"a96942cb6a8a1d3f1d17514d81a1925d04362a6a3233b389d13012211baaa9f8","sizeBytes":3331},{"name":"model-00001-of-00002.safetensors","sha256":"a68b87558c6ef43f74c2bd63ce7e9092ceddc3101f3def0030774bae5f42aadd","sizeBytes":5349771222},{"name":"model-00002-of-00002.safetensors","sha256":"b0a770bf8469c7f3f18756a0e0283f1c1174344a83e059a4e483f6af4907352d","sizeBytes":600449850},{"name":"model.safetensors.index.json","sha256":"dd023913fb87cfdae27fb11dcf695117c925833796ccac3c64117d6652d8ff1e","sizeBytes":123592},{"name":"preprocessor_config.json","sha256":"27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516","sizeBytes":390},{"name":"processor_config.json","sha256":"14932921ca485d458a04dafd8069fbb0a4505622a48208d19ed247115801385b","sizeBytes":1300},{"name":"tokenizer.json","sha256":"87a7830d63fcf43bf241c3c5242e96e62dd3fdc29224ca26fed8ea333db72de4","sizeBytes":19989343},{"name":"tokenizer_config.json","sha256":"e98f1901ac6f0adff67b1d540bfa0c36ac1a0cf59eb72ed78146ef89aafa1182","sizeBytes":1139},{"name":"video_preprocessor_config.json","sha256":"7768af27c1fafa9cc9011c1dc20067e03f8915e03b63504550e11d5066986d13","sizeBytes":385},{"name":"vocab.json","sha256":"ce99b4cb2983d118806ce0a8b777a35b093e2000a503ebde25853284c9dfa003","sizeBytes":6722759}],"approxSizeBytes":5977071067,"quantization":"4bit"},"availableVersions":["1.1.3","1.1.2","1.1.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"qwen3.6-27b-q4","name":"Qwen 3.6 (27B, Q4)","description":"Alibaba's Qwen 3.6 at 27B parameters. Multimodal (text + image + video), 256K native context, explicit native tool-calling support. Capable-tier on-device option for machines with 24GB+ memory.","tags":["alibaba","multimodal","vision","video","tools","long-context"],"maintainer":{"name":"Alibaba","url":"https://ollama.com/library/qwen3.6"},"license":"Apache-2.0","licenseClass":"open","licenseShortName":"Apache 2.0","recoScore":20,"minGezelVersion":"1.26227","version":"1.1.5","releasedAt":"2026-08-15T00:00:00Z","parameterSize":"27B","approxSizeBytes":17106773120,"supportsTools":true,"contextWindow":262144,"upstream":"https://ollama.com/library/qwen3.6","category":"general","style":{"family":"qwen","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","provider.merge-system-messages","mcp.compact-tool-schemas","provider.compact-write-transcript","fabrication.detect-past-tense-no-tools","turn.ollama-num-predict-bumped","turn.preamble-folding","turn.ramble-detection","tools.mlx-grammar","prompt.derive-by-execution"],"tuning":{"sampling":{"temperature":0.7,"topP":0.8,"topK":20,"minP":0,"maxTokens":8192},"samplingWhenThinking":{"temperature":0.6,"topP":0.95},"reasoning":{"thinkingBudget":4096,"enableThinking":true},"promptTags":{"enableThinkingTag":"/think","disableThinkingTag":"/no_think"},"engine":{"llamaCpp":{"spec":{"mtp":true,"nMax":4}}},"profiles":{"thinking-general":{"sampling":{"temperature":0.8,"topP":0.95,"topK":20,"minP":0,"maxTokens":12288,"repetitionPenalty":1},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"thinking-coding":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":16384,"repetitionPenalty":1},"reasoning":{"thinkingBudget":6144,"enableThinking":true}},"thinking-precise":{"sampling":{"temperature":0.4,"topP":0.9,"topK":20,"minP":0,"maxTokens":6144,"seed":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"instruct":{"sampling":{"temperature":0.7,"topP":0.8,"topK":20,"minP":0,"maxTokens":4096,"repetitionPenalty":1,"presencePenalty":1.5},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1.1,"topP":0.95,"topK":40,"maxTokens":8192},"reasoning":{"enableThinking":false}}}},"ollama":{"tag":"qwen3.6"},"llamaCpp":{"huggingfaceRepo":"unsloth/Qwen3.6-27B-MTP-GGUF","revision":"5cb35eb3dcbf52dbce5f87dbc64df6aaffadcace","filename":"Qwen3.6-27B-Q4_K_M.gguf","sha256":"a7cbd3ecc0e3f9b333edee61ae66bc87ed713c5d49587a8355814722ed329e0f","approxSizeBytes":17106773120,"quantization":"Q4_K_M"},"mlx":{"huggingfaceRepo":"mlx-community/Qwen3.6-27B-4bit","revision":"c000ac2c2057d94be3fa931000c31723aac53282","files":[{"name":"chat_template.jinja","sha256":"e84f32a23fdda27689f868aa4a1a5621f41133e51a48d7f3efcbea2839574259","sizeBytes":7764},{"name":"config.json","sha256":"ede24666ac51e6d5ab948a8a1e6c72fc6effd941ba3aabb6dd942eb517c78043","sizeBytes":4573},{"name":"generation_config.json","sha256":"e70c136c1b78ddc1fb0905bac8e733a4dc448d4f852a5dd75143fffc70be550e","sizeBytes":202},{"name":"model-00001-of-00003.safetensors","sha256":"2689680915661f040c50c35244d08b336def279e509e1ca11873f8dd1b0e7ce0","sizeBytes":5343268752},{"name":"model-00002-of-00003.safetensors","sha256":"a46183727b2c5cd16613fd8395f5e9e7cc4ad679644558cc87c9406fe334463d","sizeBytes":5354185100},{"name":"model-00003-of-00003.safetensors","sha256":"ac23bf70b1f239a040921d6f93770d74176fd435dbf44e42317053d06c68d702","sizeBytes":5357087747},{"name":"model.safetensors.index.json","sha256":"13b840162b4cb35c66fef7df072f7dbb4717908204364f5e5d9f9655a2758fa8","sizeBytes":218281},{"name":"preprocessor_config.json","sha256":"27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516","sizeBytes":390},{"name":"processor_config.json","sha256":"51c5f33646392e0bf1ed3e96be02504da47406c21c6cb86925d8908d1a6c4da7","sizeBytes":1312},{"name":"tokenizer.json","sha256":"87a7830d63fcf43bf241c3c5242e96e62dd3fdc29224ca26fed8ea333db72de4","sizeBytes":19989343},{"name":"tokenizer_config.json","sha256":"e98f1901ac6f0adff67b1d540bfa0c36ac1a0cf59eb72ed78146ef89aafa1182","sizeBytes":1139},{"name":"video_preprocessor_config.json","sha256":"7768af27c1fafa9cc9011c1dc20067e03f8915e03b63504550e11d5066986d13","sizeBytes":385},{"name":"vocab.json","sha256":"ce99b4cb2983d118806ce0a8b777a35b093e2000a503ebde25853284c9dfa003","sizeBytes":6722759}],"approxSizeBytes":16081487747,"quantization":"4bit"},"availableVersions":["1.1.5","1.1.4","1.1.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"qwen3.6-27b-q8","name":"Qwen 3.6 (27B, Q8)","description":"Alibaba's Qwen 3.6 at 27B parameters, 8-bit quantization for higher fidelity than the Q4 build (at roughly double the memory footprint). Multimodal (text + image + video), 256K native context, explicit native tool-calling support. For machines with ~40GB+ memory.","tags":["alibaba","multimodal","vision","video","tools","long-context"],"maintainer":{"name":"Alibaba","url":"https://ollama.com/library/qwen3.6"},"license":"Apache-2.0","licenseClass":"open","licenseShortName":"Apache 2.0","recoScore":20,"minGezelVersion":"1.26227","version":"1.0.3","releasedAt":"2026-08-15T00:00:00Z","parameterSize":"27B","approxSizeBytes":29047084160,"supportsTools":true,"contextWindow":262144,"upstream":"https://ollama.com/library/qwen3.6","category":"general","style":{"family":"qwen","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","mcp.compact-tool-schemas","fabrication.detect-past-tense-no-tools","turn.ollama-num-predict-bumped","turn.preamble-folding","turn.ramble-detection","tools.mlx-grammar","prompt.derive-by-execution"],"tuning":{"sampling":{"temperature":0.7,"topP":0.8,"topK":20,"minP":0,"maxTokens":8192},"samplingWhenThinking":{"temperature":0.6,"topP":0.95},"reasoning":{"thinkingBudget":4096,"enableThinking":true},"promptTags":{"enableThinkingTag":"/think","disableThinkingTag":"/no_think"},"engine":{"llamaCpp":{"spec":{"mtp":true,"nMax":4}}},"profiles":{"thinking-general":{"sampling":{"temperature":0.8,"topP":0.95,"topK":20,"minP":0,"maxTokens":12288,"repetitionPenalty":1},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"thinking-coding":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":16384,"repetitionPenalty":1},"reasoning":{"thinkingBudget":6144,"enableThinking":true}},"thinking-precise":{"sampling":{"temperature":0.4,"topP":0.9,"topK":20,"minP":0,"maxTokens":6144,"seed":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"instruct":{"sampling":{"temperature":0.7,"topP":0.8,"topK":20,"minP":0,"maxTokens":4096,"repetitionPenalty":1,"presencePenalty":1.5},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1.1,"topP":0.95,"topK":40,"maxTokens":8192},"reasoning":{"enableThinking":false}}}},"llamaCpp":{"huggingfaceRepo":"unsloth/Qwen3.6-27B-MTP-GGUF","revision":"5cb35eb3dcbf52dbce5f87dbc64df6aaffadcace","filename":"Qwen3.6-27B-Q8_0.gguf","sha256":"9408dcb356cc061a05c139e5647cbde0698ff980c6a69f7fc214e9989f86cfa8","approxSizeBytes":29047084160,"quantization":"Q8_0"},"mlx":{"huggingfaceRepo":"mlx-community/Qwen3.6-27B-8bit","revision":"c5a593c1475a746e43a543b0a02bd2b357e5745f","files":[{"name":"chat_template.jinja","sha256":"e84f32a23fdda27689f868aa4a1a5621f41133e51a48d7f3efcbea2839574259","sizeBytes":7764},{"name":"config.json","sha256":"93f5fa0d6c683b2278a5505337d0d756bbf4e633f9432dd15633aac50a87e55e","sizeBytes":4573},{"name":"generation_config.json","sha256":"e70c136c1b78ddc1fb0905bac8e733a4dc448d4f852a5dd75143fffc70be550e","sizeBytes":202},{"name":"model-00001-of-00006.safetensors","sha256":"f824099df8957f3d5e773c2faad5316ed6e43cdc8e41497e4f6c96bb87bb160d","sizeBytes":5317707349},{"name":"model-00002-of-00006.safetensors","sha256":"6b0ac8faafe5ed25f5c19ffe74b5ea9980c18d04baf4d98169db1c67a2ed35e5","sizeBytes":5354102528},{"name":"model-00003-of-00006.safetensors","sha256":"4923f72bbfcfab5749a9a8d88f654515bbf15e3f6f01f3199ff67a5f50c58f85","sizeBytes":5354184654},{"name":"model-00004-of-00006.safetensors","sha256":"e0ee725dd0fc3cc7ca2a94734f18f9ab5ea3bdfa0c749353687d6f3442c0ab64","sizeBytes":5337309675},{"name":"model-00005-of-00006.safetensors","sha256":"e6731a152f2ec3773526354b7104e9be1231b2bc9b1ec9cd033e2cc4470480ec","sizeBytes":5292848520},{"name":"model-00006-of-00006.safetensors","sha256":"5c8550886d4bd9249079cf1cb1e4cd572e8e491f5db60ae8a78e957be1dadb24","sizeBytes":2845065535},{"name":"model.safetensors.index.json","sha256":"4301ca600788afb2a45c0aa367140d6144ecf617d0a51a8187fc6755d65301f8","sizeBytes":218281},{"name":"preprocessor_config.json","sha256":"27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516","sizeBytes":390},{"name":"processor_config.json","sha256":"51c5f33646392e0bf1ed3e96be02504da47406c21c6cb86925d8908d1a6c4da7","sizeBytes":1312},{"name":"tokenizer.json","sha256":"87a7830d63fcf43bf241c3c5242e96e62dd3fdc29224ca26fed8ea333db72de4","sizeBytes":19989343},{"name":"tokenizer_config.json","sha256":"e98f1901ac6f0adff67b1d540bfa0c36ac1a0cf59eb72ed78146ef89aafa1182","sizeBytes":1139},{"name":"video_preprocessor_config.json","sha256":"7768af27c1fafa9cc9011c1dc20067e03f8915e03b63504550e11d5066986d13","sizeBytes":385},{"name":"vocab.json","sha256":"ce99b4cb2983d118806ce0a8b777a35b093e2000a503ebde25853284c9dfa003","sizeBytes":6722759}],"approxSizeBytes":29528164409,"quantization":"8bit"},"availableVersions":["1.0.3","1.0.2","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"qwen3.6-35b-a3b-q4","name":"Qwen 3.6 (35B-A3B, Q4)","description":"Alibaba's Qwen 3.6 at 35B total parameters with only 3B active per token (Mixture-of-Experts: 256 experts, 8 routed + 1 shared). Multimodal (text + image + video), 256K native context (extensible to ~1M with YaRN), explicit native tool-calling support. MoE sparsity keeps inference light despite the larger total parameter count.","tags":["alibaba","multimodal","vision","video","tools","long-context","moe"],"maintainer":{"name":"Alibaba","url":"https://huggingface.co/Qwen/Qwen3.6-35B-A3B"},"license":"Apache-2.0","licenseClass":"open","licenseShortName":"Apache 2.0","recoScore":20,"minGezelVersion":"1.26227","version":"1.0.2","releasedAt":"2026-08-15T00:00:00Z","parameterSize":"35B","approxSizeBytes":22663387424,"supportsTools":true,"contextWindow":262144,"upstream":"https://huggingface.co/Qwen/Qwen3.6-35B-A3B","category":"general","style":{"family":"qwen","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["provider.merge-system-messages","reasoning.strip-think-tags","mcp.compact-tool-schemas","prompt.private-reasoning-guidance","prompt.tool-cookbook-condensed","fabrication.detect-past-tense-no-tools","turn.ollama-num-predict-bumped","turn.preamble-folding","turn.ramble-detection","tools.mlx-grammar"],"tuning":{"sampling":{"temperature":0.7,"topP":0.8,"topK":20,"minP":0,"maxTokens":8192},"samplingWhenThinking":{"temperature":0.6,"topP":0.95},"reasoning":{"thinkingBudget":4096,"enableThinking":true},"promptTags":{"enableThinkingTag":"/think","disableThinkingTag":"/no_think"},"engine":{"llamaCpp":{"spec":{"mtp":true,"nMax":4}}},"profiles":{"thinking-general":{"sampling":{"temperature":0.8,"topP":0.95,"topK":20,"minP":0,"maxTokens":12288,"repetitionPenalty":1},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"thinking-coding":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":16384,"repetitionPenalty":1},"reasoning":{"thinkingBudget":6144,"enableThinking":true}},"thinking-precise":{"sampling":{"temperature":0.4,"topP":0.9,"topK":20,"minP":0,"maxTokens":6144,"seed":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"instruct":{"sampling":{"temperature":0.7,"topP":0.8,"topK":20,"minP":0,"maxTokens":4096,"repetitionPenalty":1,"presencePenalty":1.5},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1.1,"topP":0.95,"topK":40,"maxTokens":8192},"reasoning":{"enableThinking":false}}}},"llamaCpp":{"huggingfaceRepo":"unsloth/Qwen3.6-35B-A3B-MTP-GGUF","revision":"5bc3e238d916f48a861bac2f8a1990a0e9b7e98d","filename":"Qwen3.6-35B-A3B-UD-Q4_K_M.gguf","sha256":"0b21525e972670ed59e1812e170b27c26355381f0656ecc4e25617ece7dac58b","approxSizeBytes":22663387424,"quantization":"UD-Q4_K_M"},"mlx":{"huggingfaceRepo":"mlx-community/Qwen3.6-35B-A3B-4bit","revision":"38740b847e4cb78f352aba30aa41c76e08e6eb46","files":[{"name":"chat_template.jinja","sha256":"e84f32a23fdda27689f868aa4a1a5621f41133e51a48d7f3efcbea2839574259","sizeBytes":7764},{"name":"config.json","sha256":"a822a9e48b0aafbe3144ec37d4fb067e178ed96615ce6e4420b3149893cc5767","sizeBytes":23591},{"name":"generation_config.json","sha256":"e70c136c1b78ddc1fb0905bac8e733a4dc448d4f852a5dd75143fffc70be550e","sizeBytes":202},{"name":"model-00001-of-00004.safetensors","sha256":"09f3e6ecb0b7af6e6a38bc8169a134c821b0924c2679b2bb8f4426ad38d032b8","sizeBytes":5288196018},{"name":"model-00002-of-00004.safetensors","sha256":"31dcdb1c49eebdb1505bd14e3cb33f9cf900bd2546b638f2464694ae763a033f","sizeBytes":5368472749},{"name":"model-00003-of-00004.safetensors","sha256":"3e66de06a1f03dade16a612a368cfce4a4c9caa4efd7d28185454384082cec03","sizeBytes":5368324139},{"name":"model-00004-of-00004.safetensors","sha256":"a5d0cf03519c26f8b506df6b0ba60526e5c08c8cea22d0c21ce92950e58a5422","sizeBytes":4377211365},{"name":"model.safetensors.index.json","sha256":"0b28df60e33753a14e816d3b31577ae2c93884c58430a4a6de6ae9ea483842ea","sizeBytes":215755},{"name":"preprocessor_config.json","sha256":"27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516","sizeBytes":390},{"name":"processor_config.json","sha256":"51c5f33646392e0bf1ed3e96be02504da47406c21c6cb86925d8908d1a6c4da7","sizeBytes":1312},{"name":"tokenizer.json","sha256":"87a7830d63fcf43bf241c3c5242e96e62dd3fdc29224ca26fed8ea333db72de4","sizeBytes":19989343},{"name":"tokenizer_config.json","sha256":"e98f1901ac6f0adff67b1d540bfa0c36ac1a0cf59eb72ed78146ef89aafa1182","sizeBytes":1139},{"name":"video_preprocessor_config.json","sha256":"7768af27c1fafa9cc9011c1dc20067e03f8915e03b63504550e11d5066986d13","sizeBytes":385},{"name":"vocab.json","sha256":"ce99b4cb2983d118806ce0a8b777a35b093e2000a503ebde25853284c9dfa003","sizeBytes":6722759}],"approxSizeBytes":20429166911,"quantization":"4bit"},"availableVersions":["1.0.2","1.0.1","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"qwen3.6-35b-a3b-q8","name":"Qwen 3.6 (35B-A3B, Q8)","description":"Alibaba's Qwen 3.6 at 35B total parameters with only 3B active per token (Mixture-of-Experts: 256 experts, 8 routed + 1 shared), 8-bit quantization for higher fidelity than the Q4 build (at roughly double the memory footprint). Multimodal (text + image + video), 256K native context (extensible to ~1M with YaRN), explicit native tool-calling support.","tags":["alibaba","multimodal","vision","video","tools","long-context","moe"],"maintainer":{"name":"Alibaba","url":"https://huggingface.co/Qwen/Qwen3.6-35B-A3B"},"license":"Apache-2.0","licenseClass":"open","licenseShortName":"Apache 2.0","recoScore":20,"minGezelVersion":"1.26227","version":"1.0.2","releasedAt":"2026-08-15T00:00:00Z","parameterSize":"35B","approxSizeBytes":37801097504,"supportsTools":true,"contextWindow":262144,"upstream":"https://huggingface.co/Qwen/Qwen3.6-35B-A3B","category":"general","style":{"family":"qwen","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","mcp.compact-tool-schemas","prompt.private-reasoning-guidance","prompt.tool-cookbook-condensed","fabrication.detect-past-tense-no-tools","turn.ollama-num-predict-bumped","turn.preamble-folding","turn.ramble-detection","tools.mlx-grammar"],"tuning":{"sampling":{"temperature":0.7,"topP":0.8,"topK":20,"minP":0,"maxTokens":8192},"samplingWhenThinking":{"temperature":0.6,"topP":0.95},"reasoning":{"thinkingBudget":4096,"enableThinking":true},"promptTags":{"enableThinkingTag":"/think","disableThinkingTag":"/no_think"},"engine":{"llamaCpp":{"spec":{"mtp":true,"nMax":4}}},"profiles":{"thinking-general":{"sampling":{"temperature":0.8,"topP":0.95,"topK":20,"minP":0,"maxTokens":12288,"repetitionPenalty":1},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"thinking-coding":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":16384,"repetitionPenalty":1},"reasoning":{"thinkingBudget":6144,"enableThinking":true}},"thinking-precise":{"sampling":{"temperature":0.4,"topP":0.9,"topK":20,"minP":0,"maxTokens":6144,"seed":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"instruct":{"sampling":{"temperature":0.7,"topP":0.8,"topK":20,"minP":0,"maxTokens":4096,"repetitionPenalty":1,"presencePenalty":1.5},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1.1,"topP":0.95,"topK":40,"maxTokens":8192},"reasoning":{"enableThinking":false}}}},"llamaCpp":{"huggingfaceRepo":"unsloth/Qwen3.6-35B-A3B-MTP-GGUF","revision":"5bc3e238d916f48a861bac2f8a1990a0e9b7e98d","filename":"Qwen3.6-35B-A3B-Q8_0.gguf","sha256":"c1283d8b80c3e38b2735ddbc9766d3b3126f44d6c484be419d4e101d09a76131","approxSizeBytes":37801097504,"quantization":"Q8_0"},"mlx":{"huggingfaceRepo":"mlx-community/Qwen3.6-35B-A3B-8bit","revision":"e06a74e6236a60c8367e1a3214e83d8b61b637b0","files":[{"name":"chat_template.jinja","sha256":"e84f32a23fdda27689f868aa4a1a5621f41133e51a48d7f3efcbea2839574259","sizeBytes":7764},{"name":"config.json","sha256":"5da49c3a84c5a4a751b720b62b9f8703bdb8a0796b5fc55df3278f8b9d6ce296","sizeBytes":23591},{"name":"generation_config.json","sha256":"e70c136c1b78ddc1fb0905bac8e733a4dc448d4f852a5dd75143fffc70be550e","sizeBytes":202},{"name":"model-00001-of-00008.safetensors","sha256":"ae1ced7360792820cfc12f2e0c8e1ca4d95c712c122e08ebb474b197dee3edaf","sizeBytes":5329915945},{"name":"model-00002-of-00008.safetensors","sha256":"b8fdc3700f7339dc29d0e8504d15bc61e9beda7dc69eea037084cfa4067f1b26","sizeBytes":5365574072},{"name":"model-00003-of-00008.safetensors","sha256":"8a7851d9152dd39369026ab0ac7c369e4e62ce67ea1e3836862ff0c651176675","sizeBytes":5358684778},{"name":"model-00004-of-00008.safetensors","sha256":"3ad6623bb7ff4ddf39ee3854d473d66543ea8fdffc48f03ae4a1dc866da34b36","sizeBytes":5365574256},{"name":"model-00005-of-00008.safetensors","sha256":"ec9d987a3c499146e6e8edd92afb3943dfd35c908a3de0685346c1ea6901e383","sizeBytes":5358684632},{"name":"model-00006-of-00008.safetensors","sha256":"9a843214e1e72bfbae1d2c61283e25ee5930b5ccdbe15dccc7d72fba3a5812c4","sizeBytes":5365574102},{"name":"model-00007-of-00008.safetensors","sha256":"0a1ed4b82de64955eefb212b2eda57acfa1c2330a4258448e5c7f0f8aaf3649a","sizeBytes":5037050550},{"name":"model-00008-of-00008.safetensors","sha256":"41a1d955de1a9a97de3abebc40b5519b02d542adf266fefbd33b24dc674aef39","sizeBytes":540344667},{"name":"model.safetensors.index.json","sha256":"3db12edeebeb65cab9a6eeb63cd74be4e0c74139a75f672701290b98230501cf","sizeBytes":215755},{"name":"preprocessor_config.json","sha256":"27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516","sizeBytes":390},{"name":"processor_config.json","sha256":"51c5f33646392e0bf1ed3e96be02504da47406c21c6cb86925d8908d1a6c4da7","sizeBytes":1312},{"name":"tokenizer.json","sha256":"87a7830d63fcf43bf241c3c5242e96e62dd3fdc29224ca26fed8ea333db72de4","sizeBytes":19989343},{"name":"tokenizer_config.json","sha256":"e98f1901ac6f0adff67b1d540bfa0c36ac1a0cf59eb72ed78146ef89aafa1182","sizeBytes":1139},{"name":"video_preprocessor_config.json","sha256":"7768af27c1fafa9cc9011c1dc20067e03f8915e03b63504550e11d5066986d13","sizeBytes":385},{"name":"vocab.json","sha256":"ce99b4cb2983d118806ce0a8b777a35b093e2000a503ebde25853284c9dfa003","sizeBytes":6722759}],"approxSizeBytes":37748365642,"quantization":"8bit"},"availableVersions":["1.0.2","1.0.1","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"qwen3.8-27b-iq1-s","name":"Qwen 3.8 (27B, IQ1_S)","description":"Alibaba's Qwen 3.8 at 27B parameters: a dense, multimodal agentic model with native text, image, and video understanding, 262K context, flexible reasoning effort, MTP, and native tool calling. Unsloth's dynamic UD-IQ1_S is an extreme-compression build at just over 6GB, making the 27B accessible on machines with 16GB usable memory while trading more fidelity than the Q2 build for the smaller footprint.","tags":["alibaba","agentic","coding","multimodal","vision","video","tools","reasoning","long-context","low-memory"],"maintainer":{"name":"Alibaba","url":"https://huggingface.co/Qwen/Qwen3.8-27B"},"license":"Apache-2.0","licenseClass":"open","licenseShortName":"Apache 2.0","recoScore":20,"version":"1.0.0","releasedAt":"2026-08-23T00:00:00Z","parameterSize":"27B","approxSizeBytes":6192222208,"supportsTools":true,"contextWindow":262144,"upstream":"https://huggingface.co/Qwen/Qwen3.8-27B","category":"general","style":{"family":"qwen","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","provider.merge-system-messages","mcp.compact-tool-schemas","provider.compact-write-transcript","fabrication.detect-past-tense-no-tools","turn.ollama-num-predict-bumped","turn.preamble-folding","turn.ramble-detection","tools.mlx-grammar","prompt.retrieval-first","prompt.workspace-gestalt","prompt.derive-by-execution"],"tuning":{"sampling":{"temperature":1,"topP":0.95,"topK":20,"minP":0,"maxTokens":12288,"repetitionPenalty":1,"presencePenalty":0},"samplingWhenThinking":{"temperature":1,"topP":0.95},"reasoning":{"thinkingBudget":4096,"enableThinking":true,"templateKwargs":{"reasoning_effort":"medium"}},"promptTags":{"enableThinkingTag":"/think","disableThinkingTag":"/no_think"},"engine":{"llamaCpp":{"spec":{"mtp":true,"nMax":4}}},"profiles":{"thinking-general":{"sampling":{"temperature":1,"topP":0.95,"topK":20,"minP":0,"maxTokens":12288,"repetitionPenalty":1,"presencePenalty":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true,"templateKwargs":{"reasoning_effort":"medium"}}},"thinking-deep":{"reasoning":{"thinkingBudget":4096,"enableThinking":true,"templateKwargs":{"reasoning_effort":"xhigh"}}},"thinking-coding":{"sampling":{"temperature":1,"topP":0.95,"topK":20,"minP":0,"maxTokens":16384,"repetitionPenalty":1,"presencePenalty":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true,"templateKwargs":{"reasoning_effort":"medium"}}},"thinking-precise":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":6144,"seed":0,"repetitionPenalty":1,"presencePenalty":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true,"templateKwargs":{"reasoning_effort":"medium"}}},"instruct":{"sampling":{"temperature":0.7,"topP":0.8,"topK":20,"minP":0,"maxTokens":4096,"repetitionPenalty":1,"presencePenalty":1.5},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1,"topP":0.95,"topK":40,"minP":0,"maxTokens":8192,"repetitionPenalty":1,"presencePenalty":1.5},"reasoning":{"enableThinking":false}}}},"llamaCpp":{"huggingfaceRepo":"unsloth/Qwen3.8-27B-GGUF","revision":"4ca720788d1e01f1bff70c033e0d0028fd02e502","filename":"Qwen3.8-27B-UD-IQ1_S.gguf","sha256":"3895b6eaa91e705c06ad1938d16c22e86f073c6a67df86260a1da79be3d1f887","approxSizeBytes":6192222208,"quantization":"UD-IQ1_S","mmproj":{"filename":"mmproj-F16.gguf","sha256":"cbb841a9ee0636b2ec172f5bb8df2ea8dfeb01e90fe7c6126581d662a0b4e43e","sizeBytes":927607488}},"availableVersions":["1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"qwen3.8-27b-q2","name":"Qwen 3.8 (27B, Q2)","description":"Alibaba's Qwen 3.8 at 27B parameters: a dense, multimodal agentic model with native text, image, and video understanding, 262K context, flexible reasoning effort, MTP, and native tool calling. Unsloth's dynamic UD-Q2_K_XL brings the 27B within reach of machines with 16GB+ usable memory while retaining more fidelity than the extreme IQ1_S build.","tags":["alibaba","agentic","coding","multimodal","vision","video","tools","reasoning","long-context"],"maintainer":{"name":"Alibaba","url":"https://huggingface.co/Qwen/Qwen3.8-27B"},"license":"Apache-2.0","licenseClass":"open","licenseShortName":"Apache 2.0","recoScore":20,"version":"1.0.0","releasedAt":"2026-08-23T00:00:00Z","parameterSize":"27B","approxSizeBytes":9828981664,"supportsTools":true,"contextWindow":262144,"upstream":"https://huggingface.co/Qwen/Qwen3.8-27B","category":"general","style":{"family":"qwen","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","provider.merge-system-messages","mcp.compact-tool-schemas","provider.compact-write-transcript","fabrication.detect-past-tense-no-tools","turn.ollama-num-predict-bumped","turn.preamble-folding","turn.ramble-detection","tools.mlx-grammar","prompt.retrieval-first","prompt.workspace-gestalt","prompt.derive-by-execution"],"tuning":{"sampling":{"temperature":1,"topP":0.95,"topK":20,"minP":0,"maxTokens":12288,"repetitionPenalty":1,"presencePenalty":0},"samplingWhenThinking":{"temperature":1,"topP":0.95},"reasoning":{"thinkingBudget":4096,"enableThinking":true,"templateKwargs":{"reasoning_effort":"medium"}},"promptTags":{"enableThinkingTag":"/think","disableThinkingTag":"/no_think"},"engine":{"llamaCpp":{"spec":{"mtp":true,"nMax":4}}},"profiles":{"thinking-general":{"sampling":{"temperature":1,"topP":0.95,"topK":20,"minP":0,"maxTokens":12288,"repetitionPenalty":1,"presencePenalty":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true,"templateKwargs":{"reasoning_effort":"medium"}}},"thinking-deep":{"reasoning":{"thinkingBudget":4096,"enableThinking":true,"templateKwargs":{"reasoning_effort":"xhigh"}}},"thinking-coding":{"sampling":{"temperature":1,"topP":0.95,"topK":20,"minP":0,"maxTokens":16384,"repetitionPenalty":1,"presencePenalty":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true,"templateKwargs":{"reasoning_effort":"medium"}}},"thinking-precise":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":6144,"seed":0,"repetitionPenalty":1,"presencePenalty":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true,"templateKwargs":{"reasoning_effort":"medium"}}},"instruct":{"sampling":{"temperature":0.7,"topP":0.8,"topK":20,"minP":0,"maxTokens":4096,"repetitionPenalty":1,"presencePenalty":1.5},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1,"topP":0.95,"topK":40,"minP":0,"maxTokens":8192,"repetitionPenalty":1,"presencePenalty":1.5},"reasoning":{"enableThinking":false}}}},"llamaCpp":{"huggingfaceRepo":"unsloth/Qwen3.8-27B-GGUF","revision":"4ca720788d1e01f1bff70c033e0d0028fd02e502","filename":"Qwen3.8-27B-UD-Q2_K_XL.gguf","sha256":"fd4730dd8aad070517978752b63d530aeb1740d2283cab9fa24f1e404032ddb0","approxSizeBytes":9828981664,"quantization":"UD-Q2_K_XL","mmproj":{"filename":"mmproj-F16.gguf","sha256":"cbb841a9ee0636b2ec172f5bb8df2ea8dfeb01e90fe7c6126581d662a0b4e43e","sizeBytes":927607488}},"availableVersions":["1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"qwen3.8-27b-q3","name":"Qwen 3.8 (27B, Q3)","description":"Alibaba's Qwen 3.8 at 27B parameters: a dense, multimodal agentic model with native text, image, and video understanding, 262K context, flexible reasoning effort, MTP, and native tool calling. Unsloth's dynamic UD-Q3_K_XL is the smallest build in this line — smaller on disk than a plain Q3_K_M and better preserved at the same bit width — bringing the 27B within reach of machines with 20GB+ usable memory.","tags":["alibaba","agentic","coding","multimodal","vision","video","tools","reasoning","long-context"],"maintainer":{"name":"Alibaba","url":"https://huggingface.co/Qwen/Qwen3.8-27B"},"license":"Apache-2.0","licenseClass":"open","licenseShortName":"Apache 2.0","recoScore":20,"version":"1.0.1","releasedAt":"2026-08-19T00:00:00Z","parameterSize":"27B","approxSizeBytes":13146393504,"supportsTools":true,"contextWindow":262144,"upstream":"https://huggingface.co/Qwen/Qwen3.8-27B","category":"general","style":{"family":"qwen","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","provider.merge-system-messages","mcp.compact-tool-schemas","provider.compact-write-transcript","fabrication.detect-past-tense-no-tools","turn.ollama-num-predict-bumped","turn.preamble-folding","turn.ramble-detection","tools.mlx-grammar","prompt.retrieval-first","prompt.workspace-gestalt","prompt.derive-by-execution"],"tuning":{"sampling":{"temperature":1,"topP":0.95,"topK":20,"minP":0,"maxTokens":12288,"repetitionPenalty":1,"presencePenalty":0},"samplingWhenThinking":{"temperature":1,"topP":0.95},"reasoning":{"thinkingBudget":4096,"enableThinking":true,"templateKwargs":{"reasoning_effort":"medium"}},"promptTags":{"enableThinkingTag":"/think","disableThinkingTag":"/no_think"},"engine":{"llamaCpp":{"spec":{"mtp":true,"nMax":4}}},"profiles":{"thinking-general":{"sampling":{"temperature":1,"topP":0.95,"topK":20,"minP":0,"maxTokens":12288,"repetitionPenalty":1,"presencePenalty":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true,"templateKwargs":{"reasoning_effort":"medium"}}},"thinking-deep":{"reasoning":{"thinkingBudget":4096,"enableThinking":true,"templateKwargs":{"reasoning_effort":"xhigh"}}},"thinking-coding":{"sampling":{"temperature":1,"topP":0.95,"topK":20,"minP":0,"maxTokens":16384,"repetitionPenalty":1,"presencePenalty":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true,"templateKwargs":{"reasoning_effort":"medium"}}},"thinking-precise":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":6144,"seed":0,"repetitionPenalty":1,"presencePenalty":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true,"templateKwargs":{"reasoning_effort":"medium"}}},"instruct":{"sampling":{"temperature":0.7,"topP":0.8,"topK":20,"minP":0,"maxTokens":4096,"repetitionPenalty":1,"presencePenalty":1.5},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1,"topP":0.95,"topK":40,"minP":0,"maxTokens":8192,"repetitionPenalty":1,"presencePenalty":1.5},"reasoning":{"enableThinking":false}}}},"llamaCpp":{"huggingfaceRepo":"unsloth/Qwen3.8-27B-GGUF","revision":"27af057ecb382ddfea5d12837360a8980560e3ed","filename":"Qwen3.8-27B-UD-Q3_K_XL.gguf","sha256":"8c2a45ff85e7674ca185ec8eb6cdeab0e617ed9d8018caed0b64380eb2a67a5e","approxSizeBytes":13146393504,"quantization":"UD-Q3_K_XL","mmproj":{"filename":"mmproj-F16.gguf","sha256":"cbb841a9ee0636b2ec172f5bb8df2ea8dfeb01e90fe7c6126581d662a0b4e43e","sizeBytes":927607488}},"availableVersions":["1.0.1","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"qwen3.8-27b-q4","name":"Qwen 3.8 (27B, Q4)","description":"Alibaba's Qwen 3.8 at 27B parameters: a dense, multimodal agentic model with native text, image, and video understanding, 262K context, flexible reasoning effort, MTP, and native tool calling. Q4_K_M is the practical on-device build for machines with 24GB+ usable memory.","tags":["alibaba","agentic","coding","multimodal","vision","video","tools","reasoning","long-context"],"maintainer":{"name":"Alibaba","url":"https://huggingface.co/Qwen/Qwen3.8-27B"},"license":"Apache-2.0","licenseClass":"open","licenseShortName":"Apache 2.0","recoScore":20,"version":"1.0.3","releasedAt":"2026-08-29T00:00:00Z","parameterSize":"27B","approxSizeBytes":16464440224,"supportsTools":true,"contextWindow":262144,"upstream":"https://huggingface.co/Qwen/Qwen3.8-27B","category":"general","style":{"family":"qwen","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","provider.merge-system-messages","mcp.compact-tool-schemas","provider.compact-write-transcript","fabrication.detect-past-tense-no-tools","turn.ollama-num-predict-bumped","turn.preamble-folding","turn.ramble-detection","tools.mlx-grammar","prompt.retrieval-first","prompt.workspace-gestalt","prompt.derive-by-execution"],"tuning":{"sampling":{"temperature":1,"topP":0.95,"topK":20,"minP":0,"maxTokens":12288,"repetitionPenalty":1,"presencePenalty":0},"samplingWhenThinking":{"temperature":1,"topP":0.95},"reasoning":{"thinkingBudget":4096,"enableThinking":true,"templateKwargs":{"reasoning_effort":"medium"}},"promptTags":{"enableThinkingTag":"/think","disableThinkingTag":"/no_think"},"engine":{"llamaCpp":{"spec":{"mtp":true,"nMax":4}}},"profiles":{"thinking-general":{"sampling":{"temperature":1,"topP":0.95,"topK":20,"minP":0,"maxTokens":12288,"repetitionPenalty":1,"presencePenalty":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true,"templateKwargs":{"reasoning_effort":"medium"}}},"thinking-deep":{"reasoning":{"thinkingBudget":4096,"enableThinking":true,"templateKwargs":{"reasoning_effort":"xhigh"}}},"thinking-coding":{"sampling":{"temperature":1,"topP":0.95,"topK":20,"minP":0,"maxTokens":16384,"repetitionPenalty":1,"presencePenalty":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true,"templateKwargs":{"reasoning_effort":"medium"}}},"thinking-precise":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":6144,"seed":0,"repetitionPenalty":1,"presencePenalty":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true,"templateKwargs":{"reasoning_effort":"medium"}}},"instruct":{"sampling":{"temperature":0.7,"topP":0.8,"topK":20,"minP":0,"maxTokens":4096,"repetitionPenalty":1,"presencePenalty":1.5},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1,"topP":0.95,"topK":40,"minP":0,"maxTokens":8192,"repetitionPenalty":1,"presencePenalty":1.5},"reasoning":{"enableThinking":false}}}},"llamaCpp":{"huggingfaceRepo":"unsloth/Qwen3.8-27B-GGUF","revision":"27af057ecb382ddfea5d12837360a8980560e3ed","filename":"Qwen3.8-27B-UD-Q4_K_M.gguf","sha256":"322e194ff79741c7baa497c240f677f54b201b0efab44ca8e50f122b39123482","approxSizeBytes":16464440224,"quantization":"UD-Q4_K_M","mmproj":{"filename":"mmproj-F16.gguf","sha256":"cbb841a9ee0636b2ec172f5bb8df2ea8dfeb01e90fe7c6126581d662a0b4e43e","sizeBytes":927607488}},"mlx":{"huggingfaceRepo":"mlx-community/Qwen3.8-27B-4bit","revision":"3e6447f082e89cc7f0bc6e5441afd38dfce760ff","files":[{"name":"chat_template.jinja","sha256":"c3cf9e34abf4f9e36c2d72165aa9c132d3e2a725b6c2586aaa3a8af9d7a81041","sizeBytes":8952},{"name":"config.json","sha256":"14b65a0ee06517060a6bbd979bb1a8ff54e7b304b1a1f01d54344b88b8285e85","sizeBytes":4932},{"name":"generation_config.json","sha256":"e70c136c1b78ddc1fb0905bac8e733a4dc448d4f852a5dd75143fffc70be550e","sizeBytes":202},{"name":"model-00001-of-00003.safetensors","sha256":"6cc1508e96fb5d0865dfd5753a79f4ec60651bf3e2a82844a7e8ae9c60528c0d","sizeBytes":5343268662},{"name":"model-00002-of-00003.safetensors","sha256":"83f2a20ca8058f486a3634a27faf99587f4cd3c156a83dee34fb99e6ac178670","sizeBytes":5354185130},{"name":"model-00003-of-00003.safetensors","sha256":"31b8c91ef899f79efaaa69e3d2c096f6e2ebeb2ff20e29222abbd9ebc79e560a","sizeBytes":5357087557},{"name":"model.safetensors.index.json","sha256":"13b840162b4cb35c66fef7df072f7dbb4717908204364f5e5d9f9655a2758fa8","sizeBytes":218281},{"name":"preprocessor_config.json","sha256":"27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516","sizeBytes":390},{"name":"processor_config.json","sha256":"45fc17c8dd2474af6b493b52483c26c0584b0082d368c480f9fa611e73070040","sizeBytes":991},{"name":"tokenizer.json","sha256":"06b9509352d2af50381ab2247e083b80d32d5c0aba91c272ca9ff729b6a0e523","sizeBytes":19989325},{"name":"tokenizer_config.json","sha256":"792fa3f0cb88b111e54ef3134c873531008c4df471d108da17903426e308aa7b","sizeBytes":1165},{"name":"video_preprocessor_config.json","sha256":"7768af27c1fafa9cc9011c1dc20067e03f8915e03b63504550e11d5066986d13","sizeBytes":385},{"name":"vocab.json","sha256":"ce99b4cb2983d118806ce0a8b777a35b093e2000a503ebde25853284c9dfa003","sizeBytes":6722759}],"approxSizeBytes":16081488731,"quantization":"4bit","drafter":{"huggingfaceRepo":"Bendyline/Qwen3.8-27B-mtp-drafter-mlx-4bit","revision":"7e359eb37e379884da87116cc375f8869d3e7783","kind":"mtp","files":[{"name":"config.json","sha256":"bb11ae5c0e28eb0a931ae329d9a9652c82235d2cf2702c993c2a56360a1712a1","sizeBytes":3149},{"name":"model.safetensors","sha256":"76663c101e7e8ea9c0ae17bcb95183cd7f733ce424c912b8b264a7b1c48e4cc6","sizeBytes":238934137},{"name":"tokenizer_config.json","sha256":"b11349aafa7cdc6a320767cf7ceb29ed82f7eda5d65e8e0819e76f0ce947bf27","sizeBytes":17928}],"approxSizeBytes":238955214,"residentBytes":869269504}},"availableVersions":["1.0.3","1.0.2","1.0.1","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"qwen3.8-27b-q6","name":"Qwen 3.8 (27B, Q6)","description":"Alibaba's Qwen 3.8 at 27B parameters: a dense, multimodal agentic model with native text, image, and video understanding, 262K context, flexible reasoning effort, MTP, and native tool calling. Q6_K offers a higher-fidelity middle ground between the practical Q4 and larger Q8 builds, targeting machines with 32GB+ usable memory.","tags":["alibaba","agentic","coding","multimodal","vision","video","tools","reasoning","long-context"],"maintainer":{"name":"Alibaba","url":"https://huggingface.co/Qwen/Qwen3.8-27B"},"license":"Apache-2.0","licenseClass":"open","licenseShortName":"Apache 2.0","recoScore":20,"minGezelVersion":"1.26228","version":"1.0.2","releasedAt":"2026-08-19T00:00:00Z","parameterSize":"27B","approxSizeBytes":21983677344,"supportsTools":true,"contextWindow":262144,"upstream":"https://huggingface.co/Qwen/Qwen3.8-27B","category":"general","style":{"family":"qwen","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","provider.merge-system-messages","mcp.compact-tool-schemas","provider.compact-write-transcript","fabrication.detect-past-tense-no-tools","turn.ollama-num-predict-bumped","turn.preamble-folding","turn.ramble-detection","tools.mlx-grammar","prompt.retrieval-first","prompt.workspace-gestalt","prompt.derive-by-execution"],"tuning":{"sampling":{"temperature":1,"topP":0.95,"topK":20,"minP":0,"maxTokens":12288,"repetitionPenalty":1,"presencePenalty":0},"samplingWhenThinking":{"temperature":1,"topP":0.95},"reasoning":{"thinkingBudget":4096,"enableThinking":true,"templateKwargs":{"reasoning_effort":"medium"}},"promptTags":{"enableThinkingTag":"/think","disableThinkingTag":"/no_think"},"engine":{"llamaCpp":{"spec":{"mtp":true,"nMax":4}}},"profiles":{"thinking-general":{"sampling":{"temperature":1,"topP":0.95,"topK":20,"minP":0,"maxTokens":12288,"repetitionPenalty":1,"presencePenalty":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true,"templateKwargs":{"reasoning_effort":"medium"}}},"thinking-deep":{"reasoning":{"thinkingBudget":4096,"enableThinking":true,"templateKwargs":{"reasoning_effort":"xhigh"}}},"thinking-coding":{"sampling":{"temperature":1,"topP":0.95,"topK":20,"minP":0,"maxTokens":16384,"repetitionPenalty":1,"presencePenalty":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true,"templateKwargs":{"reasoning_effort":"medium"}}},"thinking-precise":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":6144,"seed":0,"repetitionPenalty":1,"presencePenalty":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true,"templateKwargs":{"reasoning_effort":"medium"}}},"instruct":{"sampling":{"temperature":0.7,"topP":0.8,"topK":20,"minP":0,"maxTokens":4096,"repetitionPenalty":1,"presencePenalty":1.5},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1,"topP":0.95,"topK":40,"minP":0,"maxTokens":8192,"repetitionPenalty":1,"presencePenalty":1.5},"reasoning":{"enableThinking":false}}}},"llamaCpp":{"huggingfaceRepo":"unsloth/Qwen3.8-27B-GGUF","revision":"27af057ecb382ddfea5d12837360a8980560e3ed","filename":"Qwen3.8-27B-UD-Q6_K.gguf","sha256":"c9c206812fbe4ac7b76a729e25928b63f2ae89d37f69da7a71c20aec763cd436","approxSizeBytes":21983677344,"quantization":"UD-Q6_K","mmproj":{"filename":"mmproj-F16.gguf","sha256":"cbb841a9ee0636b2ec172f5bb8df2ea8dfeb01e90fe7c6126581d662a0b4e43e","sizeBytes":927607488}},"mlx":{"huggingfaceRepo":"lmstudio-community/Qwen3.8-27B-MLX-6bit","revision":"05f38c1f39e2f39619653616fe8e96a5d676358e","files":[{"name":"chat_template.jinja","sha256":"c3cf9e34abf4f9e36c2d72165aa9c132d3e2a725b6c2586aaa3a8af9d7a81041","sizeBytes":8952},{"name":"config.json","sha256":"f2490d237e42fc8418ee62b7416e360785b7de308f43d8f794ccf4f185bdeec9","sizeBytes":4932},{"name":"generation_config.json","sha256":"e70c136c1b78ddc1fb0905bac8e733a4dc448d4f852a5dd75143fffc70be550e","sizeBytes":202},{"name":"model-00001-of-00005.safetensors","sha256":"39a48bfd79609b341f4ed420cdc92e3edce316cd3f5ef7db2dcd371f48c90588","sizeBytes":5362726126},{"name":"model-00002-of-00005.safetensors","sha256":"d9011deb397afa986754a8abe3872b87a21c2bd6d7f9ed50bd8cba3890b782f9","sizeBytes":5344281968},{"name":"model-00003-of-00005.safetensors","sha256":"760d392182ee77093df96328110596e230a9f4cab37febd70ae29173f7ff7e01","sizeBytes":5331479330},{"name":"model-00004-of-00005.safetensors","sha256":"513fbeb37662c2b6020ebe4d61e5e9192f7abb5970aef0cd291b7a55f445c23e","sizeBytes":5331479394},{"name":"model-00005-of-00005.safetensors","sha256":"6ed59540691cfb8f8adeaa186506d3fc44b0f0ce392c7caf59116bb6ae580c01","sizeBytes":1407912947},{"name":"model.safetensors.index.json","sha256":"dafc019bb8416ae2a289f24c598473b5531b14ca87a0cabfd9b0d6aec67bffc1","sizeBytes":218281},{"name":"preprocessor_config.json","sha256":"27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516","sizeBytes":390},{"name":"processor_config.json","sha256":"45fc17c8dd2474af6b493b52483c26c0584b0082d368c480f9fa611e73070040","sizeBytes":991},{"name":"tokenizer.json","sha256":"06b9509352d2af50381ab2247e083b80d32d5c0aba91c272ca9ff729b6a0e523","sizeBytes":19989325},{"name":"tokenizer_config.json","sha256":"47a7a8371379b07650b22f3c8a78c32fed85c4e35ea88e3da0c4b7a7611e8082","sizeBytes":10404},{"name":"video_preprocessor_config.json","sha256":"7768af27c1fafa9cc9011c1dc20067e03f8915e03b63504550e11d5066986d13","sizeBytes":385},{"name":"vocab.json","sha256":"ce99b4cb2983d118806ce0a8b777a35b093e2000a503ebde25853284c9dfa003","sizeBytes":6722759}],"approxSizeBytes":22804836386,"quantization":"6bit"},"availableVersions":["1.0.2","1.0.1","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"qwen3.8-27b-q8","name":"Qwen 3.8 (27B, Q8)","description":"Alibaba's Qwen 3.8 at 27B parameters: a dense, multimodal agentic model with native text, image, and video understanding, 262K context, flexible reasoning effort, MTP, and native tool calling. Q8_0 and 8-bit MLX preserve more fidelity than the Q4 build at roughly double the memory footprint; intended for machines with 40GB+ usable memory.","tags":["alibaba","agentic","coding","multimodal","vision","video","tools","reasoning","long-context"],"maintainer":{"name":"Alibaba","url":"https://huggingface.co/Qwen/Qwen3.8-27B"},"license":"Apache-2.0","licenseClass":"open","licenseShortName":"Apache 2.0","recoScore":20,"minGezelVersion":"1.26227","version":"1.0.1","releasedAt":"2026-08-15T00:00:00Z","parameterSize":"27B","approxSizeBytes":29047086048,"supportsTools":true,"contextWindow":262144,"upstream":"https://huggingface.co/Qwen/Qwen3.8-27B","category":"general","style":{"family":"qwen","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","provider.merge-system-messages","mcp.compact-tool-schemas","provider.compact-write-transcript","fabrication.detect-past-tense-no-tools","turn.ollama-num-predict-bumped","turn.preamble-folding","turn.ramble-detection","tools.mlx-grammar","prompt.retrieval-first","prompt.workspace-gestalt","prompt.derive-by-execution"],"tuning":{"sampling":{"temperature":1,"topP":0.95,"topK":20,"minP":0,"maxTokens":12288,"repetitionPenalty":1,"presencePenalty":0},"samplingWhenThinking":{"temperature":1,"topP":0.95},"reasoning":{"thinkingBudget":4096,"enableThinking":true,"templateKwargs":{"reasoning_effort":"xhigh"}},"promptTags":{"enableThinkingTag":"/think","disableThinkingTag":"/no_think"},"engine":{"llamaCpp":{"spec":{"mtp":true,"nMax":4}}},"profiles":{"thinking-general":{"sampling":{"temperature":1,"topP":0.95,"topK":20,"minP":0,"maxTokens":12288,"repetitionPenalty":1,"presencePenalty":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true,"templateKwargs":{"reasoning_effort":"xhigh"}}},"thinking-coding":{"sampling":{"temperature":1,"topP":0.95,"topK":20,"minP":0,"maxTokens":16384,"repetitionPenalty":1,"presencePenalty":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true,"templateKwargs":{"reasoning_effort":"xhigh"}}},"thinking-precise":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":6144,"seed":0,"repetitionPenalty":1,"presencePenalty":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true,"templateKwargs":{"reasoning_effort":"medium"}}},"instruct":{"sampling":{"temperature":0.7,"topP":0.8,"topK":20,"minP":0,"maxTokens":4096,"repetitionPenalty":1,"presencePenalty":1.5},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1,"topP":0.95,"topK":40,"minP":0,"maxTokens":8192,"repetitionPenalty":1,"presencePenalty":1.5},"reasoning":{"enableThinking":false}}}},"llamaCpp":{"huggingfaceRepo":"unsloth/Qwen3.8-27B-GGUF","revision":"f1bfb127c64f7072bdd2cad55f258b9c8b2910fe","filename":"Qwen3.8-27B-Q8_0.gguf","sha256":"a680f44a06920e5d689774823782006aa3acc8db95750323373b24139b67e348","approxSizeBytes":29047086048,"quantization":"Q8_0","mmproj":{"filename":"mmproj-F16.gguf","sha256":"cbb841a9ee0636b2ec172f5bb8df2ea8dfeb01e90fe7c6126581d662a0b4e43e","sizeBytes":927607488}},"mlx":{"huggingfaceRepo":"mlx-community/Qwen3.8-27B-8bit","revision":"815b83c0df8ffd1d1b5244cf75fd6ef14fca9ef9","files":[{"name":"chat_template.jinja","sha256":"c3cf9e34abf4f9e36c2d72165aa9c132d3e2a725b6c2586aaa3a8af9d7a81041","sizeBytes":8952},{"name":"config.json","sha256":"8f80874ac3ad8fa386d3f6dc0ea85377f703376e009a03dee0360e08e289a25d","sizeBytes":4932},{"name":"generation_config.json","sha256":"e70c136c1b78ddc1fb0905bac8e733a4dc448d4f852a5dd75143fffc70be550e","sizeBytes":202},{"name":"merges.txt","sha256":"a9d356d7bdf1ef4949e3e748e95b8e10ad9d4e2e838eddc38a0a7b6b94d1db8d","sizeBytes":3353259},{"name":"model-00001-of-00006.safetensors","sha256":"c7921fe72af5c961c3c4230ea25068ed6d1e502d5ecb2b4a53b7c9c213effa0c","sizeBytes":5317707581},{"name":"model-00002-of-00006.safetensors","sha256":"e9d93d15495354045da281f102649b99793e5b6ed0e05852c58f46e6616b54a0","sizeBytes":5354102610},{"name":"model-00003-of-00006.safetensors","sha256":"7015f40310c86a18230e28644832b624532333d5dfbf7584e6c62341dbd8975e","sizeBytes":5354184694},{"name":"model-00004-of-00006.safetensors","sha256":"7dc8ae53ed51d153e6b59499cdf004bf6ef15aab6757c7604ed4834774abc2c2","sizeBytes":5337309653},{"name":"model-00005-of-00006.safetensors","sha256":"8817c22c01aebdcde54eac315e9766f705eb512ba7ba84ac47501c663f930ac5","sizeBytes":5292848464},{"name":"model-00006-of-00006.safetensors","sha256":"fce51843fc07e1c67c5ec6d19edb46e4fa8d2b51a1cb6c8316b0a7cc069c0eb4","sizeBytes":2845065477},{"name":"model.safetensors.index.json","sha256":"4301ca600788afb2a45c0aa367140d6144ecf617d0a51a8187fc6755d65301f8","sizeBytes":218281},{"name":"preprocessor_config.json","sha256":"27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516","sizeBytes":390},{"name":"processor_config.json","sha256":"45fc17c8dd2474af6b493b52483c26c0584b0082d368c480f9fa611e73070040","sizeBytes":991},{"name":"tokenizer.json","sha256":"06b9509352d2af50381ab2247e083b80d32d5c0aba91c272ca9ff729b6a0e523","sizeBytes":19989325},{"name":"tokenizer_config.json","sha256":"792fa3f0cb88b111e54ef3134c873531008c4df471d108da17903426e308aa7b","sizeBytes":1165},{"name":"video_preprocessor_config.json","sha256":"7768af27c1fafa9cc9011c1dc20067e03f8915e03b63504550e11d5066986d13","sizeBytes":385},{"name":"vocab.json","sha256":"ce99b4cb2983d118806ce0a8b777a35b093e2000a503ebde25853284c9dfa003","sizeBytes":6722759}],"approxSizeBytes":29531519120,"quantization":"8bit"},"availableVersions":["1.0.1","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"talkie-1930-13b-q4","name":"Talkie 1930 (13B, Q4)","description":"A 13B instruct model trained solely on pre-1931 English-language text — it writes and converses in an authentic period voice, free of modern anachronisms. Best for creative writing, correspondence, and in-character chat rather than tool use or current-events questions. Runs a community GGUF that rescales talkie's out-of-range layer-14 ffn_down channel so K-quantization stays coherent. 2K context. Apache-2.0.","tags":["talkie-lm","creative","writing","vintage","english"],"maintainer":{"name":"talkie-lm","url":"https://huggingface.co/talkie-lm/talkie-1930-13b-it"},"license":"Apache-2.0","licenseClass":"open","licenseShortName":"Apache 2.0","minGezelVersion":"1.26227","version":"1.0.1","releasedAt":"2026-08-15T00:00:00Z","parameterSize":"13B","approxSizeBytes":8572111136,"supportsTools":false,"contextWindow":2048,"upstream":"https://huggingface.co/talkie-lm/talkie-1930-13b-it","category":"general","style":{"family":"other","reasoningFormat":"none","toolCallFormat":"function-call"},"behaviors":["prompt.minimal-context","turn.preamble-folding",{"id":"turn.ramble-detection","config":{"coldThreshold":4000,"postActionThreshold":1200}},"mcp.compact-tool-schemas"],"tuning":{"sampling":{"temperature":0.8,"topP":0.95,"topK":40,"maxTokens":1024,"repetitionPenalty":1.1,"repetitionContext":64},"reasoning":{"enableThinking":false},"profiles":{"creative":{"sampling":{"temperature":1,"topP":0.95,"topK":60,"maxTokens":1024,"repetitionPenalty":1.05,"repetitionContext":32}}}},"llamaCpp":{"huggingfaceRepo":"zakarth/talkie-1930-13b-it-vulkan-fixed-GGUF","revision":"031719224d71176d33a0434a4c8b041236739571","filename":"talkie-1930-13b-it.Q4_K_M.gguf","sha256":"01c7a43acaa12e602b08e1c785df9bfa9e562d40c7750597b700ef2fcc63e535","approxSizeBytes":8572111136,"quantization":"Q4_K_M"},"availableVersions":["1.0.1","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"ternary-bonsai-27b-q2","name":"Ternary Bonsai 27B (2-bit)","description":"PrismML's ternary 2-bit adaptation of Qwen 3.6 27B. Multimodal (text + image + video), 262K native context, thinking and tool-calling support, packaged for Apple Silicon in roughly 8.5GB. A promising 27B-class on-device option for Macs with 16GB+ unified memory; 24GB+ is recommended for useful context headroom.","tags":["prismml","qwen","ternary","2-bit","multimodal","vision","video","tools","reasoning","long-context"],"maintainer":{"name":"PrismML","url":"https://prismml.com"},"license":"Apache-2.0","licenseClass":"open","licenseShortName":"Apache 2.0","minGezelVersion":"1.26227","version":"1.0.1","releasedAt":"2026-08-15T00:00:00Z","parameterSize":"27B","approxSizeBytes":8521049516,"supportsTools":true,"contextWindow":262144,"upstream":"https://huggingface.co/prism-ml/Ternary-Bonsai-27B-mlx-2bit","category":"general","style":{"family":"qwen","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","provider.merge-system-messages","mcp.compact-tool-schemas","provider.compact-write-transcript","fabrication.detect-past-tense-no-tools","turn.ollama-num-predict-bumped","turn.preamble-folding","turn.ramble-detection","tools.mlx-grammar","prompt.derive-by-execution"],"tuning":{"sampling":{"temperature":0.7,"topP":0.95,"topK":20,"minP":0,"maxTokens":8192},"samplingWhenThinking":{"temperature":0.7,"topP":0.95},"reasoning":{"thinkingBudget":4096,"enableThinking":true},"promptTags":{"enableThinkingTag":"/think","disableThinkingTag":"/no_think"},"profiles":{"thinking-general":{"sampling":{"temperature":0.7,"topP":0.95,"topK":20,"minP":0,"maxTokens":12288,"repetitionPenalty":1},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"thinking-coding":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":16384,"repetitionPenalty":1},"reasoning":{"thinkingBudget":6144,"enableThinking":true}},"thinking-precise":{"sampling":{"temperature":0.4,"topP":0.9,"topK":20,"minP":0,"maxTokens":6144,"seed":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"instruct":{"sampling":{"temperature":0.7,"topP":0.8,"topK":20,"minP":0,"maxTokens":4096,"repetitionPenalty":1,"presencePenalty":1.5},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1.1,"topP":0.95,"topK":40,"maxTokens":8192},"reasoning":{"enableThinking":false}}}},"mlx":{"huggingfaceRepo":"prism-ml/Ternary-Bonsai-27B-mlx-2bit","revision":"70f75f3ad081ab840a42f3304c02c27e7f89bfb7","files":[{"name":"chat_template.jinja","sha256":"e84f32a23fdda27689f868aa4a1a5621f41133e51a48d7f3efcbea2839574259","sizeBytes":7764},{"name":"config.json","sha256":"4204f24e0c84754a59c5fbbc9af2458916916bf9301dbf14be31ef6db41f0f82","sizeBytes":3790},{"name":"merges.txt","sha256":"a9d356d7bdf1ef4949e3e748e95b8e10ad9d4e2e838eddc38a0a7b6b94d1db8d","sizeBytes":3353259},{"name":"model.safetensors","sha256":"8acd4597893ea7004e2d7336c3cf6e3157b8896592bbcf066db004021e45846b","sizeBytes":8490785104},{"name":"model.safetensors.index.json","sha256":"ea95a45cda323247258962e694606dea77881ffbc6565bba84bb9aa3d6031736","sizeBytes":185580},{"name":"preprocessor_config.json","sha256":"27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516","sizeBytes":390},{"name":"processor_config.json","sha256":"18c83d74295314cbc86099e83ad945d300cca54270d3ecc9f4ff8fe8cb89d911","sizeBytes":44},{"name":"tokenizer.json","sha256":"87a7830d63fcf43bf241c3c5242e96e62dd3fdc29224ca26fed8ea333db72de4","sizeBytes":19989343},{"name":"tokenizer_config.json","sha256":"83febe739ecefd99f984f546dfdc10149cedf293b9ee0291b99894341188b613","sizeBytes":1098},{"name":"video_preprocessor_config.json","sha256":"7768af27c1fafa9cc9011c1dc20067e03f8915e03b63504550e11d5066986d13","sizeBytes":385},{"name":"vocab.json","sha256":"ce99b4cb2983d118806ce0a8b777a35b093e2000a503ebde25853284c9dfa003","sizeBytes":6722759}],"approxSizeBytes":8521049516,"quantization":"2bit"},"availableVersions":["1.0.1","1.0.0"]}}]}
|
|
1
|
+
{"schemaVersion":1,"kind":"chat-model","count":54,"entries":[{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"btl4-35b-q4","name":"BTL-4 (35B-A3B, Q4)","description":"Bad Theory Labs' agentic build of Ornith 1.0 35B, tuned for tool-heavy coding and long stretches of unattended work. Native reasoning, native tool calling, and a 256K context window that stays light on memory even when it's full. Capable-tier on-device option for machines with 32GB+ memory — see BTL-4 Compact for a smaller build.","tags":["badtheorylabs","agentic","tools","code","reasoning","long-context","moe"],"maintainer":{"name":"Bad Theory Labs","url":"https://huggingface.co/badtheorylabs"},"license":"Apache-2.0","licenseClass":"open","licenseShortName":"Apache 2.0","recoScore":10,"minGezelVersion":"1.26227","version":"1.0.1","releasedAt":"2026-08-15T00:00:00Z","parameterSize":"35B","approxSizeBytes":21391448192,"supportsTools":true,"contextWindow":262144,"kvBytesPerTokenF16":20480,"kvFixedBytesF16":64389120,"upstream":"https://huggingface.co/badtheorylabs/BTL-4","category":"coding","style":{"family":"qwen","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","prompt.private-reasoning-guidance","prompt.tool-cookbook-condensed","fabrication.detect-past-tense-no-tools","turn.ollama-num-predict-bumped","turn.preamble-folding","mcp.compact-tool-schemas"],"tuning":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":16384},"samplingWhenThinking":{"temperature":0.6,"topP":0.95},"reasoning":{"thinkingBudget":8192,"enableThinking":true},"promptTags":{"enableThinkingTag":"/think","disableThinkingTag":"/no_think"},"profiles":{"thinking-general":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":24576,"repetitionPenalty":1},"reasoning":{"thinkingBudget":8192,"enableThinking":true}},"thinking-coding":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":32768,"repetitionPenalty":1},"reasoning":{"thinkingBudget":12288,"enableThinking":true}},"thinking-precise":{"sampling":{"temperature":0.4,"topP":0.9,"topK":20,"minP":0,"maxTokens":6144,"seed":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"instruct":{"sampling":{"temperature":0.7,"topP":0.8,"topK":20,"minP":0,"maxTokens":4096,"repetitionPenalty":1,"presencePenalty":1.5},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1.1,"topP":0.95,"topK":40,"maxTokens":8192},"reasoning":{"enableThinking":false}}}},"llamaCpp":{"huggingfaceRepo":"bartowski/badtheorylabs_BTL-4-GGUF","revision":"799d011b498e3287f514eb463ea04d6624ec945f","filename":"badtheorylabs_BTL-4-Q4_K_M.gguf","sha256":"75ce22e4f603bdf3f94c2b32151bb6d3492d2ab8a34ad8a4bfa2eaef0125c50f","approxSizeBytes":21391448192,"quantization":"Q4_K_M"},"availableVersions":["1.0.1","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"btl4-compact-iq2","name":"BTL-4 Compact (35B-A3B, IQ2_XXS)","description":"Bad Theory Labs' agentic build of Ornith 1.0 35B, tuned for tool-heavy coding and long stretches of unattended work. Native reasoning, native tool calling, and a 256K context window that stays light on memory even when it's full. Optimized for low-memory machines — the whole model fits in under 10GB, so it runs on a 16GB laptop, trading some accuracy against the full-size BTL-4 build.","tags":["badtheorylabs","agentic","tools","code","reasoning","long-context","moe"],"maintainer":{"name":"Bad Theory Labs","url":"https://huggingface.co/badtheorylabs"},"license":"Apache-2.0","licenseClass":"open","licenseShortName":"Apache 2.0","recoScore":10,"minGezelVersion":"1.26227","version":"1.0.2","releasedAt":"2026-08-15T00:00:00Z","parameterSize":"35B","approxSizeBytes":9967966240,"supportsTools":true,"contextWindow":262144,"kvBytesPerTokenF16":20480,"kvFixedBytesF16":64389120,"upstream":"https://huggingface.co/badtheorylabs/BTL-4-Compact","category":"coding","style":{"family":"qwen","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","prompt.private-reasoning-guidance","prompt.tool-cookbook-condensed","fabrication.detect-past-tense-no-tools","turn.ollama-num-predict-bumped","turn.preamble-folding","mcp.compact-tool-schemas"],"tuning":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":16384},"samplingWhenThinking":{"temperature":0.6,"topP":0.95},"reasoning":{"thinkingBudget":8192,"enableThinking":true},"promptTags":{"enableThinkingTag":"/think","disableThinkingTag":"/no_think"},"profiles":{"thinking-general":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":24576,"repetitionPenalty":1},"reasoning":{"thinkingBudget":8192,"enableThinking":true}},"thinking-coding":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":32768,"repetitionPenalty":1},"reasoning":{"thinkingBudget":12288,"enableThinking":true}},"thinking-precise":{"sampling":{"temperature":0.4,"topP":0.9,"topK":20,"minP":0,"maxTokens":6144,"seed":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"instruct":{"sampling":{"temperature":0.7,"topP":0.8,"topK":20,"minP":0,"maxTokens":4096,"repetitionPenalty":1,"presencePenalty":1.5},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1.1,"topP":0.95,"topK":40,"maxTokens":8192},"reasoning":{"enableThinking":false}}}},"llamaCpp":{"huggingfaceRepo":"badtheorylabs/BTL-4-Compact","revision":"2a29bc80b0ebc80d6409fbad89f85d910dbb4aee","filename":"BTL-4-IQ2_XXS.gguf","sha256":"6b7c298cf909fc04428ecf360a29dcc578188b1c90aa6ed435159f5a0d351496","approxSizeBytes":9967966240,"quantization":"IQ2_XXS"},"availableVersions":["1.0.2","1.0.1","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"deepseek-r1-8b-q4","name":"DeepSeek R1 (8B, Q4)","description":"Reasoning-tuned 8B model. Slower than a plain chat model, but thinks through its answers before replying.","tags":["deepseek","tools","reasoning"],"maintainer":{"name":"DeepSeek","url":"https://ollama.com/library/deepseek-r1"},"license":"MIT","licenseClass":"open","licenseShortName":"MIT","minGezelVersion":"1.26227","version":"1.1.1","releasedAt":"2026-08-15T00:00:00Z","parameterSize":"8B","approxSizeBytes":5200000000,"supportsTools":true,"contextWindow":128000,"upstream":"https://ollama.com/library/deepseek-r1","category":"reasoning","style":{"family":"deepseek","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","prompt.private-reasoning-guidance","prompt.tool-cookbook-condensed","fabrication.detect-past-tense-no-tools","turn.preamble-folding",{"id":"turn.ramble-detection","config":{"coldThreshold":3000,"postActionThreshold":1200}},"mcp.compact-tool-schemas","mcp.relax-required-fields","mcp.default-missing-fields"],"tuning":{"sampling":{"temperature":0.6,"topP":0.95},"reasoning":{"thinkingBudget":512,"enableThinking":true},"profiles":{"thinking-general":{"sampling":{"temperature":0.6,"topP":0.95},"reasoning":{"thinkingBudget":512,"enableThinking":true}},"thinking-coding":{"sampling":{"temperature":0.4,"topP":0.9,"repetitionPenalty":1.05},"reasoning":{"thinkingBudget":512,"enableThinking":true}},"thinking-precise":{"sampling":{"temperature":0.2,"topP":0.9,"seed":0,"repetitionPenalty":1.05},"reasoning":{"thinkingBudget":512,"enableThinking":true}},"instruct":{"sampling":{"temperature":0.6,"topP":0.95},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":0.9,"topP":0.95},"reasoning":{"enableThinking":false}}}},"ollama":{"tag":"deepseek-r1:8b"},"llamaCpp":{"huggingfaceRepo":"unsloth/DeepSeek-R1-0528-Qwen3-8B-GGUF","revision":"eb48357c179d34dbf515983f798dfb8752a0f261","filename":"DeepSeek-R1-0528-Qwen3-8B-Q4_K_M.gguf","sha256":"a86349a4180c4e6bb43f874c29c404fa2be3f90b15509bd6d86f697dba724ec1","approxSizeBytes":5027785216,"quantization":"Q4_K_M"},"mlx":{"huggingfaceRepo":"mlx-community/DeepSeek-R1-0528-Qwen3-8B-4bit","revision":"b9b5af4fa18feb8cdbccdadf3aad2c83d0abbe51","files":[{"name":"chat_template.jinja","sha256":"53671bac29bcb3e1f95f51b8c77d85a6011b66dc38bd23dce64eef04384a976b","sizeBytes":3127},{"name":"config.json","sha256":"ff32151f641cd46fd0daa658df1bf6fb457a8dc63147c93f653c5a15e0c1f53d","sizeBytes":1088},{"name":"model.safetensors","sha256":"d1810144c1beafe5c73ef740a787e26d94efdd846da4a5b60cd9e69a82083474","sizeBytes":4607835164},{"name":"model.safetensors.index.json","sha256":"3fb25463b4078b1fc27159daa605190029c2e965f533bf0b1b594f96cbfceb8a","sizeBytes":64065},{"name":"special_tokens_map.json","sha256":"59cda48bbe8bab9d61ffb410e6e3c07b6d98bff73cee7c88ff8b51f95f21ab1c","sizeBytes":485},{"name":"tokenizer.json","sha256":"93d5fd6d2f8cf1172ac86cf982e2b88fa6732366b44dc1a32349379a54a6a044","sizeBytes":11423346},{"name":"tokenizer_config.json","sha256":"f4b30407076d04f403cb86b752a13e5490ee5764658958e231039cdd3ed78e0d","sizeBytes":8756}],"approxSizeBytes":4619336031,"quantization":"4bit"},"availableVersions":["1.1.1","1.1.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"deepseek-v4-flash-284b-q4","name":"DeepSeek V4 Flash (FP4)","description":"DeepSeek V4 Flash — 284B-parameter Mixture-of-Experts (~13B active per token) with 1M-token context, Compressed Sparse Attention, and configurable Non-think / Think-High / Think-Max reasoning modes. On the `ds4` engine this is the July 2026 0731 re-post-trained checkpoint, which is substantially stronger at agentic and coding work than the original release. The llama.cpp (native FP4+FP8) and MLX sources still carry the original V4 Flash weights — upstream has not republished those builds for 0731 — so pick the ds4 source to get the newer checkpoint. Frontier-tier on-device reasoning for workstations and Mac Studio-class hardware — needs ~200 GB of usable memory.","tags":["deepseek","reasoning","agentic","moe","tools","fp4","long-context","large"],"maintainer":{"name":"DeepSeek","url":"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash"},"license":"MIT","licenseClass":"open","licenseShortName":"MIT","version":"1.1.0","releasedAt":"2026-08-01T00:00:00Z","parameterSize":"284B","approxSizeBytes":164633502592,"supportsTools":true,"contextWindow":1000000,"upstream":"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash","category":"reasoning","style":{"family":"deepseek","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","prompt.private-reasoning-guidance","prompt.tool-cookbook-condensed","prompt.meester-build-prelude","mcp.compact-tool-schemas","fabrication.detect-past-tense-no-tools","turn.preamble-folding"],"tuning":{"sampling":{"maxTokens":16384},"reasoning":{"thinkingBudget":4096,"enableThinking":true},"profiles":{"thinking-general":{"sampling":{"temperature":0.6,"topP":0.95,"maxTokens":16384}},"thinking-coding":{"sampling":{"temperature":0.3,"topP":0.95,"maxTokens":16384}},"thinking-precise":{"sampling":{"temperature":0.1,"topP":0.9,"maxTokens":16384,"seed":0}},"instruct":{"sampling":{"temperature":0.7,"topP":0.95,"maxTokens":16384},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1,"topP":1,"maxTokens":16384},"reasoning":{"enableThinking":false}}}},"llamaCpp":{"huggingfaceRepo":"nsparks/DeepSeek-V4-Flash-FP4-FP8-GGUF","revision":"0b34e0b629c706396002496e795e9f910f7bf69f","filename":"DeepSeek-V4-Flash-FP4-FP8-native.gguf","sha256":"82822c4c3330cdc17762cff6f044fd50abb04278779309a157d4401ef8a9c17b","approxSizeBytes":156148189760,"quantization":"FP4-FP8"},"mlx":{"huggingfaceRepo":"mlx-community/deepseek-ai-DeepSeek-V4-Flash-4bit","revision":"d2cb53706cb4f714249997be6542a438b7418465","files":[{"name":"config.json","sha256":"55c60c56345720fee13706b81f5787ecd49b385aec9b92ac5ba74bff055a4396","sizeBytes":2212},{"name":"generation_config.json","sha256":"5fccff80f55a4d455bbe516bdd552edf3e9623df95e99fbf2a3c3389fdf91af0","sizeBytes":170},{"name":"model-00001-of-00033.safetensors","sha256":"f8192a660ad74905fdb9051a542803b61ca34ff4186a5880301f80ce9bfea4b7","sizeBytes":5283965219},{"name":"model-00002-of-00033.safetensors","sha256":"204baeadbc53b2a96e0d22b8e5b15ea6f37f1d6a3b9d35c532395b2bc12ba32f","sizeBytes":4928409965},{"name":"model-00003-of-00033.safetensors","sha256":"640532dd2c51fdda759d32f0cf3832b5c32551533e92d3edeed043b19010992b","sizeBytes":5004285119},{"name":"model-00004-of-00033.safetensors","sha256":"7349208a3db58c5952c8dfcd09f29e9ed3e9856029532c84a9cb5b364e0c84f6","sizeBytes":4913919380},{"name":"model-00005-of-00033.safetensors","sha256":"0f7c167e789331b583a5a554e0b4a95a5f2fc96829dd7d166dc243733e9fae73","sizeBytes":4922205541},{"name":"model-00006-of-00033.safetensors","sha256":"bf85804edbbd3a7941089e19ed2b03a5ad79d14344939a86b4d7cc356aada450","sizeBytes":5004285211},{"name":"model-00007-of-00033.safetensors","sha256":"d077321f7935bc387cad20a571e736d4b2b2cf38cb1ae629b9d2dd6b28361387","sizeBytes":4913919296},{"name":"model-00008-of-00033.safetensors","sha256":"1c1341c3b3b529406517341049ad0296d21e764010df202c3f9527a533571ccf","sizeBytes":4922205610},{"name":"model-00009-of-00033.safetensors","sha256":"211cef3f5cd16cfa11bacb0a48887e2c9fc8ff16fac683b99030e023a7aed8bd","sizeBytes":5004285383},{"name":"model-00010-of-00033.safetensors","sha256":"a69144418cb7e8a20f2c2c28cccf5f666dcb8ef23cd5b722ace4bccd68816b3c","sizeBytes":4913919544},{"name":"model-00011-of-00033.safetensors","sha256":"b022f0c2fc9cd5667b707db391eced4064f9f8660d3626912ac0a9e3d355f920","sizeBytes":4922205579},{"name":"model-00012-of-00033.safetensors","sha256":"a50088ef4f95c731915f1c7e0057b7c56576f327ffd83c4a7f9e487377e9a245","sizeBytes":5004285395},{"name":"model-00013-of-00033.safetensors","sha256":"20b4a672c624548f78d8c6eb9bd3a51aad3d8c270304b0245dd9f7b52c75419c","sizeBytes":4913919540},{"name":"model-00014-of-00033.safetensors","sha256":"34fa86bae435c7f23fd45d8ac0ace935143339551f77d0bdfefffb48e82af5b3","sizeBytes":4922205629},{"name":"model-00015-of-00033.safetensors","sha256":"e89203f02ef9f12c7021dc466e20b9c16868bd01a58b7054f069339d16b42a70","sizeBytes":5004285401},{"name":"model-00016-of-00033.safetensors","sha256":"742374b9deb806fa5479c3b4a12903bc8db73eb158d8f3ea09dd9f7613b74b5b","sizeBytes":4913919572},{"name":"model-00017-of-00033.safetensors","sha256":"fcc93349c6c03f9a8afe77052620f24a86defd53aea7c7e063829916c977b8cf","sizeBytes":4922205633},{"name":"model-00018-of-00033.safetensors","sha256":"e7d60c8c2d472e084a1779ebfdbb4da5c197d4f5e4372c1a14bfcfd0c569c0ef","sizeBytes":5004285381},{"name":"model-00019-of-00033.safetensors","sha256":"6032ebf62677ef939ea01fb3f74daaabd2fd8f3467c0fb9484723dcd4ea2079d","sizeBytes":4913919502},{"name":"model-00020-of-00033.safetensors","sha256":"a61aa8207ab862fc5645fb11e848ada6e3fa75e1b1b9ec550c1f4ca300b1791f","sizeBytes":4922205609},{"name":"model-00021-of-00033.safetensors","sha256":"da9833108a23fdfb848884a0a3597552cf71e2bdffd257d1216338e60d5a0a19","sizeBytes":5004285403},{"name":"model-00022-of-00033.safetensors","sha256":"cb31a07ae096470327766d585fabf699f6d455bde7e9fa612a75450b966012b5","sizeBytes":4913919442},{"name":"model-00023-of-00033.safetensors","sha256":"239a67e7859bc478eef1b59d9dd9d30eaba88d06c7285bbb4ddf93504c2f8685","sizeBytes":4922205537},{"name":"model-00024-of-00033.safetensors","sha256":"46bfcad94207621e7c30ce4f2f8f0aea9535f008b51028241f1fe54371b43424","sizeBytes":5004285379},{"name":"model-00025-of-00033.safetensors","sha256":"d45db42ba7439ddd816f0c2c565009e21532f8a0483de0dc8fb6da97629ad6a4","sizeBytes":4913919572},{"name":"model-00026-of-00033.safetensors","sha256":"3cb939d7cb4f8b6aca4ed5cb61a3c3efa239106ed06f2c14d3550d628afc2afd","sizeBytes":4922205633},{"name":"model-00027-of-00033.safetensors","sha256":"d92df056832aea87a1837d757e3ea8c21a6668d91cde540a0b402bd6ebe41fe1","sizeBytes":5004285391},{"name":"model-00028-of-00033.safetensors","sha256":"10db6c15b42dbd76bf8fcc5c781b8231bd92b649e1d82446d08cfad11c17ce51","sizeBytes":4913919438},{"name":"model-00029-of-00033.safetensors","sha256":"8a05ac5f41b4c8fe920d6245f6416b882f230902afc4ea008ae342b838811bf4","sizeBytes":4922205637},{"name":"model-00030-of-00033.safetensors","sha256":"b9214dcae6b8828dfcf865bae65796c1b796154db6e7b6c4bc8b47649b70eb8c","sizeBytes":5004285363},{"name":"model-00031-of-00033.safetensors","sha256":"dcce4a40204c7028249fcbc91af8fb0fc1dad400a1c7dffde0ce40e5f6cb7053","sizeBytes":4913919474},{"name":"model-00032-of-00033.safetensors","sha256":"070abf58315bd11332b1c6173af3d81104158a6be6d7ea778a818543d22b0baf","sizeBytes":4922205537},{"name":"model-00033-of-00033.safetensors","sha256":"dc5251294ed274ef8c0538fe51faf994bbf6ba4a48ddfab300782b94bc668feb","sizeBytes":1523411843},{"name":"model.safetensors.index.json","sha256":"7c6990f5b723c7a571942a35d4eb9d88efb7c4f092705ea85fbcbdb4c4fca23c","sizeBytes":274163},{"name":"tokenizer.json","sha256":"8421075aceec0741baf15179b6c337f443f9029e53ea88d8c1e909dd0d69b70b","sizeBytes":10071664},{"name":"tokenizer_config.json","sha256":"21aa165d554e2c2f252a49730b71962edc15c36bbfa4b090ab7bd3340a2fa549","sizeBytes":397}],"approxSizeBytes":160150239764,"quantization":"4bit"},"ds4":{"huggingfaceRepo":"antirez/deepseek-v4-gguf","revision":"1cd7b564460821938add0475a60b942c409295e0","filename":"DeepSeek-V4-Flash-Q4KExperts-F16HC-F16Compressor-F16Indexer-Q8Attn-Q8Shared-Q8Out-chat-v2-imatrix-0731.gguf","sha256":"6bb77b5ddcbc2d974c687cfb63d644ecfb295581b4a53fa4c1d810aea538254a","approxSizeBytes":164633502592,"residentBytes":85899345920,"kvBytesPerToken":8192,"residentCtxTokens":131072,"quantization":"Q4_K","cacheExpertsBytes":68719476736,"ssdStreaming":true},"availableVersions":["1.1.0","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"deepseek-v4-flash-284b-q2","name":"DeepSeek V4 Flash (IQ2_XXS)","description":"antirez's 2-bit community GGUF of DeepSeek V4 Flash 0731 — the July 2026 re-post-trained checkpoint of the 284B-parameter Mixture-of-Experts (~13B active per token) with 1M-token context and Compressed Sparse Attention. Same architecture as the original V4 Flash, with substantially stronger agentic and coding behaviour. The routed experts are crushed to IQ2_XXS / Q2_K while attention projections, shared experts, router, embeddings, and output head stay at Q8_0 / F16, landing the whole model in ~81 GB — runnable on 128 GB-class machines versus ~156 GB for the native FP4 build. Note: these quants were produced for antirez's `ds4` inference engine; whether they load on stock llama depends on its DeepSeek-V4 support.","tags":["deepseek","reasoning","agentic","moe","tools","2-bit","iq2","long-context","large"],"maintainer":{"name":"antirez","url":"https://huggingface.co/antirez/deepseek-v4-gguf"},"maker":{"name":"DeepSeek","url":"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash"},"license":"MIT","licenseClass":"open","licenseShortName":"MIT","version":"1.1.0","releasedAt":"2026-08-01T00:00:00Z","parameterSize":"284B","approxSizeBytes":86720111488,"supportsTools":true,"contextWindow":1000000,"upstream":"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash","category":"reasoning","style":{"family":"deepseek","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","prompt.private-reasoning-guidance","prompt.tool-cookbook-condensed","prompt.meester-build-prelude","mcp.compact-tool-schemas","fabrication.detect-past-tense-no-tools","turn.preamble-folding"],"tuning":{"sampling":{"maxTokens":16384},"reasoning":{"thinkingBudget":4096,"enableThinking":true},"profiles":{"thinking-general":{"sampling":{"temperature":0.6,"topP":0.95,"maxTokens":16384}},"thinking-coding":{"sampling":{"temperature":0.3,"topP":0.95,"maxTokens":16384}},"thinking-precise":{"sampling":{"temperature":0.1,"topP":0.9,"maxTokens":16384,"seed":0}},"instruct":{"sampling":{"temperature":0.7,"topP":0.95,"maxTokens":16384},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1,"topP":1,"maxTokens":16384},"reasoning":{"enableThinking":false}}}},"llamaCpp":{"huggingfaceRepo":"antirez/deepseek-v4-gguf","revision":"1cd7b564460821938add0475a60b942c409295e0","filename":"DeepSeek-V4-Flash-IQ2XXS-w2Q2K-AProjQ8-SExpQ8-OutQ8-chat-v2-imatrix-0731.gguf","sha256":"ca22ae2f838e14077c22bc1c1417b71b45b5e5a3687bd96c2ac6e17fdb6261c0","approxSizeBytes":86720111488,"quantization":"IQ2_XXS"},"ds4":{"huggingfaceRepo":"antirez/deepseek-v4-gguf","revision":"1cd7b564460821938add0475a60b942c409295e0","filename":"DeepSeek-V4-Flash-IQ2XXS-w2Q2K-AProjQ8-SExpQ8-OutQ8-chat-v2-imatrix-0731.gguf","sha256":"ca22ae2f838e14077c22bc1c1417b71b45b5e5a3687bd96c2ac6e17fdb6261c0","approxSizeBytes":86720111488,"residentBytes":38654705664,"kvBytesPerToken":8192,"residentCtxTokens":131072,"quantization":"IQ2_XXS","cacheExpertsBytes":34359738368,"ssdStreaming":true},"availableVersions":["1.1.0","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"deepseek-v4-flash-284b-q2q4","name":"DeepSeek V4 Flash (mixed 2/4-bit)","description":"antirez's mixed-precision community GGUF of DeepSeek V4 Flash 0731 — the July 2026 re-post-trained 284B-parameter Mixture-of-Experts (~13B active per token) with 1M-token context and Compressed Sparse Attention. Layers 37-42 keep Q4_K routed experts while the remaining expert layers drop to IQ2_XXS gate/up + Q2_K down, landing at ~98 GB. This is the quality/size sweet spot antirez recommends for 128 GB MacBooks: noticeably better than the straight 2-bit build without the ~156 GB footprint of the full Q4_K one. Produced for antirez's `ds4` inference engine; whether it loads on stock llama depends on its DeepSeek-V4 support.","tags":["deepseek","reasoning","agentic","moe","tools","long-context","large","mixed-precision","iq2","q4"],"maintainer":{"name":"antirez","url":"https://huggingface.co/antirez/deepseek-v4-gguf"},"maker":{"name":"DeepSeek","url":"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash"},"license":"MIT","licenseClass":"open","licenseShortName":"MIT","version":"1.0.0","releasedAt":"2026-08-01T00:00:00Z","parameterSize":"284B","approxSizeBytes":97591747456,"supportsTools":true,"contextWindow":1000000,"upstream":"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash","category":"reasoning","style":{"family":"deepseek","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","prompt.private-reasoning-guidance","prompt.tool-cookbook-condensed","prompt.meester-build-prelude","mcp.compact-tool-schemas","fabrication.detect-past-tense-no-tools","turn.preamble-folding"],"tuning":{"sampling":{"maxTokens":16384},"reasoning":{"thinkingBudget":4096,"enableThinking":true},"profiles":{"thinking-general":{"sampling":{"temperature":0.6,"topP":0.95,"maxTokens":16384}},"thinking-coding":{"sampling":{"temperature":0.3,"topP":0.95,"maxTokens":16384}},"thinking-precise":{"sampling":{"temperature":0.1,"topP":0.9,"maxTokens":16384,"seed":0}},"instruct":{"sampling":{"temperature":0.7,"topP":0.95,"maxTokens":16384},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1,"topP":1,"maxTokens":16384},"reasoning":{"enableThinking":false}}}},"llamaCpp":{"huggingfaceRepo":"antirez/deepseek-v4-gguf","revision":"1cd7b564460821938add0475a60b942c409295e0","filename":"DeepSeek-V4-Flash-Layers37-42Q4KExperts-OtherExpertLayersIQ2XXSGateUp-Q2KDown-AProjQ8-SExpQ8-OutQ8-chat-v2-imatrix-fixed-0731.gguf","sha256":"659e22fbd01c9e13ea37a57c8d9c41e0a8819dffa3473d3c5286ee44b2d3398f","approxSizeBytes":97591747456,"quantization":"IQ2_XXS/Q4_K"},"ds4":{"huggingfaceRepo":"antirez/deepseek-v4-gguf","revision":"1cd7b564460821938add0475a60b942c409295e0","filename":"DeepSeek-V4-Flash-Layers37-42Q4KExperts-OtherExpertLayersIQ2XXSGateUp-Q2KDown-AProjQ8-SExpQ8-OutQ8-chat-v2-imatrix-fixed-0731.gguf","sha256":"659e22fbd01c9e13ea37a57c8d9c41e0a8819dffa3473d3c5286ee44b2d3398f","approxSizeBytes":97591747456,"residentBytes":45097156608,"kvBytesPerToken":8192,"residentCtxTokens":131072,"quantization":"IQ2_XXS/Q4_K","cacheExpertsBytes":38654705664,"ssdStreaming":true},"availableVersions":["1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"deepseek-v4-flash-284b-mxfp4","name":"DeepSeek V4 Flash (MXFP4)","description":"antirez's MXFP4 community GGUF of DeepSeek V4 Flash 0731 — the July 2026 re-post-trained 284B-parameter Mixture-of-Experts (~13B active per token) with 1M-token context and Compressed Sparse Attention. Routed experts use the MXFP4 micro-scaled 4-bit block format while attention projections, shared experts, router, embeddings, and output head stay at Q8_0 / F16, landing at ~156 GB — close to the native FP4 build's footprint and the highest-fidelity single-file ds4 variant. Needs a workstation or Mac Studio-class machine with ~200 GB of usable memory. Produced for antirez's `ds4` inference engine.","tags":["deepseek","reasoning","agentic","moe","tools","long-context","large","mxfp4","fp4"],"maintainer":{"name":"antirez","url":"https://huggingface.co/antirez/deepseek-v4-gguf"},"maker":{"name":"DeepSeek","url":"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash"},"license":"MIT","licenseClass":"open","licenseShortName":"MIT","version":"1.0.0","releasedAt":"2026-08-01T00:00:00Z","parameterSize":"284B","approxSizeBytes":155976458848,"supportsTools":true,"contextWindow":1000000,"upstream":"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash","category":"reasoning","style":{"family":"deepseek","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","prompt.private-reasoning-guidance","prompt.tool-cookbook-condensed","prompt.meester-build-prelude","mcp.compact-tool-schemas","fabrication.detect-past-tense-no-tools","turn.preamble-folding"],"tuning":{"sampling":{"maxTokens":16384},"reasoning":{"thinkingBudget":4096,"enableThinking":true},"profiles":{"thinking-general":{"sampling":{"temperature":0.6,"topP":0.95,"maxTokens":16384}},"thinking-coding":{"sampling":{"temperature":0.3,"topP":0.95,"maxTokens":16384}},"thinking-precise":{"sampling":{"temperature":0.1,"topP":0.9,"maxTokens":16384,"seed":0}},"instruct":{"sampling":{"temperature":0.7,"topP":0.95,"maxTokens":16384},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1,"topP":1,"maxTokens":16384},"reasoning":{"enableThinking":false}}}},"llamaCpp":{"huggingfaceRepo":"antirez/deepseek-v4-gguf","revision":"1cd7b564460821938add0475a60b942c409295e0","filename":"DeepSeek-V4-Flash-MXFP4Experts-F16HC-F16Compressor-F16Indexer-Q8Attn-Q8Shared-Q8Out-chat-v2-mxfp4-0731.gguf","sha256":"0e3a161b670f686128ec5f92a601dfde616a37bf5e7e48999fa2d32471b57ec6","approxSizeBytes":155976458848,"quantization":"MXFP4"},"ds4":{"huggingfaceRepo":"antirez/deepseek-v4-gguf","revision":"1cd7b564460821938add0475a60b942c409295e0","filename":"DeepSeek-V4-Flash-MXFP4Experts-F16HC-F16Compressor-F16Indexer-Q8Attn-Q8Shared-Q8Out-chat-v2-mxfp4-0731.gguf","sha256":"0e3a161b670f686128ec5f92a601dfde616a37bf5e7e48999fa2d32471b57ec6","approxSizeBytes":155976458848,"residentBytes":85899345920,"kvBytesPerToken":8192,"residentCtxTokens":131072,"quantization":"MXFP4","cacheExpertsBytes":68719476736,"ssdStreaming":true},"availableVersions":["1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"gemma4-12b-q4","name":"Gemma 4 (12B, Q4)","description":"Google's Gemma 4 at 12B parameters — an encoder-free unified multimodal model (text + image + audio + video) with native tool calling, configurable thinking, and a 256K context window. Apache-2.0 licensed.","tags":["google","multimodal","vision","audio","tools","agentic","qat"],"maintainer":{"name":"Google","url":"https://huggingface.co/google/gemma-4-12B-it"},"license":"Apache-2.0","licenseClass":"open","licenseShortName":"Apache 2.0","recoScore":15,"version":"1.2.0","releasedAt":"2026-08-28T00:00:00Z","parameterSize":"12B","approxSizeBytes":6716356800,"supportsTools":true,"contextWindow":256000,"upstream":"https://huggingface.co/google/gemma-4-12B-it","category":"general","style":{"family":"gemma","reasoningFormat":"channel","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-channel-tags","reasoning.capture-pre-tool-prose","prompt.private-reasoning-guidance","prompt.tool-cookbook-full","prompt.meester-build-prelude","fabrication.detect-past-tense-no-tools","fabrication.detect-claim-without-tool","turn.preamble-folding",{"id":"turn.ramble-detection","config":{"coldThreshold":6000,"postActionThreshold":1200}},"turn.auto-acknowledge-tool-errors","turn.permission-stall",{"id":"turn.continuation-budget","config":{"count":4}},{"id":"turn.single-tool-per-turn","config":{"meesterOnly":true}},"mcp.compact-tool-schemas","mcp.relax-required-fields","mcp.default-missing-fields","mcp.validate-ids-strict","parse.gemma-special-token","prompt.prefer-writefile-edits","prompt.derive-by-execution","prompt.terse-visible-reply","tools.mlx-grammar"],"tuning":{"sampling":{"temperature":1,"topP":0.95,"topK":64,"maxTokens":8192,"repetitionPenalty":1.1,"repetitionContext":64},"reasoning":{"thinkingBudget":256,"enableThinking":true},"engine":{"llamaCpp":{"spec":{"mtp":true,"nMax":4}}},"profiles":{"thinking-general":{"sampling":{"temperature":0.8,"topP":0.95,"topK":64,"maxTokens":2048,"repetitionPenalty":1.1,"repetitionContext":64}},"thinking-coding":{"sampling":{"temperature":0.6,"topP":0.9,"topK":40,"maxTokens":2048,"repetitionPenalty":1.05,"repetitionContext":64}},"thinking-precise":{"sampling":{"temperature":0.3,"topP":0.9,"topK":20,"maxTokens":4096,"seed":0,"repetitionPenalty":1.05,"repetitionContext":64}},"instruct":{"sampling":{"temperature":0.7,"topP":0.95,"topK":64,"maxTokens":4096,"repetitionPenalty":1.1,"repetitionContext":64}},"creative":{"sampling":{"temperature":1.1,"topP":0.95,"topK":64,"maxTokens":8192,"repetitionPenalty":1,"repetitionContext":20}}}},"llamaCpp":{"huggingfaceRepo":"unsloth/gemma-4-12B-it-qat-GGUF","revision":"980b060c40a8539ac159e0501a3e0f66a6365af3","filename":"gemma-4-12B-it-qat-UD-Q4_K_XL.gguf","sha256":"90fd44e29e0d7cffeb0fd00dc73cfdab9ed0b0e95306ecf7821ea634c940c370","approxSizeBytes":6716356800,"quantization":"UD-Q4_K_XL","draftModel":{"filename":"MTP/mtp-gemma-4-12B-it-Q4_0.gguf","sha256":"fcb35dea42c71333db904cee11baac525c9ef872818ee3753f6cb156f3c6f4f6","sizeBytes":253708800}},"mlx":{"huggingfaceRepo":"OsaurusAI/gemma-4-12B-it-qat-MXFP4","revision":"61fbdd1be971d8808060d8ba4e607f420125b214","files":[{"name":"chat_template.jinja","sha256":"d5ce49ce670058e90cc623c0284c21c8fcd778c30f5be1891b00f022bedee2fe","sizeBytes":17811},{"name":"config.json","sha256":"7052f31177bb79e2c6760d5032583f74c1864eb51b5a17e1404a10eca3acf913","sizeBytes":5237},{"name":"generation_config.json","sha256":"a8349d9bd64cc5841297fcb5002f0fdc4749c473c8f1b10ea337f9ce4ee7014e","sizeBytes":260},{"name":"model-00001-of-00007.safetensors","sha256":"8bbc6b27a2127ca6d68a449ff895644cd18477cc69205c4cd02907b862c4cf11","sizeBytes":2047672664},{"name":"model-00002-of-00007.safetensors","sha256":"5794202f68df90c7f18a6db80a9a273235146f1d1b05f632e7df1ed1644996a7","sizeBytes":1023076042},{"name":"model-00003-of-00007.safetensors","sha256":"299ff6ced2b6b8e4d0957bc4b4f26e7fbd25b3917bc0a9f27dd8d983449241b9","sizeBytes":1012218216},{"name":"model-00004-of-00007.safetensors","sha256":"1f0e6f655d2a59d2e3b0d987f705e498be535f6c9782c9726c3e37ede1c55545","sizeBytes":1009437650},{"name":"model-00005-of-00007.safetensors","sha256":"06d4b763d2bba8277e78d6a1bcd2a623190956da8adfb6d7e2fdd3234bc213a8","sizeBytes":1024911496},{"name":"model-00006-of-00007.safetensors","sha256":"ecdb96e03cba6751e3d73d621019afd20e4b9040162997e1e236e7231793370a","sizeBytes":1018677986},{"name":"model-00007-of-00007.safetensors","sha256":"1aa3cfd784f63827f6ec9eb0b2a98f735976deb62ead0a54b87f33aba7f96176","sizeBytes":774295738},{"name":"model.safetensors.index.json","sha256":"136ff8d0fb292d5cd6688d7a5456b7710a2d4628c53947b45180e3dc654697c2","sizeBytes":97771},{"name":"processor_config.json","sha256":"6b938e76555b3e9946890770e1abcd442a4718f34041a58e8139dc8ad34545c9","sizeBytes":1382},{"name":"tokenizer.json","sha256":"cc8d3a0ce36466ccc1278bf987df5f71db1719b9ca6b4118264f45cb627bfe0f","sizeBytes":32169626},{"name":"tokenizer_config.json","sha256":"c0146b8149eb8b8f96e9b92b9a0d5e0d1864140b49a4d13cec52bc9adcecb5a7","sizeBytes":20419}],"approxSizeBytes":7942602298,"quantization":"MXFP4","chatTemplateOverride":"{#\n Template: Google Gemma 4 Canonical Chat Template\n Author: Google Gemma Engineering Team\n Published: 2026-07-09\n Context: Fixed tool-calling loops, turn closures, and thinking content-ordering.\n#}\n{%- macro format_parameters(properties, required, filter_keys=false) -%}\n {%- set standard_keys = ['description', 'type', 'properties', 'required', 'nullable'] -%}\n {%- set ns = namespace(found_first=false) -%}\n {%- for key, value in properties | dictsort -%}\n {%- set add_comma = false -%}\n {%- if not filter_keys or key not in standard_keys -%}\n {%- if ns.found_first %},{% endif -%}\n {%- set ns.found_first = true -%}\n {{ key }}:{\n {%- if value['description'] -%}\n description:<|\"|>{{ value['description'] }}<|\"|>\n {%- set add_comma = true -%}\n {%- endif -%}\n {%- if value['type'] | upper == 'STRING' -%}\n {%- if value['enum'] -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n enum:{{ format_argument(value['enum']) }}\n {%- endif -%}\n {%- elif value['type'] | upper == 'ARRAY' -%}\n {%- if value['items'] is mapping and value['items'] -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n items:{\n {%- set ns_items = namespace(found_first=false) -%}\n {%- for item_key, item_value in value['items'] | dictsort -%}\n {%- if item_value is not none -%}\n {%- if ns_items.found_first %},{% endif -%}\n {%- set ns_items.found_first = true -%}\n {%- if item_key == 'properties' -%}\n properties:{\n {%- if item_value is mapping -%}\n {{- format_parameters(item_value, value['items']['required'] | default([])) -}}\n {%- endif -%}\n }\n {%- elif item_key == 'required' -%}\n required:[\n {%- for req_item in item_value -%}\n <|\"|>{{- req_item -}}<|\"|>\n {%- if not loop.last %},{% endif -%}\n {%- endfor -%}\n ]\n {%- elif item_key == 'type' -%}\n {%- if item_value is string -%}\n type:{{ format_argument(item_value | upper) }}\n {%- else -%}\n type:{{ format_argument(item_value | map('upper') | list) }}\n {%- endif -%}\n {%- else -%}\n {{ item_key }}:{{ format_argument(item_value) }}\n {%- endif -%}\n {%- endif -%}\n {%- endfor -%}\n }\n {%- endif -%}\n {%- endif -%}\n {%- if value['nullable'] %}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n nullable:true\n {%- endif -%}\n {%- if value['type'] | upper == 'OBJECT' -%}\n {%- if value['properties'] is defined and value['properties'] is mapping -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n properties:{\n {{- format_parameters(value['properties'], value['required'] | default([])) -}}\n }\n {%- elif value is mapping -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n properties:{\n {{- format_parameters(value, value['required'] | default([]), filter_keys=true) -}}\n }\n {%- endif -%}\n {%- if value['required'] -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n required:[\n {%- for item in value['required'] | default([]) -%}\n <|\"|>{{- item -}}<|\"|>\n {%- if not loop.last %},{% endif -%}\n {%- endfor -%}\n ]\n {%- endif -%}\n {%- endif -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n type:<|\"|>{{ value['type'] | upper }}<|\"|>}\n {%- endif -%}\n {%- endfor -%}\n{%- endmacro -%}\n{%- macro format_function_declaration(tool_data) -%}\n declaration:{{- tool_data['function']['name'] -}}{description:<|\"|>{{- tool_data['function']['description'] -}}<|\"|>\n {%- set params = tool_data['function']['parameters'] -%}\n {%- if params -%}\n ,parameters:{\n {%- if params['properties'] -%}\n properties:{ {{- format_parameters(params['properties'], params['required']) -}} },\n {%- endif -%}\n {%- if params['required'] -%}\n required:[\n {%- for item in params['required'] -%}\n <|\"|>{{- item -}}<|\"|>\n {{- ',' if not loop.last -}}\n {%- endfor -%}\n ],\n {%- endif -%}\n {%- if params['type'] -%}\n type:<|\"|>{{- params['type'] | upper -}}<|\"|>}\n {%- endif -%}\n {%- endif -%}\n {%- if 'response' in tool_data['function'] -%}\n {%- set response_declaration = tool_data['function']['response'] -%}\n ,response:{\n {%- if response_declaration['description'] -%}\n description:<|\"|>{{- response_declaration['description'] -}}<|\"|>,\n {%- endif -%}\n {%- if response_declaration['type'] | upper == 'OBJECT' -%}\n type:<|\"|>{{- response_declaration['type'] | upper -}}<|\"|>}\n {%- endif -%}\n {%- endif -%}\n }\n{%- endmacro -%}\n{%- macro format_argument(argument, escape_keys=True) -%}\n {%- if argument is none -%}\n {{- 'null' -}}\n {%- elif argument is string -%}\n {{- '<|\"|>' + argument + '<|\"|>' -}}\n {%- elif argument is boolean -%}\n {{- 'true' if argument else 'false' -}}\n {%- elif argument is mapping -%}\n {{- '{' -}}\n {%- set ns = namespace(found_first=false) -%}\n {%- for key, value in argument | dictsort -%}\n {%- if ns.found_first %},{% endif -%}\n {%- set ns.found_first = true -%}\n {%- if escape_keys -%}\n {{- '<|\"|>' + key + '<|\"|>' -}}\n {%- else -%}\n {{- key -}}\n {%- endif -%}\n :{{- format_argument(value, escape_keys=escape_keys) -}}\n {%- endfor -%}\n {{- '}' -}}\n {%- elif argument is sequence -%}\n {{- '[' -}}\n {%- for item in argument -%}\n {{- format_argument(item, escape_keys=escape_keys) -}}\n {%- if not loop.last %},{% endif -%}\n {%- endfor -%}\n {{- ']' -}}\n {%- else -%}\n {{- argument -}}\n {%- endif -%}\n{%- endmacro -%}\n{%- macro strip_thinking(text) -%}\n {%- set ns = namespace(result='') -%}\n {%- for part in text.split('<channel|>') -%}\n {%- if '<|channel>' in part -%}\n {%- set ns.result = ns.result + part.split('<|channel>')[0] -%}\n {%- else -%}\n {%- set ns.result = ns.result + part -%}\n {%- endif -%}\n {%- endfor -%}\n {{- ns.result | trim -}}\n{%- endmacro -%}\n\n{%- macro format_tool_response_block(tool_name, response) -%}\n {{- '<|tool_response>' -}}\n {%- if response is mapping -%}\n {{- 'response:' + tool_name + '{' -}}\n {%- for key, value in response | dictsort -%}\n {{- key -}}:{{- format_argument(value, escape_keys=False) -}}\n {%- if not loop.last %},{% endif -%}\n {%- endfor -%}\n {{- '}' -}}\n {%- else -%}\n {{- 'response:' + tool_name + '{value:' + format_argument(response, escape_keys=False) + '}' -}}\n {%- endif -%}\n {{- '<tool_response|>' -}}\n{%- endmacro -%}\n\n{#- ===== SETUP ===== -#}\n{%- set ns = namespace(prev_message_type=None, prev_non_tool_role=None) -%}\n{%- set loop_messages = messages -%}\n{%- set enable_thinking = enable_thinking | default(false) -%}\n{%- set preserve_thinking = preserve_thinking | default(false) -%}\n{{- bos_token -}}\n{#- Handle System/Tool Definitions Block -#}\n{%- if enable_thinking or tools or (messages and messages[0]['role'] in ['system', 'developer']) -%}\n {{- '<|turn>system\\n' -}}\n {#- Inject Thinking token at the very top of the FIRST system turn -#}\n {%- if enable_thinking -%}\n {{- '<|think|>\\n' -}}\n {%- set ns.prev_message_type = 'think' -%}\n {%- endif -%}\n {%- if messages and messages[0]['role'] in ['system', 'developer'] -%}\n {%- if messages[0]['content'] is string -%}\n {{- messages[0]['content'] | trim -}}\n {%- elif messages[0]['content'] is sequence -%}\n {%- for item in messages[0]['content'] -%}\n {{- item['text'] | trim + ' '-}}\n {%- endfor -%}\n {%- endif -%}\n {%- set loop_messages = messages[1:] -%}\n {%- endif -%}\n {%- if tools -%}\n {%- for tool in tools %}\n {{- '<|tool>' -}}\n {{- format_function_declaration(tool) | trim -}}\n {{- '<tool|>' -}}\n {%- endfor %}\n {%- set ns.prev_message_type = 'tool' -%}\n {%- endif -%}\n {{- '<turn|>\\n' -}}\n{%- endif %}\n\n{#- Pre-scan: find last user message index for reasoning guard -#}\n{%- set ns_turn = namespace(last_user_idx=-1) -%}\n{%- for i in range(loop_messages | length) -%}\n {%- if loop_messages[i]['role'] == 'user' -%}\n {%- set ns_turn.last_user_idx = i -%}\n {%- endif -%}\n{%- endfor -%}\n\n{#- Loop through messages -#}\n{%- for message in loop_messages -%}\n {%- if message['role'] != 'tool' -%}\n {%- set ns.prev_message_type = None -%}\n {%- set role = 'model' if message['role'] == 'assistant' else message['role'] -%}\n {#- Detect continuation using tracked state — O(1) instead of O(n) backward scan -#}\n {%- set continue_same_model_turn = (role == 'model' and ns.prev_non_tool_role == 'assistant') -%}\n {%- if not continue_same_model_turn -%}\n {{- '<|turn>' + role + '\\n' }}\n\n {%- endif -%}\n\n {#- Render reasoning/reasoning_content as thinking channel -#}\n {%- set thinking_text = message.get('reasoning') or message.get('reasoning_content') -%}\n {%- set thinking_gate = (loop.index0 > ns_turn.last_user_idx) or (preserve_thinking and message.get('tool_calls')) -%}\n {%- if thinking_text and thinking_gate -%}\n {{- '<|channel>thought\\n' + thinking_text + '\\n<channel|>' -}}\n {%- endif -%}\n\n {%- if message.get('tool_calls') -%}\n {%- for tool_call in message.get('tool_calls') -%}\n {%- set function = tool_call['function'] -%}\n {{- '<|tool_call>call:' + function['name'] + '{' -}}\n {%- if function['arguments'] is mapping -%}\n {%- set ns_args = namespace(found_first=false) -%}\n {%- for key, value in function['arguments'] | dictsort -%}\n {%- if ns_args.found_first %},{% endif -%}\n {%- set ns_args.found_first = true -%}\n {{- key -}}:{{- format_argument(value, escape_keys=False) -}}\n {%- endfor -%}\n {%- elif function['arguments'] is none -%}\n {%- else -%}\n {{- raise_exception(\n \"chat_template: tool_calls[].function.arguments must be a \"\n \"JSON object (mapping), not a string. Deserialize arguments \"\n \"before passing to the template.\"\n ) -}}\n {%- endif -%}\n {{- '}<tool_call|>' -}}\n {%- endfor -%}\n {%- set ns.prev_message_type = 'tool_call' -%}\n {%- endif -%}\n\n {%- set ns_tr_out = namespace(flag=false) -%}\n {%- if message.get('tool_responses') -%}\n {#- Legacy: tool_responses embedded on the assistant message (Google/Gemma native) -#}\n {%- for tool_response in message.get('tool_responses') -%}\n {{- format_tool_response_block(tool_response['name'] | default('unknown', true), tool_response['response']) -}}\n {%- set ns_tr_out.flag = true -%}\n {%- set ns.prev_message_type = 'tool_response' -%}\n {%- endfor -%}\n {%- elif message.get('tool_calls') -%}\n {#- OpenAI Chat Completions: forward-scan consecutive role:tool messages -#}\n {%- set ns_tool_scan = namespace(stopped=false) -%}\n {%- for k in range(loop.index0 + 1, loop_messages | length) -%}\n {%- if ns_tool_scan.stopped -%}\n {%- elif loop_messages[k]['role'] != 'tool' -%}\n {%- set ns_tool_scan.stopped = true -%}\n {%- else -%}\n {%- set follow = loop_messages[k] -%}\n {#- Resolve tool_call_id to function name -#}\n {%- set ns_tname = namespace(name=follow.get('name') or 'unknown') -%}\n {%- for tc in message.get('tool_calls') -%}\n {%- if tc.get('id') == follow.get('tool_call_id') -%}\n {%- set ns_tname.name = tc['function']['name'] -%}\n {%- endif -%}\n {%- endfor -%}\n {#- Handle content as string or content-parts array -#}\n {%- set tool_body = follow.get('content') -%}\n {%- if tool_body is string -%}\n {{- format_tool_response_block(ns_tname.name, tool_body) -}}\n {%- elif tool_body is sequence and tool_body is not string -%}\n {%- set ns_txt = namespace(s='') -%}\n {%- for part in tool_body -%}\n {%- if part.get('type') == 'text' -%}\n {%- set ns_txt.s = ns_txt.s + (part.get('text') | default('')) -%}\n {%- endif -%}\n {%- endfor -%}\n {{- format_tool_response_block(ns_tname.name, ns_txt.s) -}}\n {%- for part in tool_body -%}\n {%- if part.get('type') in ['image', 'image_url'] -%}\n {{- '<|image|>' -}}\n {%- elif part.get('type') in ['audio', 'input_audio'] -%}\n {{- '<|audio|>' -}}\n {%- elif part.get('type') == 'video' -%}\n {{- '<|video|>' -}}\n {%- endif -%}\n {%- endfor -%}\n {%- else -%}\n {{- format_tool_response_block(ns_tname.name, tool_body) -}}\n {%- endif -%}\n {%- set ns_tr_out.flag = true -%}\n {%- set ns.prev_message_type = 'tool_response' -%}\n {%- endif -%}\n {%- endfor -%}\n {%- endif -%}\n\n {%- set captured_content -%}\n {%- if message.get('content') is string -%}\n {%- if role == 'model' -%}\n {{- strip_thinking(message['content']) -}}\n {%- else -%}\n {{- message['content'] | trim -}}\n {%- endif -%}\n {%- elif message.get('content') is sequence -%}\n {%- for item in message['content'] -%}\n {%- if item.get('type') == 'text' -%}\n {%- if role == 'model' -%}\n {{- strip_thinking(item['text']) -}}\n {%- else -%}\n {{- item['text'] | trim -}}\n {%- endif -%}\n {%- elif item.get('type') in ['image', 'image_url'] -%}\n {{- '<|image|>' -}}\n {%- elif item.get('type') in ['audio', 'input_audio'] -%}\n {{- '<|audio|>' -}}\n {%- elif item.get('type') == 'video' -%}\n {{- '<|video|>' -}}\n {%- endif -%}\n {%- endfor -%}\n {%- endif -%}\n {%- endset -%}\n\n {{- captured_content -}}\n {%- set has_content = captured_content | trim | length > 0 -%}\n\n {#- Forward-scan: find next non-tool message role for continuation detection -#}\n {%- set next_nt = namespace(role=None, found=false) -%}\n {%- for j in range(loop.index0 + 1, loop_messages | length) -%}\n {%- if not next_nt.found -%}\n {%- if loop_messages[j]['role'] != 'tool' -%}\n {%- set next_nt.role = loop_messages[j]['role'] -%}\n {%- set next_nt.found = true -%}\n {%- endif -%}\n {%- endif -%}\n {%- endfor -%}\n\n {%- set continues_into_next = (\n role == 'model'\n and next_nt.role == 'assistant'\n and (not message.get('tool_calls') or ns_tr_out.flag)\n ) -%}\n\n {%- if ns.prev_message_type == 'tool_call' and not ns_tr_out.flag -%}\n {{- '<|tool_response>' -}}\n {%- elif continues_into_next -%}\n {%- elif not (ns_tr_out.flag and not has_content and not next_nt.found) -%}\n {{- '<turn|>\\n' -}}\n {%- endif -%}\n\n {#- Track previous non-tool role for next iteration (avoids O(n) backward scan) -#}\n {%- set ns.prev_non_tool_role = message['role'] -%}\n {%- endif -%}\n{%- endfor -%}\n\n{%- if add_generation_prompt -%}\n {%- if ns.prev_message_type != 'tool_response' and ns.prev_message_type != 'tool_call' -%}\n {{- '<|turn>model\\n' -}}\n {%- if not enable_thinking -%}\n {{- '<|channel>thought\\n<channel|>' -}}\n {%- endif -%}\n {%- elif ns.prev_message_type == 'tool_response' and enable_thinking -%}\n {{- '<|channel>thought\\n' -}}\n {%- endif -%}\n{%- endif -%}\n"},"availableVersions":["1.2.0","1.1.3","1.1.2","1.1.0","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"gemma4-12b-q8","name":"Gemma 4 (12B, Q8)","description":"Google's Gemma 4 at 12B parameters, 8-bit quantization for higher fidelity than the Q4 build (at roughly double the memory footprint). Encoder-free unified multimodal model (text + image + audio + video), native tool calling, configurable thinking, 256K context. Apache-2.0 licensed.","tags":["google","multimodal","vision","audio","tools","agentic"],"maintainer":{"name":"Google","url":"https://huggingface.co/google/gemma-4-12B-it"},"license":"Apache-2.0","licenseClass":"open","licenseShortName":"Apache 2.0","recoScore":15,"version":"1.1.0","releasedAt":"2026-08-28T00:00:00Z","parameterSize":"12B","approxSizeBytes":12669646976,"supportsTools":true,"contextWindow":256000,"upstream":"https://huggingface.co/google/gemma-4-12B-it","category":"general","style":{"family":"gemma","reasoningFormat":"channel","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-channel-tags","reasoning.capture-pre-tool-prose","prompt.private-reasoning-guidance","prompt.tool-cookbook-full","prompt.meester-build-prelude","fabrication.detect-past-tense-no-tools","fabrication.detect-claim-without-tool","turn.preamble-folding",{"id":"turn.ramble-detection","config":{"coldThreshold":6000,"postActionThreshold":1200}},"turn.auto-acknowledge-tool-errors","turn.permission-stall",{"id":"turn.continuation-budget","config":{"count":4}},{"id":"turn.single-tool-per-turn","config":{"meesterOnly":true}},"mcp.compact-tool-schemas","mcp.relax-required-fields","mcp.default-missing-fields","mcp.validate-ids-strict","parse.gemma-special-token","prompt.prefer-writefile-edits","prompt.derive-by-execution","prompt.terse-visible-reply","tools.mlx-grammar"],"tuning":{"sampling":{"temperature":1,"topP":0.95,"topK":64,"maxTokens":8192,"repetitionPenalty":1.1,"repetitionContext":20},"reasoning":{"thinkingBudget":256,"enableThinking":true},"engine":{"llamaCpp":{"spec":{"mtp":true,"nMax":4}}},"profiles":{"thinking-general":{"sampling":{"temperature":0.8,"topP":0.95,"topK":64,"maxTokens":2048,"repetitionPenalty":1.1,"repetitionContext":20}},"thinking-coding":{"sampling":{"temperature":0.6,"topP":0.9,"topK":40,"maxTokens":2048,"repetitionPenalty":1.05,"repetitionContext":32}},"thinking-precise":{"sampling":{"temperature":0.3,"topP":0.9,"topK":20,"maxTokens":4096,"seed":0,"repetitionPenalty":1.05,"repetitionContext":20}},"instruct":{"sampling":{"temperature":0.7,"topP":0.95,"topK":64,"maxTokens":4096,"repetitionPenalty":1.1,"repetitionContext":20}},"creative":{"sampling":{"temperature":1.1,"topP":0.95,"topK":64,"maxTokens":8192,"repetitionPenalty":1,"repetitionContext":20}}}},"llamaCpp":{"huggingfaceRepo":"ggml-org/gemma-4-12B-it-GGUF","revision":"e3e681731089efaa3f0917336944ac64752db8ba","filename":"gemma-4-12B-it-Q8_0.gguf","sha256":"abfc3044b93795f6a446fc1a04468ac2d5fc5e9c92e237f09a5b3384c5a433e4","approxSizeBytes":12669646976,"quantization":"Q8_0","draftModel":{"filename":"mtp-gemma-4-12B-it-Q8_0.gguf","sha256":"16c90eb9f2b2891cc138f3d2b3bf11e23b2ced2aeab9a9d39d90fe446f2f0610","sizeBytes":465109152}},"mlx":{"huggingfaceRepo":"mlx-community/gemma-4-12b-it-8bit","revision":"200bb6db075e137a4deb08838865ac4ddb86292e","files":[{"name":"chat_template.jinja","sha256":"36e3a42e5cf14cd0020e72d92e1fdd9970f59b82170e421f0cbe1bb42bead3f0","sizeBytes":17466},{"name":"config.json","sha256":"c1933cabefab56dbaa24f5d2a8daba6fd6aa896b5e288393f6fb772c76c29567","sizeBytes":5415},{"name":"generation_config.json","sha256":"a8349d9bd64cc5841297fcb5002f0fdc4749c473c8f1b10ea337f9ce4ee7014e","sizeBytes":260},{"name":"model-00001-of-00003.safetensors","sha256":"9225e78a9029520d8e2a895510eb82fc1ac4d656ee25259702e60ef1f767dfcf","sizeBytes":5350433419},{"name":"model-00002-of-00003.safetensors","sha256":"f500b695934f78b3686f9e0e36930495a329cf1c5e9397b11fe7d04175e6e4da","sizeBytes":5358994123},{"name":"model-00003-of-00003.safetensors","sha256":"865f6be184505562f3c0e52157e82b1be4bd3e9cc89b934af455af37b4b99c56","sizeBytes":2006775171},{"name":"model.safetensors.index.json","sha256":"a7b134f6e43578dfcc112555898f94b26a54df0278db6746945d077ed8863ffd","sizeBytes":135330},{"name":"processor_config.json","sha256":"016a1db9c4f41ea0c61919c46855ea5e7c45c6e4ae4bfbedfb5b6bed79a2fe92","sizeBytes":868},{"name":"tokenizer.json","sha256":"cc8d3a0ce36466ccc1278bf987df5f71db1719b9ca6b4118264f45cb627bfe0f","sizeBytes":32169626},{"name":"tokenizer_config.json","sha256":"fc1384a911d2c9860ac07bc3ceafff20bff26695991744b7dbe5e1e4522bfa57","sizeBytes":2719}],"approxSizeBytes":12748534397,"quantization":"8bit","chatTemplateOverride":"{#\n Template: Google Gemma 4 Canonical Chat Template\n Author: Google Gemma Engineering Team\n Published: 2026-07-09\n Context: Fixed tool-calling loops, turn closures, and thinking content-ordering.\n#}\n{%- macro format_parameters(properties, required, filter_keys=false) -%}\n {%- set standard_keys = ['description', 'type', 'properties', 'required', 'nullable'] -%}\n {%- set ns = namespace(found_first=false) -%}\n {%- for key, value in properties | dictsort -%}\n {%- set add_comma = false -%}\n {%- if not filter_keys or key not in standard_keys -%}\n {%- if ns.found_first %},{% endif -%}\n {%- set ns.found_first = true -%}\n {{ key }}:{\n {%- if value['description'] -%}\n description:<|\"|>{{ value['description'] }}<|\"|>\n {%- set add_comma = true -%}\n {%- endif -%}\n {%- if value['type'] | upper == 'STRING' -%}\n {%- if value['enum'] -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n enum:{{ format_argument(value['enum']) }}\n {%- endif -%}\n {%- elif value['type'] | upper == 'ARRAY' -%}\n {%- if value['items'] is mapping and value['items'] -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n items:{\n {%- set ns_items = namespace(found_first=false) -%}\n {%- for item_key, item_value in value['items'] | dictsort -%}\n {%- if item_value is not none -%}\n {%- if ns_items.found_first %},{% endif -%}\n {%- set ns_items.found_first = true -%}\n {%- if item_key == 'properties' -%}\n properties:{\n {%- if item_value is mapping -%}\n {{- format_parameters(item_value, value['items']['required'] | default([])) -}}\n {%- endif -%}\n }\n {%- elif item_key == 'required' -%}\n required:[\n {%- for req_item in item_value -%}\n <|\"|>{{- req_item -}}<|\"|>\n {%- if not loop.last %},{% endif -%}\n {%- endfor -%}\n ]\n {%- elif item_key == 'type' -%}\n {%- if item_value is string -%}\n type:{{ format_argument(item_value | upper) }}\n {%- else -%}\n type:{{ format_argument(item_value | map('upper') | list) }}\n {%- endif -%}\n {%- else -%}\n {{ item_key }}:{{ format_argument(item_value) }}\n {%- endif -%}\n {%- endif -%}\n {%- endfor -%}\n }\n {%- endif -%}\n {%- endif -%}\n {%- if value['nullable'] %}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n nullable:true\n {%- endif -%}\n {%- if value['type'] | upper == 'OBJECT' -%}\n {%- if value['properties'] is defined and value['properties'] is mapping -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n properties:{\n {{- format_parameters(value['properties'], value['required'] | default([])) -}}\n }\n {%- elif value is mapping -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n properties:{\n {{- format_parameters(value, value['required'] | default([]), filter_keys=true) -}}\n }\n {%- endif -%}\n {%- if value['required'] -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n required:[\n {%- for item in value['required'] | default([]) -%}\n <|\"|>{{- item -}}<|\"|>\n {%- if not loop.last %},{% endif -%}\n {%- endfor -%}\n ]\n {%- endif -%}\n {%- endif -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n type:<|\"|>{{ value['type'] | upper }}<|\"|>}\n {%- endif -%}\n {%- endfor -%}\n{%- endmacro -%}\n{%- macro format_function_declaration(tool_data) -%}\n declaration:{{- tool_data['function']['name'] -}}{description:<|\"|>{{- tool_data['function']['description'] -}}<|\"|>\n {%- set params = tool_data['function']['parameters'] -%}\n {%- if params -%}\n ,parameters:{\n {%- if params['properties'] -%}\n properties:{ {{- format_parameters(params['properties'], params['required']) -}} },\n {%- endif -%}\n {%- if params['required'] -%}\n required:[\n {%- for item in params['required'] -%}\n <|\"|>{{- item -}}<|\"|>\n {{- ',' if not loop.last -}}\n {%- endfor -%}\n ],\n {%- endif -%}\n {%- if params['type'] -%}\n type:<|\"|>{{- params['type'] | upper -}}<|\"|>}\n {%- endif -%}\n {%- endif -%}\n {%- if 'response' in tool_data['function'] -%}\n {%- set response_declaration = tool_data['function']['response'] -%}\n ,response:{\n {%- if response_declaration['description'] -%}\n description:<|\"|>{{- response_declaration['description'] -}}<|\"|>,\n {%- endif -%}\n {%- if response_declaration['type'] | upper == 'OBJECT' -%}\n type:<|\"|>{{- response_declaration['type'] | upper -}}<|\"|>}\n {%- endif -%}\n {%- endif -%}\n }\n{%- endmacro -%}\n{%- macro format_argument(argument, escape_keys=True) -%}\n {%- if argument is none -%}\n {{- 'null' -}}\n {%- elif argument is string -%}\n {{- '<|\"|>' + argument + '<|\"|>' -}}\n {%- elif argument is boolean -%}\n {{- 'true' if argument else 'false' -}}\n {%- elif argument is mapping -%}\n {{- '{' -}}\n {%- set ns = namespace(found_first=false) -%}\n {%- for key, value in argument | dictsort -%}\n {%- if ns.found_first %},{% endif -%}\n {%- set ns.found_first = true -%}\n {%- if escape_keys -%}\n {{- '<|\"|>' + key + '<|\"|>' -}}\n {%- else -%}\n {{- key -}}\n {%- endif -%}\n :{{- format_argument(value, escape_keys=escape_keys) -}}\n {%- endfor -%}\n {{- '}' -}}\n {%- elif argument is sequence -%}\n {{- '[' -}}\n {%- for item in argument -%}\n {{- format_argument(item, escape_keys=escape_keys) -}}\n {%- if not loop.last %},{% endif -%}\n {%- endfor -%}\n {{- ']' -}}\n {%- else -%}\n {{- argument -}}\n {%- endif -%}\n{%- endmacro -%}\n{%- macro strip_thinking(text) -%}\n {%- set ns = namespace(result='') -%}\n {%- for part in text.split('<channel|>') -%}\n {%- if '<|channel>' in part -%}\n {%- set ns.result = ns.result + part.split('<|channel>')[0] -%}\n {%- else -%}\n {%- set ns.result = ns.result + part -%}\n {%- endif -%}\n {%- endfor -%}\n {{- ns.result | trim -}}\n{%- endmacro -%}\n\n{%- macro format_tool_response_block(tool_name, response) -%}\n {{- '<|tool_response>' -}}\n {%- if response is mapping -%}\n {{- 'response:' + tool_name + '{' -}}\n {%- for key, value in response | dictsort -%}\n {{- key -}}:{{- format_argument(value, escape_keys=False) -}}\n {%- if not loop.last %},{% endif -%}\n {%- endfor -%}\n {{- '}' -}}\n {%- else -%}\n {{- 'response:' + tool_name + '{value:' + format_argument(response, escape_keys=False) + '}' -}}\n {%- endif -%}\n {{- '<tool_response|>' -}}\n{%- endmacro -%}\n\n{#- ===== SETUP ===== -#}\n{%- set ns = namespace(prev_message_type=None, prev_non_tool_role=None) -%}\n{%- set loop_messages = messages -%}\n{%- set enable_thinking = enable_thinking | default(false) -%}\n{%- set preserve_thinking = preserve_thinking | default(false) -%}\n{{- bos_token -}}\n{#- Handle System/Tool Definitions Block -#}\n{%- if enable_thinking or tools or (messages and messages[0]['role'] in ['system', 'developer']) -%}\n {{- '<|turn>system\\n' -}}\n {#- Inject Thinking token at the very top of the FIRST system turn -#}\n {%- if enable_thinking -%}\n {{- '<|think|>\\n' -}}\n {%- set ns.prev_message_type = 'think' -%}\n {%- endif -%}\n {%- if messages and messages[0]['role'] in ['system', 'developer'] -%}\n {%- if messages[0]['content'] is string -%}\n {{- messages[0]['content'] | trim -}}\n {%- elif messages[0]['content'] is sequence -%}\n {%- for item in messages[0]['content'] -%}\n {{- item['text'] | trim + ' '-}}\n {%- endfor -%}\n {%- endif -%}\n {%- set loop_messages = messages[1:] -%}\n {%- endif -%}\n {%- if tools -%}\n {%- for tool in tools %}\n {{- '<|tool>' -}}\n {{- format_function_declaration(tool) | trim -}}\n {{- '<tool|>' -}}\n {%- endfor %}\n {%- set ns.prev_message_type = 'tool' -%}\n {%- endif -%}\n {{- '<turn|>\\n' -}}\n{%- endif %}\n\n{#- Pre-scan: find last user message index for reasoning guard -#}\n{%- set ns_turn = namespace(last_user_idx=-1) -%}\n{%- for i in range(loop_messages | length) -%}\n {%- if loop_messages[i]['role'] == 'user' -%}\n {%- set ns_turn.last_user_idx = i -%}\n {%- endif -%}\n{%- endfor -%}\n\n{#- Loop through messages -#}\n{%- for message in loop_messages -%}\n {%- if message['role'] != 'tool' -%}\n {%- set ns.prev_message_type = None -%}\n {%- set role = 'model' if message['role'] == 'assistant' else message['role'] -%}\n {#- Detect continuation using tracked state — O(1) instead of O(n) backward scan -#}\n {%- set continue_same_model_turn = (role == 'model' and ns.prev_non_tool_role == 'assistant') -%}\n {%- if not continue_same_model_turn -%}\n {{- '<|turn>' + role + '\\n' }}\n\n {%- endif -%}\n\n {#- Render reasoning/reasoning_content as thinking channel -#}\n {%- set thinking_text = message.get('reasoning') or message.get('reasoning_content') -%}\n {%- set thinking_gate = (loop.index0 > ns_turn.last_user_idx) or (preserve_thinking and message.get('tool_calls')) -%}\n {%- if thinking_text and thinking_gate -%}\n {{- '<|channel>thought\\n' + thinking_text + '\\n<channel|>' -}}\n {%- endif -%}\n\n {%- if message.get('tool_calls') -%}\n {%- for tool_call in message.get('tool_calls') -%}\n {%- set function = tool_call['function'] -%}\n {{- '<|tool_call>call:' + function['name'] + '{' -}}\n {%- if function['arguments'] is mapping -%}\n {%- set ns_args = namespace(found_first=false) -%}\n {%- for key, value in function['arguments'] | dictsort -%}\n {%- if ns_args.found_first %},{% endif -%}\n {%- set ns_args.found_first = true -%}\n {{- key -}}:{{- format_argument(value, escape_keys=False) -}}\n {%- endfor -%}\n {%- elif function['arguments'] is none -%}\n {%- else -%}\n {{- raise_exception(\n \"chat_template: tool_calls[].function.arguments must be a \"\n \"JSON object (mapping), not a string. Deserialize arguments \"\n \"before passing to the template.\"\n ) -}}\n {%- endif -%}\n {{- '}<tool_call|>' -}}\n {%- endfor -%}\n {%- set ns.prev_message_type = 'tool_call' -%}\n {%- endif -%}\n\n {%- set ns_tr_out = namespace(flag=false) -%}\n {%- if message.get('tool_responses') -%}\n {#- Legacy: tool_responses embedded on the assistant message (Google/Gemma native) -#}\n {%- for tool_response in message.get('tool_responses') -%}\n {{- format_tool_response_block(tool_response['name'] | default('unknown', true), tool_response['response']) -}}\n {%- set ns_tr_out.flag = true -%}\n {%- set ns.prev_message_type = 'tool_response' -%}\n {%- endfor -%}\n {%- elif message.get('tool_calls') -%}\n {#- OpenAI Chat Completions: forward-scan consecutive role:tool messages -#}\n {%- set ns_tool_scan = namespace(stopped=false) -%}\n {%- for k in range(loop.index0 + 1, loop_messages | length) -%}\n {%- if ns_tool_scan.stopped -%}\n {%- elif loop_messages[k]['role'] != 'tool' -%}\n {%- set ns_tool_scan.stopped = true -%}\n {%- else -%}\n {%- set follow = loop_messages[k] -%}\n {#- Resolve tool_call_id to function name -#}\n {%- set ns_tname = namespace(name=follow.get('name') or 'unknown') -%}\n {%- for tc in message.get('tool_calls') -%}\n {%- if tc.get('id') == follow.get('tool_call_id') -%}\n {%- set ns_tname.name = tc['function']['name'] -%}\n {%- endif -%}\n {%- endfor -%}\n {#- Handle content as string or content-parts array -#}\n {%- set tool_body = follow.get('content') -%}\n {%- if tool_body is string -%}\n {{- format_tool_response_block(ns_tname.name, tool_body) -}}\n {%- elif tool_body is sequence and tool_body is not string -%}\n {%- set ns_txt = namespace(s='') -%}\n {%- for part in tool_body -%}\n {%- if part.get('type') == 'text' -%}\n {%- set ns_txt.s = ns_txt.s + (part.get('text') | default('')) -%}\n {%- endif -%}\n {%- endfor -%}\n {{- format_tool_response_block(ns_tname.name, ns_txt.s) -}}\n {%- for part in tool_body -%}\n {%- if part.get('type') in ['image', 'image_url'] -%}\n {{- '<|image|>' -}}\n {%- elif part.get('type') in ['audio', 'input_audio'] -%}\n {{- '<|audio|>' -}}\n {%- elif part.get('type') == 'video' -%}\n {{- '<|video|>' -}}\n {%- endif -%}\n {%- endfor -%}\n {%- else -%}\n {{- format_tool_response_block(ns_tname.name, tool_body) -}}\n {%- endif -%}\n {%- set ns_tr_out.flag = true -%}\n {%- set ns.prev_message_type = 'tool_response' -%}\n {%- endif -%}\n {%- endfor -%}\n {%- endif -%}\n\n {%- set captured_content -%}\n {%- if message.get('content') is string -%}\n {%- if role == 'model' -%}\n {{- strip_thinking(message['content']) -}}\n {%- else -%}\n {{- message['content'] | trim -}}\n {%- endif -%}\n {%- elif message.get('content') is sequence -%}\n {%- for item in message['content'] -%}\n {%- if item.get('type') == 'text' -%}\n {%- if role == 'model' -%}\n {{- strip_thinking(item['text']) -}}\n {%- else -%}\n {{- item['text'] | trim -}}\n {%- endif -%}\n {%- elif item.get('type') in ['image', 'image_url'] -%}\n {{- '<|image|>' -}}\n {%- elif item.get('type') in ['audio', 'input_audio'] -%}\n {{- '<|audio|>' -}}\n {%- elif item.get('type') == 'video' -%}\n {{- '<|video|>' -}}\n {%- endif -%}\n {%- endfor -%}\n {%- endif -%}\n {%- endset -%}\n\n {{- captured_content -}}\n {%- set has_content = captured_content | trim | length > 0 -%}\n\n {#- Forward-scan: find next non-tool message role for continuation detection -#}\n {%- set next_nt = namespace(role=None, found=false) -%}\n {%- for j in range(loop.index0 + 1, loop_messages | length) -%}\n {%- if not next_nt.found -%}\n {%- if loop_messages[j]['role'] != 'tool' -%}\n {%- set next_nt.role = loop_messages[j]['role'] -%}\n {%- set next_nt.found = true -%}\n {%- endif -%}\n {%- endif -%}\n {%- endfor -%}\n\n {%- set continues_into_next = (\n role == 'model'\n and next_nt.role == 'assistant'\n and (not message.get('tool_calls') or ns_tr_out.flag)\n ) -%}\n\n {%- if ns.prev_message_type == 'tool_call' and not ns_tr_out.flag -%}\n {{- '<|tool_response>' -}}\n {%- elif continues_into_next -%}\n {%- elif not (ns_tr_out.flag and not has_content and not next_nt.found) -%}\n {{- '<turn|>\\n' -}}\n {%- endif -%}\n\n {#- Track previous non-tool role for next iteration (avoids O(n) backward scan) -#}\n {%- set ns.prev_non_tool_role = message['role'] -%}\n {%- endif -%}\n{%- endfor -%}\n\n{%- if add_generation_prompt -%}\n {%- if ns.prev_message_type != 'tool_response' and ns.prev_message_type != 'tool_call' -%}\n {{- '<|turn>model\\n' -}}\n {%- if not enable_thinking -%}\n {{- '<|channel>thought\\n<channel|>' -}}\n {%- endif -%}\n {%- elif ns.prev_message_type == 'tool_response' and enable_thinking -%}\n {{- '<|channel>thought\\n' -}}\n {%- endif -%}\n{%- endif -%}\n"},"availableVersions":["1.1.0","1.0.3","1.0.2","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"gemma4-26b-q4","name":"Gemma 4 (26B, MoE, Q4)","description":"Google's Gemma 4 mixture-of-experts model — 25.2B total parameters with 3.8B active per token. Multimodal with long-context agentic workflows. The full 26B has to fit in memory but only ~4B parameters fire per token, so on capable hardware it runs noticeably faster than the dense 31B at a similar memory cost — the recommended high-end on-device default.","tags":["google","multimodal","vision","tools","mix of experts","agentic","qat"],"maintainer":{"name":"Google","url":"https://huggingface.co/google/gemma-4-26B-A4B-it"},"license":"Apache-2.0","licenseClass":"open","licenseShortName":"Apache 2.0","recoScore":15,"version":"1.3.0","releasedAt":"2026-08-28T00:00:00Z","parameterSize":"25.2B","approxSizeBytes":14249047104,"supportsTools":true,"contextWindow":256000,"upstream":"https://huggingface.co/google/gemma-4-26B-A4B-it","category":"general","style":{"family":"gemma","reasoningFormat":"channel","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-channel-tags","reasoning.capture-pre-tool-prose","prompt.private-reasoning-guidance","prompt.tool-cookbook-full","prompt.meester-build-prelude","fabrication.detect-past-tense-no-tools","fabrication.detect-claim-without-tool","turn.preamble-folding",{"id":"turn.ramble-detection","config":{"coldThreshold":8000,"postActionThreshold":2000}},"turn.auto-acknowledge-tool-errors",{"id":"turn.continuation-budget","config":{"count":4}},"mcp.compact-tool-schemas","mcp.validate-ids-strict",{"id":"turn.single-tool-per-turn","config":{"meesterOnly":true}},"parse.gemma-special-token","tools.mlx-grammar"],"tuning":{"sampling":{"temperature":1,"topP":0.95,"topK":64,"maxTokens":8192,"repetitionPenalty":1.1,"repetitionContext":20},"reasoning":{"thinkingBudget":96},"engine":{"llamaCpp":{"spec":{"mtp":true,"nMax":4}}},"profiles":{"thinking-general":{"sampling":{"temperature":0.8,"topP":0.95,"topK":64,"maxTokens":8192,"repetitionPenalty":1.1,"repetitionContext":20}},"thinking-coding":{"sampling":{"temperature":0.6,"topP":0.9,"topK":40,"maxTokens":16384,"repetitionPenalty":1.05,"repetitionContext":32}},"thinking-precise":{"sampling":{"temperature":0.3,"topP":0.9,"topK":20,"maxTokens":4096,"seed":0,"repetitionPenalty":1.05,"repetitionContext":20}},"instruct":{"sampling":{"temperature":0.7,"topP":0.95,"topK":64,"maxTokens":4096,"repetitionPenalty":1.1,"repetitionContext":20}},"creative":{"sampling":{"temperature":1.1,"topP":0.95,"topK":64,"maxTokens":8192,"repetitionPenalty":1,"repetitionContext":20}}}},"ollama":{"tag":"gemma4:26b-a4b-it-qat"},"llamaCpp":{"huggingfaceRepo":"unsloth/gemma-4-26B-A4B-it-qat-GGUF","revision":"7b92b5b28818151e8669af2e45e88d6086f490dd","filename":"gemma-4-26B-A4B-it-qat-UD-Q4_K_XL.gguf","sha256":"a7c5bc715f5ff8e99a3e8901ce7d2b42b402c669bf24f7c5250747633d0f5891","approxSizeBytes":14249047104,"quantization":"UD-Q4_K_XL","draftModel":{"filename":"MTP/mtp-gemma-4-26B-A4B-it-Q4_0.gguf","sha256":"7272d97595f0d4c74bd7b623492b7dbdaafd8b7c72f329a8270ba4eca68f768a","sizeBytes":251939328}},"mlx":{"huggingfaceRepo":"mlx-community/gemma-4-26B-A4B-it-qat-4bit","revision":"0e3cbab38ce568cf6e23543010d08d03b731910c","files":[{"name":"chat_template.jinja","sha256":"94899c0f917d93f6fe81c95744d1e8ddab2d21d39228d2e4aec1fb2a25bff413","sizeBytes":16934},{"name":"config.json","sha256":"29910322dd085f45c8f95c6c0f1611b20f722d6f6c8394321b34817e98a972fa","sizeBytes":33376},{"name":"generation_config.json","sha256":"b69207f9be617e982d13cc273cce6fd88c98dda99a4bdc5e2d52ffe0a0d9f0a9","sizeBytes":203},{"name":"model-00001-of-00003.safetensors","sha256":"898863f0d5eba7153a9c9b9443aac1969809f2149e88481c725b6da40783f129","sizeBytes":5275612587},{"name":"model-00002-of-00003.safetensors","sha256":"2abdca76ed4a647cfe8af680908894e2709b4e1221ddbbbef1b1edb14f60e303","sizeBytes":5296718232},{"name":"model-00003-of-00003.safetensors","sha256":"a554f0fdb61bc9e510a5318e723a780c31434fd3e3dcdd3c16c700f835ade7b7","sizeBytes":5036507755},{"name":"model.safetensors.index.json","sha256":"5455e83705bbdd4e3702c7d4f9d49d4900e84533036628f74500538075dd5c80","sizeBytes":176940},{"name":"processor_config.json","sha256":"1bd0d00776284f369c1eff5fb631e865dfcdca861e0b7d60dbef27fcf37436a8","sizeBytes":902},{"name":"tokenizer.json","sha256":"cc8d3a0ce36466ccc1278bf987df5f71db1719b9ca6b4118264f45cb627bfe0f","sizeBytes":32169626},{"name":"tokenizer_config.json","sha256":"080d9e1aff284e2f6043889cd05367966f7c7b80e025fbc0b06745e218158656","sizeBytes":2740}],"approxSizeBytes":15641239295,"quantization":"4bit","chatTemplateOverride":"{#\n Template: Google Gemma 4 Canonical Chat Template\n Author: Google Gemma Engineering Team\n Published: 2026-07-09\n Context: Fixed tool-calling loops, turn closures, and thinking content-ordering.\n#}\n{%- macro format_parameters(properties, required, filter_keys=false) -%}\n {%- set standard_keys = ['description', 'type', 'properties', 'required', 'nullable'] -%}\n {%- set ns = namespace(found_first=false) -%}\n {%- for key, value in properties | dictsort -%}\n {%- set add_comma = false -%}\n {%- if not filter_keys or key not in standard_keys -%}\n {%- if ns.found_first %},{% endif -%}\n {%- set ns.found_first = true -%}\n {{ key }}:{\n {%- if value['description'] -%}\n description:<|\"|>{{ value['description'] }}<|\"|>\n {%- set add_comma = true -%}\n {%- endif -%}\n {%- if value['type'] | upper == 'STRING' -%}\n {%- if value['enum'] -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n enum:{{ format_argument(value['enum']) }}\n {%- endif -%}\n {%- elif value['type'] | upper == 'ARRAY' -%}\n {%- if value['items'] is mapping and value['items'] -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n items:{\n {%- set ns_items = namespace(found_first=false) -%}\n {%- for item_key, item_value in value['items'] | dictsort -%}\n {%- if item_value is not none -%}\n {%- if ns_items.found_first %},{% endif -%}\n {%- set ns_items.found_first = true -%}\n {%- if item_key == 'properties' -%}\n properties:{\n {%- if item_value is mapping -%}\n {{- format_parameters(item_value, value['items']['required'] | default([])) -}}\n {%- endif -%}\n }\n {%- elif item_key == 'required' -%}\n required:[\n {%- for req_item in item_value -%}\n <|\"|>{{- req_item -}}<|\"|>\n {%- if not loop.last %},{% endif -%}\n {%- endfor -%}\n ]\n {%- elif item_key == 'type' -%}\n {%- if item_value is string -%}\n type:{{ format_argument(item_value | upper) }}\n {%- else -%}\n type:{{ format_argument(item_value | map('upper') | list) }}\n {%- endif -%}\n {%- else -%}\n {{ item_key }}:{{ format_argument(item_value) }}\n {%- endif -%}\n {%- endif -%}\n {%- endfor -%}\n }\n {%- endif -%}\n {%- endif -%}\n {%- if value['nullable'] %}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n nullable:true\n {%- endif -%}\n {%- if value['type'] | upper == 'OBJECT' -%}\n {%- if value['properties'] is defined and value['properties'] is mapping -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n properties:{\n {{- format_parameters(value['properties'], value['required'] | default([])) -}}\n }\n {%- elif value is mapping -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n properties:{\n {{- format_parameters(value, value['required'] | default([]), filter_keys=true) -}}\n }\n {%- endif -%}\n {%- if value['required'] -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n required:[\n {%- for item in value['required'] | default([]) -%}\n <|\"|>{{- item -}}<|\"|>\n {%- if not loop.last %},{% endif -%}\n {%- endfor -%}\n ]\n {%- endif -%}\n {%- endif -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n type:<|\"|>{{ value['type'] | upper }}<|\"|>}\n {%- endif -%}\n {%- endfor -%}\n{%- endmacro -%}\n{%- macro format_function_declaration(tool_data) -%}\n declaration:{{- tool_data['function']['name'] -}}{description:<|\"|>{{- tool_data['function']['description'] -}}<|\"|>\n {%- set params = tool_data['function']['parameters'] -%}\n {%- if params -%}\n ,parameters:{\n {%- if params['properties'] -%}\n properties:{ {{- format_parameters(params['properties'], params['required']) -}} },\n {%- endif -%}\n {%- if params['required'] -%}\n required:[\n {%- for item in params['required'] -%}\n <|\"|>{{- item -}}<|\"|>\n {{- ',' if not loop.last -}}\n {%- endfor -%}\n ],\n {%- endif -%}\n {%- if params['type'] -%}\n type:<|\"|>{{- params['type'] | upper -}}<|\"|>}\n {%- endif -%}\n {%- endif -%}\n {%- if 'response' in tool_data['function'] -%}\n {%- set response_declaration = tool_data['function']['response'] -%}\n ,response:{\n {%- if response_declaration['description'] -%}\n description:<|\"|>{{- response_declaration['description'] -}}<|\"|>,\n {%- endif -%}\n {%- if response_declaration['type'] | upper == 'OBJECT' -%}\n type:<|\"|>{{- response_declaration['type'] | upper -}}<|\"|>}\n {%- endif -%}\n {%- endif -%}\n }\n{%- endmacro -%}\n{%- macro format_argument(argument, escape_keys=True) -%}\n {%- if argument is none -%}\n {{- 'null' -}}\n {%- elif argument is string -%}\n {{- '<|\"|>' + argument + '<|\"|>' -}}\n {%- elif argument is boolean -%}\n {{- 'true' if argument else 'false' -}}\n {%- elif argument is mapping -%}\n {{- '{' -}}\n {%- set ns = namespace(found_first=false) -%}\n {%- for key, value in argument | dictsort -%}\n {%- if ns.found_first %},{% endif -%}\n {%- set ns.found_first = true -%}\n {%- if escape_keys -%}\n {{- '<|\"|>' + key + '<|\"|>' -}}\n {%- else -%}\n {{- key -}}\n {%- endif -%}\n :{{- format_argument(value, escape_keys=escape_keys) -}}\n {%- endfor -%}\n {{- '}' -}}\n {%- elif argument is sequence -%}\n {{- '[' -}}\n {%- for item in argument -%}\n {{- format_argument(item, escape_keys=escape_keys) -}}\n {%- if not loop.last %},{% endif -%}\n {%- endfor -%}\n {{- ']' -}}\n {%- else -%}\n {{- argument -}}\n {%- endif -%}\n{%- endmacro -%}\n{%- macro strip_thinking(text) -%}\n {%- set ns = namespace(result='') -%}\n {%- for part in text.split('<channel|>') -%}\n {%- if '<|channel>' in part -%}\n {%- set ns.result = ns.result + part.split('<|channel>')[0] -%}\n {%- else -%}\n {%- set ns.result = ns.result + part -%}\n {%- endif -%}\n {%- endfor -%}\n {{- ns.result | trim -}}\n{%- endmacro -%}\n\n{%- macro format_tool_response_block(tool_name, response) -%}\n {{- '<|tool_response>' -}}\n {%- if response is mapping -%}\n {{- 'response:' + tool_name + '{' -}}\n {%- for key, value in response | dictsort -%}\n {{- key -}}:{{- format_argument(value, escape_keys=False) -}}\n {%- if not loop.last %},{% endif -%}\n {%- endfor -%}\n {{- '}' -}}\n {%- else -%}\n {{- 'response:' + tool_name + '{value:' + format_argument(response, escape_keys=False) + '}' -}}\n {%- endif -%}\n {{- '<tool_response|>' -}}\n{%- endmacro -%}\n\n{#- ===== SETUP ===== -#}\n{%- set ns = namespace(prev_message_type=None, prev_non_tool_role=None) -%}\n{%- set loop_messages = messages -%}\n{%- set enable_thinking = enable_thinking | default(false) -%}\n{%- set preserve_thinking = preserve_thinking | default(false) -%}\n{{- bos_token -}}\n{#- Handle System/Tool Definitions Block -#}\n{%- if enable_thinking or tools or (messages and messages[0]['role'] in ['system', 'developer']) -%}\n {{- '<|turn>system\\n' -}}\n {#- Inject Thinking token at the very top of the FIRST system turn -#}\n {%- if enable_thinking -%}\n {{- '<|think|>\\n' -}}\n {%- set ns.prev_message_type = 'think' -%}\n {%- endif -%}\n {%- if messages and messages[0]['role'] in ['system', 'developer'] -%}\n {%- if messages[0]['content'] is string -%}\n {{- messages[0]['content'] | trim -}}\n {%- elif messages[0]['content'] is sequence -%}\n {%- for item in messages[0]['content'] -%}\n {{- item['text'] | trim + ' '-}}\n {%- endfor -%}\n {%- endif -%}\n {%- set loop_messages = messages[1:] -%}\n {%- endif -%}\n {%- if tools -%}\n {%- for tool in tools %}\n {{- '<|tool>' -}}\n {{- format_function_declaration(tool) | trim -}}\n {{- '<tool|>' -}}\n {%- endfor %}\n {%- set ns.prev_message_type = 'tool' -%}\n {%- endif -%}\n {{- '<turn|>\\n' -}}\n{%- endif %}\n\n{#- Pre-scan: find last user message index for reasoning guard -#}\n{%- set ns_turn = namespace(last_user_idx=-1) -%}\n{%- for i in range(loop_messages | length) -%}\n {%- if loop_messages[i]['role'] == 'user' -%}\n {%- set ns_turn.last_user_idx = i -%}\n {%- endif -%}\n{%- endfor -%}\n\n{#- Loop through messages -#}\n{%- for message in loop_messages -%}\n {%- if message['role'] != 'tool' -%}\n {%- set ns.prev_message_type = None -%}\n {%- set role = 'model' if message['role'] == 'assistant' else message['role'] -%}\n {#- Detect continuation using tracked state — O(1) instead of O(n) backward scan -#}\n {%- set continue_same_model_turn = (role == 'model' and ns.prev_non_tool_role == 'assistant') -%}\n {%- if not continue_same_model_turn -%}\n {{- '<|turn>' + role + '\\n' }}\n\n {%- endif -%}\n\n {#- Render reasoning/reasoning_content as thinking channel -#}\n {%- set thinking_text = message.get('reasoning') or message.get('reasoning_content') -%}\n {%- set thinking_gate = (loop.index0 > ns_turn.last_user_idx) or (preserve_thinking and message.get('tool_calls')) -%}\n {%- if thinking_text and thinking_gate -%}\n {{- '<|channel>thought\\n' + thinking_text + '\\n<channel|>' -}}\n {%- endif -%}\n\n {%- if message.get('tool_calls') -%}\n {%- for tool_call in message.get('tool_calls') -%}\n {%- set function = tool_call['function'] -%}\n {{- '<|tool_call>call:' + function['name'] + '{' -}}\n {%- if function['arguments'] is mapping -%}\n {%- set ns_args = namespace(found_first=false) -%}\n {%- for key, value in function['arguments'] | dictsort -%}\n {%- if ns_args.found_first %},{% endif -%}\n {%- set ns_args.found_first = true -%}\n {{- key -}}:{{- format_argument(value, escape_keys=False) -}}\n {%- endfor -%}\n {%- elif function['arguments'] is none -%}\n {%- else -%}\n {{- raise_exception(\n \"chat_template: tool_calls[].function.arguments must be a \"\n \"JSON object (mapping), not a string. Deserialize arguments \"\n \"before passing to the template.\"\n ) -}}\n {%- endif -%}\n {{- '}<tool_call|>' -}}\n {%- endfor -%}\n {%- set ns.prev_message_type = 'tool_call' -%}\n {%- endif -%}\n\n {%- set ns_tr_out = namespace(flag=false) -%}\n {%- if message.get('tool_responses') -%}\n {#- Legacy: tool_responses embedded on the assistant message (Google/Gemma native) -#}\n {%- for tool_response in message.get('tool_responses') -%}\n {{- format_tool_response_block(tool_response['name'] | default('unknown', true), tool_response['response']) -}}\n {%- set ns_tr_out.flag = true -%}\n {%- set ns.prev_message_type = 'tool_response' -%}\n {%- endfor -%}\n {%- elif message.get('tool_calls') -%}\n {#- OpenAI Chat Completions: forward-scan consecutive role:tool messages -#}\n {%- set ns_tool_scan = namespace(stopped=false) -%}\n {%- for k in range(loop.index0 + 1, loop_messages | length) -%}\n {%- if ns_tool_scan.stopped -%}\n {%- elif loop_messages[k]['role'] != 'tool' -%}\n {%- set ns_tool_scan.stopped = true -%}\n {%- else -%}\n {%- set follow = loop_messages[k] -%}\n {#- Resolve tool_call_id to function name -#}\n {%- set ns_tname = namespace(name=follow.get('name') or 'unknown') -%}\n {%- for tc in message.get('tool_calls') -%}\n {%- if tc.get('id') == follow.get('tool_call_id') -%}\n {%- set ns_tname.name = tc['function']['name'] -%}\n {%- endif -%}\n {%- endfor -%}\n {#- Handle content as string or content-parts array -#}\n {%- set tool_body = follow.get('content') -%}\n {%- if tool_body is string -%}\n {{- format_tool_response_block(ns_tname.name, tool_body) -}}\n {%- elif tool_body is sequence and tool_body is not string -%}\n {%- set ns_txt = namespace(s='') -%}\n {%- for part in tool_body -%}\n {%- if part.get('type') == 'text' -%}\n {%- set ns_txt.s = ns_txt.s + (part.get('text') | default('')) -%}\n {%- endif -%}\n {%- endfor -%}\n {{- format_tool_response_block(ns_tname.name, ns_txt.s) -}}\n {%- for part in tool_body -%}\n {%- if part.get('type') in ['image', 'image_url'] -%}\n {{- '<|image|>' -}}\n {%- elif part.get('type') in ['audio', 'input_audio'] -%}\n {{- '<|audio|>' -}}\n {%- elif part.get('type') == 'video' -%}\n {{- '<|video|>' -}}\n {%- endif -%}\n {%- endfor -%}\n {%- else -%}\n {{- format_tool_response_block(ns_tname.name, tool_body) -}}\n {%- endif -%}\n {%- set ns_tr_out.flag = true -%}\n {%- set ns.prev_message_type = 'tool_response' -%}\n {%- endif -%}\n {%- endfor -%}\n {%- endif -%}\n\n {%- set captured_content -%}\n {%- if message.get('content') is string -%}\n {%- if role == 'model' -%}\n {{- strip_thinking(message['content']) -}}\n {%- else -%}\n {{- message['content'] | trim -}}\n {%- endif -%}\n {%- elif message.get('content') is sequence -%}\n {%- for item in message['content'] -%}\n {%- if item.get('type') == 'text' -%}\n {%- if role == 'model' -%}\n {{- strip_thinking(item['text']) -}}\n {%- else -%}\n {{- item['text'] | trim -}}\n {%- endif -%}\n {%- elif item.get('type') in ['image', 'image_url'] -%}\n {{- '<|image|>' -}}\n {%- elif item.get('type') in ['audio', 'input_audio'] -%}\n {{- '<|audio|>' -}}\n {%- elif item.get('type') == 'video' -%}\n {{- '<|video|>' -}}\n {%- endif -%}\n {%- endfor -%}\n {%- endif -%}\n {%- endset -%}\n\n {{- captured_content -}}\n {%- set has_content = captured_content | trim | length > 0 -%}\n\n {#- Forward-scan: find next non-tool message role for continuation detection -#}\n {%- set next_nt = namespace(role=None, found=false) -%}\n {%- for j in range(loop.index0 + 1, loop_messages | length) -%}\n {%- if not next_nt.found -%}\n {%- if loop_messages[j]['role'] != 'tool' -%}\n {%- set next_nt.role = loop_messages[j]['role'] -%}\n {%- set next_nt.found = true -%}\n {%- endif -%}\n {%- endif -%}\n {%- endfor -%}\n\n {%- set continues_into_next = (\n role == 'model'\n and next_nt.role == 'assistant'\n and (not message.get('tool_calls') or ns_tr_out.flag)\n ) -%}\n\n {%- if ns.prev_message_type == 'tool_call' and not ns_tr_out.flag -%}\n {{- '<|tool_response>' -}}\n {%- elif continues_into_next -%}\n {%- elif not (ns_tr_out.flag and not has_content and not next_nt.found) -%}\n {{- '<turn|>\\n' -}}\n {%- endif -%}\n\n {#- Track previous non-tool role for next iteration (avoids O(n) backward scan) -#}\n {%- set ns.prev_non_tool_role = message['role'] -%}\n {%- endif -%}\n{%- endfor -%}\n\n{%- if add_generation_prompt -%}\n {%- if ns.prev_message_type != 'tool_response' and ns.prev_message_type != 'tool_call' -%}\n {{- '<|turn>model\\n' -}}\n {%- if not enable_thinking -%}\n {{- '<|channel>thought\\n<channel|>' -}}\n {%- endif -%}\n {%- elif ns.prev_message_type == 'tool_response' and enable_thinking -%}\n {{- '<|channel>thought\\n' -}}\n {%- endif -%}\n{%- endif -%}\n"},"availableVersions":["1.3.0","1.2.2","1.2.1","1.2.0","1.1.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"gemma4-31b-q4","name":"Gemma 4 (31B, Q4)","description":"Google's flagship Gemma 4 at 30.7B parameters. Multimodal (text + image + video), 256K context, configurable thinking mode, native function-calling, 140+ languages. Frontier-tier instruction-following on device — needs 32GB+ of usable memory.","tags":["google","multimodal","vision","video","tools","reasoning","large","qat"],"maintainer":{"name":"Google","url":"https://huggingface.co/google/gemma-4-31B-it"},"license":"Apache-2.0","licenseClass":"open","licenseShortName":"Apache 2.0","recoScore":15,"version":"1.3.0","releasedAt":"2026-08-28T00:00:00Z","parameterSize":"30.7B","approxSizeBytes":17287670048,"supportsTools":true,"contextWindow":256000,"upstream":"https://huggingface.co/google/gemma-4-31B-it","category":"general","style":{"family":"gemma","reasoningFormat":"channel","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-channel-tags","reasoning.capture-pre-tool-prose","prompt.private-reasoning-guidance","prompt.tool-cookbook-full","prompt.meester-build-prelude","fabrication.detect-past-tense-no-tools","fabrication.detect-claim-without-tool","turn.preamble-folding",{"id":"turn.ramble-detection","config":{"coldThreshold":8000,"postActionThreshold":2000}},"turn.auto-acknowledge-tool-errors",{"id":"turn.continuation-budget","config":{"count":4}},"mcp.compact-tool-schemas","mcp.validate-ids-strict",{"id":"turn.single-tool-per-turn","config":{"meesterOnly":true}},"parse.gemma-special-token","tools.mlx-grammar"],"tuning":{"sampling":{"temperature":1,"topP":0.95,"topK":64,"maxTokens":8192,"repetitionPenalty":1.1,"repetitionContext":20},"reasoning":{"thinkingBudget":96},"engine":{"llamaCpp":{"spec":{"mtp":true,"nMax":4}}},"profiles":{"thinking-general":{"sampling":{"temperature":0.8,"topP":0.95,"topK":64,"maxTokens":8192,"repetitionPenalty":1.1,"repetitionContext":20}},"thinking-coding":{"sampling":{"temperature":0.6,"topP":0.9,"topK":40,"maxTokens":16384,"repetitionPenalty":1.05,"repetitionContext":32}},"thinking-precise":{"sampling":{"temperature":0.3,"topP":0.9,"topK":20,"maxTokens":4096,"seed":0,"repetitionPenalty":1.05,"repetitionContext":20}},"instruct":{"sampling":{"temperature":0.7,"topP":0.95,"topK":64,"maxTokens":4096,"repetitionPenalty":1.1,"repetitionContext":20}},"creative":{"sampling":{"temperature":1.1,"topP":0.95,"topK":64,"maxTokens":8192,"repetitionPenalty":1,"repetitionContext":20}}}},"ollama":{"tag":"gemma4:31b-it-qat"},"llamaCpp":{"huggingfaceRepo":"unsloth/gemma-4-31B-it-qat-GGUF","revision":"43cc1aeb31adf47ec06a854507ce552cd9862e6f","filename":"gemma-4-31B-it-qat-UD-Q4_K_XL.gguf","sha256":"00b5a7c497f0c8934033088c10a7fa9a4c015e46ee6d89e9c6890650ba5d0e71","approxSizeBytes":17287670048,"quantization":"UD-Q4_K_XL","draftModel":{"filename":"MTP/mtp-gemma-4-31B-it-Q4_0.gguf","sha256":"3a5e99fd8d0b23afb1fccd1ee0c9ebd1f571d00399c2dae2292d217feeec0f6b","sizeBytes":279955968}},"mlx":{"huggingfaceRepo":"mlx-community/unsloth-gemma-4-31B-it-qat-oQ4","revision":"d809645df8db9531a57e76a2a55939435ed9a7ce","files":[{"name":"chat_template.jinja","sha256":"94899c0f917d93f6fe81c95744d1e8ddab2d21d39228d2e4aec1fb2a25bff413","sizeBytes":16934},{"name":"config.json","sha256":"a89544f9bcfbb93e5a989a30743e88c3f1cb03ee07143bebf15a5913607044e7","sizeBytes":20737},{"name":"generation_config.json","sha256":"b69207f9be617e982d13cc273cce6fd88c98dda99a4bdc5e2d52ffe0a0d9f0a9","sizeBytes":203},{"name":"model-00001-of-00004.safetensors","sha256":"c5ad363542fddc24dc3c7fc97e5cb27b18409093ecd36e11aa64c3a84aa461da","sizeBytes":5006425192},{"name":"model-00002-of-00004.safetensors","sha256":"41798b01d27526f1a427c9a8430483ecea94c77307b3197f4ce7bdb9c5e034f0","sizeBytes":5006814115},{"name":"model-00003-of-00004.safetensors","sha256":"0e9fa1b2debe2be22591643fe101b3c5c903c33f4a47b0e16a6039a429e71d88","sizeBytes":5004752752},{"name":"model-00004-of-00004.safetensors","sha256":"b7a0e273e2bbdab4aefbc3d02eb17df95f85fe40b3abdcfe955a1901954bbd55","sizeBytes":3982374263},{"name":"model.safetensors.index.json","sha256":"6c8289b38bc5e63e009552d3b855115ee340a6ee7e6ecc095fa7ac895f6c6951","sizeBytes":197310},{"name":"processor_config.json","sha256":"32bdf45d2ad4cc29a0822ddd157a182de76644f0419a6228d151495256e9813c","sizeBytes":1689},{"name":"tokenizer.json","sha256":"cc8d3a0ce36466ccc1278bf987df5f71db1719b9ca6b4118264f45cb627bfe0f","sizeBytes":32169626},{"name":"tokenizer_config.json","sha256":"a1bab8c81ed15fa6ce912ec993c66cb49392e0487fb1ea5f5f11ea3618683627","sizeBytes":2742}],"approxSizeBytes":19032775563,"quantization":"oQ4","chatTemplateOverride":"{#\n Template: Google Gemma 4 Canonical Chat Template\n Author: Google Gemma Engineering Team\n Published: 2026-07-09\n Context: Fixed tool-calling loops, turn closures, and thinking content-ordering.\n#}\n{%- macro format_parameters(properties, required, filter_keys=false) -%}\n {%- set standard_keys = ['description', 'type', 'properties', 'required', 'nullable'] -%}\n {%- set ns = namespace(found_first=false) -%}\n {%- for key, value in properties | dictsort -%}\n {%- set add_comma = false -%}\n {%- if not filter_keys or key not in standard_keys -%}\n {%- if ns.found_first %},{% endif -%}\n {%- set ns.found_first = true -%}\n {{ key }}:{\n {%- if value['description'] -%}\n description:<|\"|>{{ value['description'] }}<|\"|>\n {%- set add_comma = true -%}\n {%- endif -%}\n {%- if value['type'] | upper == 'STRING' -%}\n {%- if value['enum'] -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n enum:{{ format_argument(value['enum']) }}\n {%- endif -%}\n {%- elif value['type'] | upper == 'ARRAY' -%}\n {%- if value['items'] is mapping and value['items'] -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n items:{\n {%- set ns_items = namespace(found_first=false) -%}\n {%- for item_key, item_value in value['items'] | dictsort -%}\n {%- if item_value is not none -%}\n {%- if ns_items.found_first %},{% endif -%}\n {%- set ns_items.found_first = true -%}\n {%- if item_key == 'properties' -%}\n properties:{\n {%- if item_value is mapping -%}\n {{- format_parameters(item_value, value['items']['required'] | default([])) -}}\n {%- endif -%}\n }\n {%- elif item_key == 'required' -%}\n required:[\n {%- for req_item in item_value -%}\n <|\"|>{{- req_item -}}<|\"|>\n {%- if not loop.last %},{% endif -%}\n {%- endfor -%}\n ]\n {%- elif item_key == 'type' -%}\n {%- if item_value is string -%}\n type:{{ format_argument(item_value | upper) }}\n {%- else -%}\n type:{{ format_argument(item_value | map('upper') | list) }}\n {%- endif -%}\n {%- else -%}\n {{ item_key }}:{{ format_argument(item_value) }}\n {%- endif -%}\n {%- endif -%}\n {%- endfor -%}\n }\n {%- endif -%}\n {%- endif -%}\n {%- if value['nullable'] %}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n nullable:true\n {%- endif -%}\n {%- if value['type'] | upper == 'OBJECT' -%}\n {%- if value['properties'] is defined and value['properties'] is mapping -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n properties:{\n {{- format_parameters(value['properties'], value['required'] | default([])) -}}\n }\n {%- elif value is mapping -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n properties:{\n {{- format_parameters(value, value['required'] | default([]), filter_keys=true) -}}\n }\n {%- endif -%}\n {%- if value['required'] -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n required:[\n {%- for item in value['required'] | default([]) -%}\n <|\"|>{{- item -}}<|\"|>\n {%- if not loop.last %},{% endif -%}\n {%- endfor -%}\n ]\n {%- endif -%}\n {%- endif -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n type:<|\"|>{{ value['type'] | upper }}<|\"|>}\n {%- endif -%}\n {%- endfor -%}\n{%- endmacro -%}\n{%- macro format_function_declaration(tool_data) -%}\n declaration:{{- tool_data['function']['name'] -}}{description:<|\"|>{{- tool_data['function']['description'] -}}<|\"|>\n {%- set params = tool_data['function']['parameters'] -%}\n {%- if params -%}\n ,parameters:{\n {%- if params['properties'] -%}\n properties:{ {{- format_parameters(params['properties'], params['required']) -}} },\n {%- endif -%}\n {%- if params['required'] -%}\n required:[\n {%- for item in params['required'] -%}\n <|\"|>{{- item -}}<|\"|>\n {{- ',' if not loop.last -}}\n {%- endfor -%}\n ],\n {%- endif -%}\n {%- if params['type'] -%}\n type:<|\"|>{{- params['type'] | upper -}}<|\"|>}\n {%- endif -%}\n {%- endif -%}\n {%- if 'response' in tool_data['function'] -%}\n {%- set response_declaration = tool_data['function']['response'] -%}\n ,response:{\n {%- if response_declaration['description'] -%}\n description:<|\"|>{{- response_declaration['description'] -}}<|\"|>,\n {%- endif -%}\n {%- if response_declaration['type'] | upper == 'OBJECT' -%}\n type:<|\"|>{{- response_declaration['type'] | upper -}}<|\"|>}\n {%- endif -%}\n {%- endif -%}\n }\n{%- endmacro -%}\n{%- macro format_argument(argument, escape_keys=True) -%}\n {%- if argument is none -%}\n {{- 'null' -}}\n {%- elif argument is string -%}\n {{- '<|\"|>' + argument + '<|\"|>' -}}\n {%- elif argument is boolean -%}\n {{- 'true' if argument else 'false' -}}\n {%- elif argument is mapping -%}\n {{- '{' -}}\n {%- set ns = namespace(found_first=false) -%}\n {%- for key, value in argument | dictsort -%}\n {%- if ns.found_first %},{% endif -%}\n {%- set ns.found_first = true -%}\n {%- if escape_keys -%}\n {{- '<|\"|>' + key + '<|\"|>' -}}\n {%- else -%}\n {{- key -}}\n {%- endif -%}\n :{{- format_argument(value, escape_keys=escape_keys) -}}\n {%- endfor -%}\n {{- '}' -}}\n {%- elif argument is sequence -%}\n {{- '[' -}}\n {%- for item in argument -%}\n {{- format_argument(item, escape_keys=escape_keys) -}}\n {%- if not loop.last %},{% endif -%}\n {%- endfor -%}\n {{- ']' -}}\n {%- else -%}\n {{- argument -}}\n {%- endif -%}\n{%- endmacro -%}\n{%- macro strip_thinking(text) -%}\n {%- set ns = namespace(result='') -%}\n {%- for part in text.split('<channel|>') -%}\n {%- if '<|channel>' in part -%}\n {%- set ns.result = ns.result + part.split('<|channel>')[0] -%}\n {%- else -%}\n {%- set ns.result = ns.result + part -%}\n {%- endif -%}\n {%- endfor -%}\n {{- ns.result | trim -}}\n{%- endmacro -%}\n\n{%- macro format_tool_response_block(tool_name, response) -%}\n {{- '<|tool_response>' -}}\n {%- if response is mapping -%}\n {{- 'response:' + tool_name + '{' -}}\n {%- for key, value in response | dictsort -%}\n {{- key -}}:{{- format_argument(value, escape_keys=False) -}}\n {%- if not loop.last %},{% endif -%}\n {%- endfor -%}\n {{- '}' -}}\n {%- else -%}\n {{- 'response:' + tool_name + '{value:' + format_argument(response, escape_keys=False) + '}' -}}\n {%- endif -%}\n {{- '<tool_response|>' -}}\n{%- endmacro -%}\n\n{#- ===== SETUP ===== -#}\n{%- set ns = namespace(prev_message_type=None, prev_non_tool_role=None) -%}\n{%- set loop_messages = messages -%}\n{%- set enable_thinking = enable_thinking | default(false) -%}\n{%- set preserve_thinking = preserve_thinking | default(false) -%}\n{{- bos_token -}}\n{#- Handle System/Tool Definitions Block -#}\n{%- if enable_thinking or tools or (messages and messages[0]['role'] in ['system', 'developer']) -%}\n {{- '<|turn>system\\n' -}}\n {#- Inject Thinking token at the very top of the FIRST system turn -#}\n {%- if enable_thinking -%}\n {{- '<|think|>\\n' -}}\n {%- set ns.prev_message_type = 'think' -%}\n {%- endif -%}\n {%- if messages and messages[0]['role'] in ['system', 'developer'] -%}\n {%- if messages[0]['content'] is string -%}\n {{- messages[0]['content'] | trim -}}\n {%- elif messages[0]['content'] is sequence -%}\n {%- for item in messages[0]['content'] -%}\n {{- item['text'] | trim + ' '-}}\n {%- endfor -%}\n {%- endif -%}\n {%- set loop_messages = messages[1:] -%}\n {%- endif -%}\n {%- if tools -%}\n {%- for tool in tools %}\n {{- '<|tool>' -}}\n {{- format_function_declaration(tool) | trim -}}\n {{- '<tool|>' -}}\n {%- endfor %}\n {%- set ns.prev_message_type = 'tool' -%}\n {%- endif -%}\n {{- '<turn|>\\n' -}}\n{%- endif %}\n\n{#- Pre-scan: find last user message index for reasoning guard -#}\n{%- set ns_turn = namespace(last_user_idx=-1) -%}\n{%- for i in range(loop_messages | length) -%}\n {%- if loop_messages[i]['role'] == 'user' -%}\n {%- set ns_turn.last_user_idx = i -%}\n {%- endif -%}\n{%- endfor -%}\n\n{#- Loop through messages -#}\n{%- for message in loop_messages -%}\n {%- if message['role'] != 'tool' -%}\n {%- set ns.prev_message_type = None -%}\n {%- set role = 'model' if message['role'] == 'assistant' else message['role'] -%}\n {#- Detect continuation using tracked state — O(1) instead of O(n) backward scan -#}\n {%- set continue_same_model_turn = (role == 'model' and ns.prev_non_tool_role == 'assistant') -%}\n {%- if not continue_same_model_turn -%}\n {{- '<|turn>' + role + '\\n' }}\n\n {%- endif -%}\n\n {#- Render reasoning/reasoning_content as thinking channel -#}\n {%- set thinking_text = message.get('reasoning') or message.get('reasoning_content') -%}\n {%- set thinking_gate = (loop.index0 > ns_turn.last_user_idx) or (preserve_thinking and message.get('tool_calls')) -%}\n {%- if thinking_text and thinking_gate -%}\n {{- '<|channel>thought\\n' + thinking_text + '\\n<channel|>' -}}\n {%- endif -%}\n\n {%- if message.get('tool_calls') -%}\n {%- for tool_call in message.get('tool_calls') -%}\n {%- set function = tool_call['function'] -%}\n {{- '<|tool_call>call:' + function['name'] + '{' -}}\n {%- if function['arguments'] is mapping -%}\n {%- set ns_args = namespace(found_first=false) -%}\n {%- for key, value in function['arguments'] | dictsort -%}\n {%- if ns_args.found_first %},{% endif -%}\n {%- set ns_args.found_first = true -%}\n {{- key -}}:{{- format_argument(value, escape_keys=False) -}}\n {%- endfor -%}\n {%- elif function['arguments'] is none -%}\n {%- else -%}\n {{- raise_exception(\n \"chat_template: tool_calls[].function.arguments must be a \"\n \"JSON object (mapping), not a string. Deserialize arguments \"\n \"before passing to the template.\"\n ) -}}\n {%- endif -%}\n {{- '}<tool_call|>' -}}\n {%- endfor -%}\n {%- set ns.prev_message_type = 'tool_call' -%}\n {%- endif -%}\n\n {%- set ns_tr_out = namespace(flag=false) -%}\n {%- if message.get('tool_responses') -%}\n {#- Legacy: tool_responses embedded on the assistant message (Google/Gemma native) -#}\n {%- for tool_response in message.get('tool_responses') -%}\n {{- format_tool_response_block(tool_response['name'] | default('unknown', true), tool_response['response']) -}}\n {%- set ns_tr_out.flag = true -%}\n {%- set ns.prev_message_type = 'tool_response' -%}\n {%- endfor -%}\n {%- elif message.get('tool_calls') -%}\n {#- OpenAI Chat Completions: forward-scan consecutive role:tool messages -#}\n {%- set ns_tool_scan = namespace(stopped=false) -%}\n {%- for k in range(loop.index0 + 1, loop_messages | length) -%}\n {%- if ns_tool_scan.stopped -%}\n {%- elif loop_messages[k]['role'] != 'tool' -%}\n {%- set ns_tool_scan.stopped = true -%}\n {%- else -%}\n {%- set follow = loop_messages[k] -%}\n {#- Resolve tool_call_id to function name -#}\n {%- set ns_tname = namespace(name=follow.get('name') or 'unknown') -%}\n {%- for tc in message.get('tool_calls') -%}\n {%- if tc.get('id') == follow.get('tool_call_id') -%}\n {%- set ns_tname.name = tc['function']['name'] -%}\n {%- endif -%}\n {%- endfor -%}\n {#- Handle content as string or content-parts array -#}\n {%- set tool_body = follow.get('content') -%}\n {%- if tool_body is string -%}\n {{- format_tool_response_block(ns_tname.name, tool_body) -}}\n {%- elif tool_body is sequence and tool_body is not string -%}\n {%- set ns_txt = namespace(s='') -%}\n {%- for part in tool_body -%}\n {%- if part.get('type') == 'text' -%}\n {%- set ns_txt.s = ns_txt.s + (part.get('text') | default('')) -%}\n {%- endif -%}\n {%- endfor -%}\n {{- format_tool_response_block(ns_tname.name, ns_txt.s) -}}\n {%- for part in tool_body -%}\n {%- if part.get('type') in ['image', 'image_url'] -%}\n {{- '<|image|>' -}}\n {%- elif part.get('type') in ['audio', 'input_audio'] -%}\n {{- '<|audio|>' -}}\n {%- elif part.get('type') == 'video' -%}\n {{- '<|video|>' -}}\n {%- endif -%}\n {%- endfor -%}\n {%- else -%}\n {{- format_tool_response_block(ns_tname.name, tool_body) -}}\n {%- endif -%}\n {%- set ns_tr_out.flag = true -%}\n {%- set ns.prev_message_type = 'tool_response' -%}\n {%- endif -%}\n {%- endfor -%}\n {%- endif -%}\n\n {%- set captured_content -%}\n {%- if message.get('content') is string -%}\n {%- if role == 'model' -%}\n {{- strip_thinking(message['content']) -}}\n {%- else -%}\n {{- message['content'] | trim -}}\n {%- endif -%}\n {%- elif message.get('content') is sequence -%}\n {%- for item in message['content'] -%}\n {%- if item.get('type') == 'text' -%}\n {%- if role == 'model' -%}\n {{- strip_thinking(item['text']) -}}\n {%- else -%}\n {{- item['text'] | trim -}}\n {%- endif -%}\n {%- elif item.get('type') in ['image', 'image_url'] -%}\n {{- '<|image|>' -}}\n {%- elif item.get('type') in ['audio', 'input_audio'] -%}\n {{- '<|audio|>' -}}\n {%- elif item.get('type') == 'video' -%}\n {{- '<|video|>' -}}\n {%- endif -%}\n {%- endfor -%}\n {%- endif -%}\n {%- endset -%}\n\n {{- captured_content -}}\n {%- set has_content = captured_content | trim | length > 0 -%}\n\n {#- Forward-scan: find next non-tool message role for continuation detection -#}\n {%- set next_nt = namespace(role=None, found=false) -%}\n {%- for j in range(loop.index0 + 1, loop_messages | length) -%}\n {%- if not next_nt.found -%}\n {%- if loop_messages[j]['role'] != 'tool' -%}\n {%- set next_nt.role = loop_messages[j]['role'] -%}\n {%- set next_nt.found = true -%}\n {%- endif -%}\n {%- endif -%}\n {%- endfor -%}\n\n {%- set continues_into_next = (\n role == 'model'\n and next_nt.role == 'assistant'\n and (not message.get('tool_calls') or ns_tr_out.flag)\n ) -%}\n\n {%- if ns.prev_message_type == 'tool_call' and not ns_tr_out.flag -%}\n {{- '<|tool_response>' -}}\n {%- elif continues_into_next -%}\n {%- elif not (ns_tr_out.flag and not has_content and not next_nt.found) -%}\n {{- '<turn|>\\n' -}}\n {%- endif -%}\n\n {#- Track previous non-tool role for next iteration (avoids O(n) backward scan) -#}\n {%- set ns.prev_non_tool_role = message['role'] -%}\n {%- endif -%}\n{%- endfor -%}\n\n{%- if add_generation_prompt -%}\n {%- if ns.prev_message_type != 'tool_response' and ns.prev_message_type != 'tool_call' -%}\n {{- '<|turn>model\\n' -}}\n {%- if not enable_thinking -%}\n {{- '<|channel>thought\\n<channel|>' -}}\n {%- endif -%}\n {%- elif ns.prev_message_type == 'tool_response' and enable_thinking -%}\n {{- '<|channel>thought\\n' -}}\n {%- endif -%}\n{%- endif -%}\n"},"availableVersions":["1.3.0","1.2.2","1.2.1","1.2.0","1.1.1","1.1.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"gemma4-e2b-q4","name":"Gemma 4 (E2B, Q4)","description":"Google's edge-optimized Gemma 4 at ~2B effective parameters. Multimodal (text + image + audio), native tool calling. Quantization-aware-trained 4-bit weights — the safe small-model default for any modern laptop.","tags":["google","multimodal","vision","audio","tools","small","qat"],"maintainer":{"name":"Google","url":"https://huggingface.co/google/gemma-4-E2B-it"},"license":"Apache-2.0","licenseClass":"open","licenseShortName":"Apache 2.0","recoScore":15,"version":"1.3.0","releasedAt":"2026-08-28T00:00:00Z","parameterSize":"2.3B","approxSizeBytes":2620370976,"supportsTools":true,"contextWindow":128000,"upstream":"https://huggingface.co/google/gemma-4-E2B-it","category":"general","style":{"family":"gemma","reasoningFormat":"channel","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-channel-tags","prompt.private-reasoning-guidance","prompt.tool-cookbook-full","fabrication.detect-past-tense-no-tools","fabrication.detect-claim-without-tool","turn.auto-acknowledge-tool-errors","mcp.compact-tool-schemas","mcp.relax-required-fields","mcp.default-missing-fields",{"id":"turn.continuation-budget","config":{"count":4}},"turn.preamble-folding","turn.ramble-detection","parse.gemma-special-token","prompt.prefer-writefile-edits","prompt.derive-by-execution","tools.mlx-grammar"],"tuning":{"sampling":{"temperature":1,"topP":0.95,"topK":64,"repetitionPenalty":1.1,"repetitionContext":20},"reasoning":{"thinkingBudget":96},"engine":{"llamaCpp":{"spec":{"mtp":true,"nMax":4}}},"profiles":{"thinking-general":{"sampling":{"temperature":0.8,"topP":0.95,"topK":64,"repetitionPenalty":1.1,"repetitionContext":64,"dry":{"multiplier":0.8,"base":1.75,"allowedLength":2}}},"thinking-coding":{"sampling":{"temperature":0.6,"topP":0.9,"topK":40,"repetitionPenalty":1.05,"repetitionContext":64,"dry":{"multiplier":0.8,"base":1.75,"allowedLength":2}}},"thinking-precise":{"sampling":{"temperature":0.3,"topP":0.9,"topK":20,"seed":0,"repetitionPenalty":1.05,"repetitionContext":64,"dry":{"multiplier":0.8,"base":1.75,"allowedLength":2}}},"instruct":{"sampling":{"temperature":0.7,"topP":0.95,"topK":64,"repetitionPenalty":1.1,"repetitionContext":64,"dry":{"multiplier":0.8,"base":1.75,"allowedLength":2}}},"creative":{"sampling":{"temperature":1.1,"topP":0.95,"topK":64,"repetitionPenalty":1,"repetitionContext":20}}}},"ollama":{"tag":"gemma4:e2b"},"llamaCpp":{"huggingfaceRepo":"unsloth/gemma-4-E2B-it-qat-GGUF","revision":"66a399f68ddd113b06dff02fca9523e55465d11d","filename":"gemma-4-E2B-it-qat-UD-Q4_K_XL.gguf","sha256":"e531007218dfab990486a5de7676a6932d6ea8dea233d1f698d7c21cf8a16889","approxSizeBytes":2620370976,"quantization":"UD-Q4_K_XL","draftModel":{"filename":"MTP/mtp-gemma-4-E2B-it-Q4_0.gguf","sha256":"586f2460b909008640981ec34060aa864e03c144fbabfb3173c4335087e4aae0","sizeBytes":59235648}},"mlx":{"huggingfaceRepo":"mlx-community/gemma-4-E2B-it-qat-4bit","revision":"42f62737af7a9fd8c1d55d79666c1a217be4e2e2","files":[{"name":"chat_template.jinja","sha256":"33204f1acb5bd0002713e16a593847f24ceeafe711ed88bda2a352dc996a3373","sizeBytes":16804},{"name":"config.json","sha256":"e996bc6f3887d18d1176438680b17c24e988576d5c15a43ccf3a482a737a8f7e","sizeBytes":31198},{"name":"generation_config.json","sha256":"b69207f9be617e982d13cc273cce6fd88c98dda99a4bdc5e2d52ffe0a0d9f0a9","sizeBytes":203},{"name":"model.safetensors","sha256":"d52e64b9cb669c65da88c1597fe12ab90e63ab9f79cc1b053eb1fa8bb06c493f","sizeBytes":4329240325},{"name":"model.safetensors.index.json","sha256":"8ee3112362c6dfa13a26df2da4592c0a9aa541013918469accd86d7e8a54b11a","sizeBytes":218323},{"name":"processor_config.json","sha256":"1bd0d00776284f369c1eff5fb631e865dfcdca861e0b7d60dbef27fcf37436a8","sizeBytes":902},{"name":"tokenizer.json","sha256":"cc8d3a0ce36466ccc1278bf987df5f71db1719b9ca6b4118264f45cb627bfe0f","sizeBytes":32169626},{"name":"tokenizer_config.json","sha256":"080d9e1aff284e2f6043889cd05367966f7c7b80e025fbc0b06745e218158656","sizeBytes":2740}],"approxSizeBytes":4361680121,"quantization":"4bit","chatTemplateOverride":"{#\n Template: Google Gemma 4 Canonical Chat Template\n Author: Google Gemma Engineering Team\n Published: 2026-07-09\n Context: Fixed tool-calling loops, turn closures, and thinking content-ordering.\n#}\n{%- macro format_parameters(properties, required, filter_keys=false) -%}\n {%- set standard_keys = ['description', 'type', 'properties', 'required', 'nullable'] -%}\n {%- set ns = namespace(found_first=false) -%}\n {%- for key, value in properties | dictsort -%}\n {%- set add_comma = false -%}\n {%- if not filter_keys or key not in standard_keys -%}\n {%- if ns.found_first %},{% endif -%}\n {%- set ns.found_first = true -%}\n {{ key }}:{\n {%- if value['description'] -%}\n description:<|\"|>{{ value['description'] }}<|\"|>\n {%- set add_comma = true -%}\n {%- endif -%}\n {%- if value['type'] | upper == 'STRING' -%}\n {%- if value['enum'] -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n enum:{{ format_argument(value['enum']) }}\n {%- endif -%}\n {%- elif value['type'] | upper == 'ARRAY' -%}\n {%- if value['items'] is mapping and value['items'] -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n items:{\n {%- set ns_items = namespace(found_first=false) -%}\n {%- for item_key, item_value in value['items'] | dictsort -%}\n {%- if item_value is not none -%}\n {%- if ns_items.found_first %},{% endif -%}\n {%- set ns_items.found_first = true -%}\n {%- if item_key == 'properties' -%}\n properties:{\n {%- if item_value is mapping -%}\n {{- format_parameters(item_value, value['items']['required'] | default([])) -}}\n {%- endif -%}\n }\n {%- elif item_key == 'required' -%}\n required:[\n {%- for req_item in item_value -%}\n <|\"|>{{- req_item -}}<|\"|>\n {%- if not loop.last %},{% endif -%}\n {%- endfor -%}\n ]\n {%- elif item_key == 'type' -%}\n {%- if item_value is string -%}\n type:{{ format_argument(item_value | upper) }}\n {%- else -%}\n type:{{ format_argument(item_value | map('upper') | list) }}\n {%- endif -%}\n {%- else -%}\n {{ item_key }}:{{ format_argument(item_value) }}\n {%- endif -%}\n {%- endif -%}\n {%- endfor -%}\n }\n {%- endif -%}\n {%- endif -%}\n {%- if value['nullable'] %}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n nullable:true\n {%- endif -%}\n {%- if value['type'] | upper == 'OBJECT' -%}\n {%- if value['properties'] is defined and value['properties'] is mapping -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n properties:{\n {{- format_parameters(value['properties'], value['required'] | default([])) -}}\n }\n {%- elif value is mapping -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n properties:{\n {{- format_parameters(value, value['required'] | default([]), filter_keys=true) -}}\n }\n {%- endif -%}\n {%- if value['required'] -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n required:[\n {%- for item in value['required'] | default([]) -%}\n <|\"|>{{- item -}}<|\"|>\n {%- if not loop.last %},{% endif -%}\n {%- endfor -%}\n ]\n {%- endif -%}\n {%- endif -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n type:<|\"|>{{ value['type'] | upper }}<|\"|>}\n {%- endif -%}\n {%- endfor -%}\n{%- endmacro -%}\n{%- macro format_function_declaration(tool_data) -%}\n declaration:{{- tool_data['function']['name'] -}}{description:<|\"|>{{- tool_data['function']['description'] -}}<|\"|>\n {%- set params = tool_data['function']['parameters'] -%}\n {%- if params -%}\n ,parameters:{\n {%- if params['properties'] -%}\n properties:{ {{- format_parameters(params['properties'], params['required']) -}} },\n {%- endif -%}\n {%- if params['required'] -%}\n required:[\n {%- for item in params['required'] -%}\n <|\"|>{{- item -}}<|\"|>\n {{- ',' if not loop.last -}}\n {%- endfor -%}\n ],\n {%- endif -%}\n {%- if params['type'] -%}\n type:<|\"|>{{- params['type'] | upper -}}<|\"|>}\n {%- endif -%}\n {%- endif -%}\n {%- if 'response' in tool_data['function'] -%}\n {%- set response_declaration = tool_data['function']['response'] -%}\n ,response:{\n {%- if response_declaration['description'] -%}\n description:<|\"|>{{- response_declaration['description'] -}}<|\"|>,\n {%- endif -%}\n {%- if response_declaration['type'] | upper == 'OBJECT' -%}\n type:<|\"|>{{- response_declaration['type'] | upper -}}<|\"|>}\n {%- endif -%}\n {%- endif -%}\n }\n{%- endmacro -%}\n{%- macro format_argument(argument, escape_keys=True) -%}\n {%- if argument is none -%}\n {{- 'null' -}}\n {%- elif argument is string -%}\n {{- '<|\"|>' + argument + '<|\"|>' -}}\n {%- elif argument is boolean -%}\n {{- 'true' if argument else 'false' -}}\n {%- elif argument is mapping -%}\n {{- '{' -}}\n {%- set ns = namespace(found_first=false) -%}\n {%- for key, value in argument | dictsort -%}\n {%- if ns.found_first %},{% endif -%}\n {%- set ns.found_first = true -%}\n {%- if escape_keys -%}\n {{- '<|\"|>' + key + '<|\"|>' -}}\n {%- else -%}\n {{- key -}}\n {%- endif -%}\n :{{- format_argument(value, escape_keys=escape_keys) -}}\n {%- endfor -%}\n {{- '}' -}}\n {%- elif argument is sequence -%}\n {{- '[' -}}\n {%- for item in argument -%}\n {{- format_argument(item, escape_keys=escape_keys) -}}\n {%- if not loop.last %},{% endif -%}\n {%- endfor -%}\n {{- ']' -}}\n {%- else -%}\n {{- argument -}}\n {%- endif -%}\n{%- endmacro -%}\n{%- macro strip_thinking(text) -%}\n {%- set ns = namespace(result='') -%}\n {%- for part in text.split('<channel|>') -%}\n {%- if '<|channel>' in part -%}\n {%- set ns.result = ns.result + part.split('<|channel>')[0] -%}\n {%- else -%}\n {%- set ns.result = ns.result + part -%}\n {%- endif -%}\n {%- endfor -%}\n {{- ns.result | trim -}}\n{%- endmacro -%}\n\n{%- macro format_tool_response_block(tool_name, response) -%}\n {{- '<|tool_response>' -}}\n {%- if response is mapping -%}\n {{- 'response:' + tool_name + '{' -}}\n {%- for key, value in response | dictsort -%}\n {{- key -}}:{{- format_argument(value, escape_keys=False) -}}\n {%- if not loop.last %},{% endif -%}\n {%- endfor -%}\n {{- '}' -}}\n {%- else -%}\n {{- 'response:' + tool_name + '{value:' + format_argument(response, escape_keys=False) + '}' -}}\n {%- endif -%}\n {{- '<tool_response|>' -}}\n{%- endmacro -%}\n\n{#- ===== SETUP ===== -#}\n{%- set ns = namespace(prev_message_type=None, prev_non_tool_role=None) -%}\n{%- set loop_messages = messages -%}\n{%- set enable_thinking = enable_thinking | default(false) -%}\n{%- set preserve_thinking = preserve_thinking | default(false) -%}\n{{- bos_token -}}\n{#- Handle System/Tool Definitions Block -#}\n{%- if enable_thinking or tools or (messages and messages[0]['role'] in ['system', 'developer']) -%}\n {{- '<|turn>system\\n' -}}\n {#- Inject Thinking token at the very top of the FIRST system turn -#}\n {%- if enable_thinking -%}\n {{- '<|think|>\\n' -}}\n {%- set ns.prev_message_type = 'think' -%}\n {%- endif -%}\n {%- if messages and messages[0]['role'] in ['system', 'developer'] -%}\n {%- if messages[0]['content'] is string -%}\n {{- messages[0]['content'] | trim -}}\n {%- elif messages[0]['content'] is sequence -%}\n {%- for item in messages[0]['content'] -%}\n {{- item['text'] | trim + ' '-}}\n {%- endfor -%}\n {%- endif -%}\n {%- set loop_messages = messages[1:] -%}\n {%- endif -%}\n {%- if tools -%}\n {%- for tool in tools %}\n {{- '<|tool>' -}}\n {{- format_function_declaration(tool) | trim -}}\n {{- '<tool|>' -}}\n {%- endfor %}\n {%- set ns.prev_message_type = 'tool' -%}\n {%- endif -%}\n {{- '<turn|>\\n' -}}\n{%- endif %}\n\n{#- Pre-scan: find last user message index for reasoning guard -#}\n{%- set ns_turn = namespace(last_user_idx=-1) -%}\n{%- for i in range(loop_messages | length) -%}\n {%- if loop_messages[i]['role'] == 'user' -%}\n {%- set ns_turn.last_user_idx = i -%}\n {%- endif -%}\n{%- endfor -%}\n\n{#- Loop through messages -#}\n{%- for message in loop_messages -%}\n {%- if message['role'] != 'tool' -%}\n {%- set ns.prev_message_type = None -%}\n {%- set role = 'model' if message['role'] == 'assistant' else message['role'] -%}\n {#- Detect continuation using tracked state — O(1) instead of O(n) backward scan -#}\n {%- set continue_same_model_turn = (role == 'model' and ns.prev_non_tool_role == 'assistant') -%}\n {%- if not continue_same_model_turn -%}\n {{- '<|turn>' + role + '\\n' }}\n {%- endif -%}\n\n {#- Render reasoning/reasoning_content as thinking channel -#}\n {%- set thinking_text = message.get('reasoning') or message.get('reasoning_content') -%}\n {%- set thinking_gate = (loop.index0 > ns_turn.last_user_idx) or (preserve_thinking and message.get('tool_calls')) -%}\n {%- if thinking_text and thinking_gate -%}\n {{- '<|channel>thought\\n' + thinking_text + '\\n<channel|>' -}}\n {%- endif -%}\n\n {%- if message.get('tool_calls') -%}\n {%- for tool_call in message.get('tool_calls') -%}\n {%- set function = tool_call['function'] -%}\n {{- '<|tool_call>call:' + function['name'] + '{' -}}\n {%- if function['arguments'] is mapping -%}\n {%- set ns_args = namespace(found_first=false) -%}\n {%- for key, value in function['arguments'] | dictsort -%}\n {%- if ns_args.found_first %},{% endif -%}\n {%- set ns_args.found_first = true -%}\n {{- key -}}:{{- format_argument(value, escape_keys=False) -}}\n {%- endfor -%}\n {%- elif function['arguments'] is none -%}\n {%- else -%}\n {{- raise_exception(\n \"chat_template: tool_calls[].function.arguments must be a \"\n \"JSON object (mapping), not a string. Deserialize arguments \"\n \"before passing to the template.\"\n ) -}}\n {%- endif -%}\n {{- '}<tool_call|>' -}}\n {%- endfor -%}\n {%- set ns.prev_message_type = 'tool_call' -%}\n {%- endif -%}\n\n {%- set ns_tr_out = namespace(flag=false) -%}\n {%- if message.get('tool_responses') -%}\n {#- Legacy: tool_responses embedded on the assistant message (Google/Gemma native) -#}\n {%- for tool_response in message.get('tool_responses') -%}\n {{- format_tool_response_block(tool_response['name'] | default('unknown', true), tool_response['response']) -}}\n {%- set ns_tr_out.flag = true -%}\n {%- set ns.prev_message_type = 'tool_response' -%}\n {%- endfor -%}\n {%- elif message.get('tool_calls') -%}\n {#- OpenAI Chat Completions: forward-scan consecutive role:tool messages -#}\n {%- set ns_tool_scan = namespace(stopped=false) -%}\n {%- for k in range(loop.index0 + 1, loop_messages | length) -%}\n {%- if ns_tool_scan.stopped -%}\n {%- elif loop_messages[k]['role'] != 'tool' -%}\n {%- set ns_tool_scan.stopped = true -%}\n {%- else -%}\n {%- set follow = loop_messages[k] -%}\n {#- Resolve tool_call_id to function name -#}\n {%- set ns_tname = namespace(name=follow.get('name') or 'unknown') -%}\n {%- for tc in message.get('tool_calls') -%}\n {%- if tc.get('id') == follow.get('tool_call_id') -%}\n {%- set ns_tname.name = tc['function']['name'] -%}\n {%- endif -%}\n {%- endfor -%}\n {#- Handle content as string or content-parts array -#}\n {%- set tool_body = follow.get('content') -%}\n {%- if tool_body is string -%}\n {{- format_tool_response_block(ns_tname.name, tool_body) -}}\n {%- elif tool_body is sequence and tool_body is not string -%}\n {%- set ns_txt = namespace(s='') -%}\n {%- for part in tool_body -%}\n {%- if part.get('type') == 'text' -%}\n {%- set ns_txt.s = ns_txt.s + (part.get('text') | default('')) -%}\n {%- endif -%}\n {%- endfor -%}\n {{- format_tool_response_block(ns_tname.name, ns_txt.s) -}}\n {%- for part in tool_body -%}\n {%- if part.get('type') in ['image', 'image_url'] -%}\n {{- '<|image|>' -}}\n {%- elif part.get('type') in ['audio', 'input_audio'] -%}\n {{- '<|audio|>' -}}\n {%- elif part.get('type') == 'video' -%}\n {{- '<|video|>' -}}\n {%- endif -%}\n {%- endfor -%}\n {%- else -%}\n {{- format_tool_response_block(ns_tname.name, tool_body) -}}\n {%- endif -%}\n {%- set ns_tr_out.flag = true -%}\n {%- set ns.prev_message_type = 'tool_response' -%}\n {%- endif -%}\n {%- endfor -%}\n {%- endif -%}\n\n {%- set captured_content -%}\n {%- if message.get('content') is string -%}\n {%- if role == 'model' -%}\n {{- strip_thinking(message['content']) -}}\n {%- else -%}\n {{- message['content'] | trim -}}\n {%- endif -%}\n {%- elif message.get('content') is sequence -%}\n {%- for item in message['content'] -%}\n {%- if item.get('type') == 'text' -%}\n {%- if role == 'model' -%}\n {{- strip_thinking(item['text']) -}}\n {%- else -%}\n {{- item['text'] | trim -}}\n {%- endif -%}\n {%- elif item.get('type') in ['image', 'image_url'] -%}\n {{- '<|image|>' -}}\n {%- elif item.get('type') in ['audio', 'input_audio'] -%}\n {{- '<|audio|>' -}}\n {%- elif item.get('type') == 'video' -%}\n {{- '<|video|>' -}}\n {%- endif -%}\n {%- endfor -%}\n {%- endif -%}\n {%- endset -%}\n\n {{- captured_content -}}\n {%- set has_content = captured_content | trim | length > 0 -%}\n\n {#- Forward-scan: find next non-tool message role for continuation detection -#}\n {%- set next_nt = namespace(role=None, found=false) -%}\n {%- for j in range(loop.index0 + 1, loop_messages | length) -%}\n {%- if not next_nt.found -%}\n {%- if loop_messages[j]['role'] != 'tool' -%}\n {%- set next_nt.role = loop_messages[j]['role'] -%}\n {%- set next_nt.found = true -%}\n {%- endif -%}\n {%- endif -%}\n {%- endfor -%}\n\n {%- set continues_into_next = (\n role == 'model'\n and next_nt.role == 'assistant'\n and (not message.get('tool_calls') or ns_tr_out.flag)\n ) -%}\n\n {%- if ns.prev_message_type == 'tool_call' and not ns_tr_out.flag -%}\n {{- '<|tool_response>' -}}\n {%- elif continues_into_next -%}\n {%- elif not (ns_tr_out.flag and not has_content and not next_nt.found) -%}\n {{- '<turn|>\\n' -}}\n {%- endif -%}\n\n {#- Track previous non-tool role for next iteration (avoids O(n) backward scan) -#}\n {%- set ns.prev_non_tool_role = message['role'] -%}\n {%- endif -%}\n{%- endfor -%}\n\n{%- if add_generation_prompt -%}\n {%- if ns.prev_message_type != 'tool_response' and ns.prev_message_type != 'tool_call' -%}\n {{- '<|turn>model\\n' -}}\n {%- elif ns.prev_message_type == 'tool_response' and enable_thinking -%}\n {{- '<|channel>thought\\n' -}}\n {%- endif -%}\n{%- endif -%}\n"},"availableVersions":["1.3.0","1.2.1","1.2.0","1.1.2","1.1.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"gemma4-e4b-q4","name":"Gemma 4 (E4B, Q4)","description":"Google's edge-optimized Gemma 4 at ~4B effective parameters. Multimodal (text + image + audio), native tool calling. Quantization-aware-trained 4-bit weights — a strong compact default that leaves room to work on a 16GB laptop.","tags":["google","multimodal","vision","audio","tools","qat"],"maintainer":{"name":"Google","url":"https://huggingface.co/google/gemma-4-E4B-it"},"license":"Apache-2.0","licenseClass":"open","licenseShortName":"Apache 2.0","recoScore":15,"version":"1.3.0","releasedAt":"2026-08-28T00:00:00Z","parameterSize":"8B","approxSizeBytes":4215695776,"supportsTools":true,"contextWindow":128000,"upstream":"https://huggingface.co/google/gemma-4-E4B-it","category":"general","style":{"family":"gemma","reasoningFormat":"channel","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-channel-tags","prompt.private-reasoning-guidance","prompt.tool-cookbook-condensed","prompt.meester-build-prelude","fabrication.detect-past-tense-no-tools","fabrication.detect-claim-without-tool","turn.auto-acknowledge-tool-errors","mcp.compact-tool-schemas","mcp.relax-required-fields","mcp.default-missing-fields","turn.preamble-folding","turn.ramble-detection","parse.gemma-special-token","prompt.prefer-writefile-edits","prompt.derive-by-execution","tools.mlx-grammar",{"id":"tools.mlx-template-fix","config":{"template":"{#\n Template: Google Gemma 4 Canonical Chat Template\n Author: Google Gemma Engineering Team\n Published: 2026-07-09\n Context: Fixed tool-calling loops, turn closures, and thinking content-ordering.\n#}\n{%- macro format_parameters(properties, required, filter_keys=false) -%}\n {%- set standard_keys = ['description', 'type', 'properties', 'required', 'nullable'] -%}\n {%- set ns = namespace(found_first=false) -%}\n {%- for key, value in properties | dictsort -%}\n {%- set add_comma = false -%}\n {%- if not filter_keys or key not in standard_keys -%}\n {%- if ns.found_first %},{% endif -%}\n {%- set ns.found_first = true -%}\n {{ key }}:{\n {%- if value['description'] -%}\n description:<|\"|>{{ value['description'] }}<|\"|>\n {%- set add_comma = true -%}\n {%- endif -%}\n {%- if value['type'] | upper == 'STRING' -%}\n {%- if value['enum'] -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n enum:{{ format_argument(value['enum']) }}\n {%- endif -%}\n {%- elif value['type'] | upper == 'ARRAY' -%}\n {%- if value['items'] is mapping and value['items'] -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n items:{\n {%- set ns_items = namespace(found_first=false) -%}\n {%- for item_key, item_value in value['items'] | dictsort -%}\n {%- if item_value is not none -%}\n {%- if ns_items.found_first %},{% endif -%}\n {%- set ns_items.found_first = true -%}\n {%- if item_key == 'properties' -%}\n properties:{\n {%- if item_value is mapping -%}\n {{- format_parameters(item_value, value['items']['required'] | default([])) -}}\n {%- endif -%}\n }\n {%- elif item_key == 'required' -%}\n required:[\n {%- for req_item in item_value -%}\n <|\"|>{{- req_item -}}<|\"|>\n {%- if not loop.last %},{% endif -%}\n {%- endfor -%}\n ]\n {%- elif item_key == 'type' -%}\n {%- if item_value is string -%}\n type:{{ format_argument(item_value | upper) }}\n {%- else -%}\n type:{{ format_argument(item_value | map('upper') | list) }}\n {%- endif -%}\n {%- else -%}\n {{ item_key }}:{{ format_argument(item_value) }}\n {%- endif -%}\n {%- endif -%}\n {%- endfor -%}\n }\n {%- endif -%}\n {%- endif -%}\n {%- if value['nullable'] %}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n nullable:true\n {%- endif -%}\n {%- if value['type'] | upper == 'OBJECT' -%}\n {%- if value['properties'] is defined and value['properties'] is mapping -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n properties:{\n {{- format_parameters(value['properties'], value['required'] | default([])) -}}\n }\n {%- elif value is mapping -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n properties:{\n {{- format_parameters(value, value['required'] | default([]), filter_keys=true) -}}\n }\n {%- endif -%}\n {%- if value['required'] -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n required:[\n {%- for item in value['required'] | default([]) -%}\n <|\"|>{{- item -}}<|\"|>\n {%- if not loop.last %},{% endif -%}\n {%- endfor -%}\n ]\n {%- endif -%}\n {%- endif -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n type:<|\"|>{{ value['type'] | upper }}<|\"|>}\n {%- endif -%}\n {%- endfor -%}\n{%- endmacro -%}\n{%- macro format_function_declaration(tool_data) -%}\n declaration:{{- tool_data['function']['name'] -}}{description:<|\"|>{{- tool_data['function']['description'] -}}<|\"|>\n {%- set params = tool_data['function']['parameters'] -%}\n {%- if params -%}\n ,parameters:{\n {%- if params['properties'] -%}\n properties:{ {{- format_parameters(params['properties'], params['required']) -}} },\n {%- endif -%}\n {%- if params['required'] -%}\n required:[\n {%- for item in params['required'] -%}\n <|\"|>{{- item -}}<|\"|>\n {{- ',' if not loop.last -}}\n {%- endfor -%}\n ],\n {%- endif -%}\n {%- if params['type'] -%}\n type:<|\"|>{{- params['type'] | upper -}}<|\"|>}\n {%- endif -%}\n {%- endif -%}\n {%- if 'response' in tool_data['function'] -%}\n {%- set response_declaration = tool_data['function']['response'] -%}\n ,response:{\n {%- if response_declaration['description'] -%}\n description:<|\"|>{{- response_declaration['description'] -}}<|\"|>,\n {%- endif -%}\n {%- if response_declaration['type'] | upper == 'OBJECT' -%}\n type:<|\"|>{{- response_declaration['type'] | upper -}}<|\"|>}\n {%- endif -%}\n {%- endif -%}\n }\n{%- endmacro -%}\n{%- macro format_argument(argument, escape_keys=True) -%}\n {%- if argument is none -%}\n {{- 'null' -}}\n {%- elif argument is string -%}\n {{- '<|\"|>' + argument + '<|\"|>' -}}\n {%- elif argument is boolean -%}\n {{- 'true' if argument else 'false' -}}\n {%- elif argument is mapping -%}\n {{- '{' -}}\n {%- set ns = namespace(found_first=false) -%}\n {%- for key, value in argument | dictsort -%}\n {%- if ns.found_first %},{% endif -%}\n {%- set ns.found_first = true -%}\n {%- if escape_keys -%}\n {{- '<|\"|>' + key + '<|\"|>' -}}\n {%- else -%}\n {{- key -}}\n {%- endif -%}\n :{{- format_argument(value, escape_keys=escape_keys) -}}\n {%- endfor -%}\n {{- '}' -}}\n {%- elif argument is sequence -%}\n {{- '[' -}}\n {%- for item in argument -%}\n {{- format_argument(item, escape_keys=escape_keys) -}}\n {%- if not loop.last %},{% endif -%}\n {%- endfor -%}\n {{- ']' -}}\n {%- else -%}\n {{- argument -}}\n {%- endif -%}\n{%- endmacro -%}\n{%- macro strip_thinking(text) -%}\n {%- set ns = namespace(result='') -%}\n {%- for part in text.split('<channel|>') -%}\n {%- if '<|channel>' in part -%}\n {%- set ns.result = ns.result + part.split('<|channel>')[0] -%}\n {%- else -%}\n {%- set ns.result = ns.result + part -%}\n {%- endif -%}\n {%- endfor -%}\n {{- ns.result | trim -}}\n{%- endmacro -%}\n\n{%- macro format_tool_response_block(tool_name, response) -%}\n {{- '<|tool_response>' -}}\n {%- if response is mapping -%}\n {{- 'response:' + tool_name + '{' -}}\n {%- for key, value in response | dictsort -%}\n {{- key -}}:{{- format_argument(value, escape_keys=False) -}}\n {%- if not loop.last %},{% endif -%}\n {%- endfor -%}\n {{- '}' -}}\n {%- else -%}\n {{- 'response:' + tool_name + '{value:' + format_argument(response, escape_keys=False) + '}' -}}\n {%- endif -%}\n {{- '<tool_response|>' -}}\n{%- endmacro -%}\n\n{#- ===== SETUP ===== -#}\n{%- set ns = namespace(prev_message_type=None, prev_non_tool_role=None) -%}\n{%- set loop_messages = messages -%}\n{%- set enable_thinking = enable_thinking | default(false) -%}\n{%- set preserve_thinking = preserve_thinking | default(false) -%}\n{{- bos_token -}}\n{#- Handle System/Tool Definitions Block -#}\n{%- if enable_thinking or tools or (messages and messages[0]['role'] in ['system', 'developer']) -%}\n {{- '<|turn>system\\n' -}}\n {#- Inject Thinking token at the very top of the FIRST system turn -#}\n {%- if enable_thinking -%}\n {{- '<|think|>\\n' -}}\n {%- set ns.prev_message_type = 'think' -%}\n {%- endif -%}\n {%- if messages and messages[0]['role'] in ['system', 'developer'] -%}\n {%- if messages[0]['content'] is string -%}\n {{- messages[0]['content'] | trim -}}\n {%- elif messages[0]['content'] is sequence -%}\n {%- for item in messages[0]['content'] -%}\n {{- item['text'] | trim + ' '-}}\n {%- endfor -%}\n {%- endif -%}\n {%- set loop_messages = messages[1:] -%}\n {%- endif -%}\n {%- if tools -%}\n {%- for tool in tools %}\n {{- '<|tool>' -}}\n {{- format_function_declaration(tool) | trim -}}\n {{- '<tool|>' -}}\n {%- endfor %}\n {%- set ns.prev_message_type = 'tool' -%}\n {%- endif -%}\n {{- '<turn|>\\n' -}}\n{%- endif %}\n\n{#- Pre-scan: find last user message index for reasoning guard -#}\n{%- set ns_turn = namespace(last_user_idx=-1) -%}\n{%- for i in range(loop_messages | length) -%}\n {%- if loop_messages[i]['role'] == 'user' -%}\n {%- set ns_turn.last_user_idx = i -%}\n {%- endif -%}\n{%- endfor -%}\n\n{#- Loop through messages -#}\n{%- for message in loop_messages -%}\n {%- if message['role'] != 'tool' -%}\n {%- set ns.prev_message_type = None -%}\n {%- set role = 'model' if message['role'] == 'assistant' else message['role'] -%}\n {#- Detect continuation using tracked state — O(1) instead of O(n) backward scan -#}\n {%- set continue_same_model_turn = (role == 'model' and ns.prev_non_tool_role == 'assistant') -%}\n {%- if not continue_same_model_turn -%}\n {{- '<|turn>' + role + '\\n' }}\n {%- endif -%}\n\n {#- Render reasoning/reasoning_content as thinking channel -#}\n {%- set thinking_text = message.get('reasoning') or message.get('reasoning_content') -%}\n {%- set thinking_gate = (loop.index0 > ns_turn.last_user_idx) or (preserve_thinking and message.get('tool_calls')) -%}\n {%- if thinking_text and thinking_gate -%}\n {{- '<|channel>thought\\n' + thinking_text + '\\n<channel|>' -}}\n {%- endif -%}\n\n {%- if message.get('tool_calls') -%}\n {%- for tool_call in message.get('tool_calls') -%}\n {%- set function = tool_call['function'] -%}\n {{- '<|tool_call>call:' + function['name'] + '{' -}}\n {%- if function['arguments'] is mapping -%}\n {%- set ns_args = namespace(found_first=false) -%}\n {%- for key, value in function['arguments'] | dictsort -%}\n {%- if ns_args.found_first %},{% endif -%}\n {%- set ns_args.found_first = true -%}\n {{- key -}}:{{- format_argument(value, escape_keys=False) -}}\n {%- endfor -%}\n {%- elif function['arguments'] is none -%}\n {%- else -%}\n {{- raise_exception(\n \"chat_template: tool_calls[].function.arguments must be a \"\n \"JSON object (mapping), not a string. Deserialize arguments \"\n \"before passing to the template.\"\n ) -}}\n {%- endif -%}\n {{- '}<tool_call|>' -}}\n {%- endfor -%}\n {%- set ns.prev_message_type = 'tool_call' -%}\n {%- endif -%}\n\n {%- set ns_tr_out = namespace(flag=false) -%}\n {%- if message.get('tool_responses') -%}\n {#- Legacy: tool_responses embedded on the assistant message (Google/Gemma native) -#}\n {%- for tool_response in message.get('tool_responses') -%}\n {{- format_tool_response_block(tool_response['name'] | default('unknown', true), tool_response['response']) -}}\n {%- set ns_tr_out.flag = true -%}\n {%- set ns.prev_message_type = 'tool_response' -%}\n {%- endfor -%}\n {%- elif message.get('tool_calls') -%}\n {#- OpenAI Chat Completions: forward-scan consecutive role:tool messages -#}\n {%- set ns_tool_scan = namespace(stopped=false) -%}\n {%- for k in range(loop.index0 + 1, loop_messages | length) -%}\n {%- if ns_tool_scan.stopped -%}\n {%- elif loop_messages[k]['role'] != 'tool' -%}\n {%- set ns_tool_scan.stopped = true -%}\n {%- else -%}\n {%- set follow = loop_messages[k] -%}\n {#- Resolve tool_call_id to function name -#}\n {%- set ns_tname = namespace(name=follow.get('name') or 'unknown') -%}\n {%- for tc in message.get('tool_calls') -%}\n {%- if tc.get('id') == follow.get('tool_call_id') -%}\n {%- set ns_tname.name = tc['function']['name'] -%}\n {%- endif -%}\n {%- endfor -%}\n {#- Handle content as string or content-parts array -#}\n {%- set tool_body = follow.get('content') -%}\n {%- if tool_body is string -%}\n {{- format_tool_response_block(ns_tname.name, tool_body) -}}\n {%- elif tool_body is sequence and tool_body is not string -%}\n {%- set ns_txt = namespace(s='') -%}\n {%- for part in tool_body -%}\n {%- if part.get('type') == 'text' -%}\n {%- set ns_txt.s = ns_txt.s + (part.get('text') | default('')) -%}\n {%- endif -%}\n {%- endfor -%}\n {{- format_tool_response_block(ns_tname.name, ns_txt.s) -}}\n {%- for part in tool_body -%}\n {%- if part.get('type') in ['image', 'image_url'] -%}\n {{- '<|image|>' -}}\n {%- elif part.get('type') in ['audio', 'input_audio'] -%}\n {{- '<|audio|>' -}}\n {%- elif part.get('type') == 'video' -%}\n {{- '<|video|>' -}}\n {%- endif -%}\n {%- endfor -%}\n {%- else -%}\n {{- format_tool_response_block(ns_tname.name, tool_body) -}}\n {%- endif -%}\n {%- set ns_tr_out.flag = true -%}\n {%- set ns.prev_message_type = 'tool_response' -%}\n {%- endif -%}\n {%- endfor -%}\n {%- endif -%}\n\n {%- set captured_content -%}\n {%- if message.get('content') is string -%}\n {%- if role == 'model' -%}\n {{- strip_thinking(message['content']) -}}\n {%- else -%}\n {{- message['content'] | trim -}}\n {%- endif -%}\n {%- elif message.get('content') is sequence -%}\n {%- for item in message['content'] -%}\n {%- if item.get('type') == 'text' -%}\n {%- if role == 'model' -%}\n {{- strip_thinking(item['text']) -}}\n {%- else -%}\n {{- item['text'] | trim -}}\n {%- endif -%}\n {%- elif item.get('type') in ['image', 'image_url'] -%}\n {{- '<|image|>' -}}\n {%- elif item.get('type') in ['audio', 'input_audio'] -%}\n {{- '<|audio|>' -}}\n {%- elif item.get('type') == 'video' -%}\n {{- '<|video|>' -}}\n {%- endif -%}\n {%- endfor -%}\n {%- endif -%}\n {%- endset -%}\n\n {{- captured_content -}}\n {%- set has_content = captured_content | trim | length > 0 -%}\n\n {#- Forward-scan: find next non-tool message role for continuation detection -#}\n {%- set next_nt = namespace(role=None, found=false) -%}\n {%- for j in range(loop.index0 + 1, loop_messages | length) -%}\n {%- if not next_nt.found -%}\n {%- if loop_messages[j]['role'] != 'tool' -%}\n {%- set next_nt.role = loop_messages[j]['role'] -%}\n {%- set next_nt.found = true -%}\n {%- endif -%}\n {%- endif -%}\n {%- endfor -%}\n\n {%- set continues_into_next = (\n role == 'model'\n and next_nt.role == 'assistant'\n and (not message.get('tool_calls') or ns_tr_out.flag)\n ) -%}\n\n {%- if ns.prev_message_type == 'tool_call' and not ns_tr_out.flag -%}\n {{- '<|tool_response>' -}}\n {%- elif continues_into_next -%}\n {%- elif not (ns_tr_out.flag and not has_content and not next_nt.found) -%}\n {{- '<turn|>\\n' -}}\n {%- endif -%}\n\n {#- Track previous non-tool role for next iteration (avoids O(n) backward scan) -#}\n {%- set ns.prev_non_tool_role = message['role'] -%}\n {%- endif -%}\n{%- endfor -%}\n\n{%- if add_generation_prompt -%}\n {%- if ns.prev_message_type != 'tool_response' and ns.prev_message_type != 'tool_call' -%}\n {{- '<|turn>model\\n' -}}\n {%- elif ns.prev_message_type == 'tool_response' and enable_thinking -%}\n {{- '<|channel>thought\\n' -}}\n {%- endif -%}\n{%- endif -%}\n"}}],"tuning":{"sampling":{"temperature":1,"topP":0.95,"topK":64,"maxTokens":8192,"repetitionPenalty":1.1,"repetitionContext":20},"reasoning":{"thinkingBudget":96,"enableThinking":true},"engine":{"llamaCpp":{"spec":{"mtp":true,"nMax":4}}},"profiles":{"thinking-general":{"sampling":{"temperature":0.9,"topP":0.95,"topK":64,"maxTokens":8192,"repetitionPenalty":1.1,"repetitionContext":20}},"thinking-coding":{"sampling":{"temperature":0.3,"topP":0.9,"topK":40,"maxTokens":12288,"repetitionPenalty":1.1,"repetitionContext":32}},"thinking-precise":{"sampling":{"temperature":0.3,"topP":0.9,"topK":20,"maxTokens":4096,"seed":0,"repetitionPenalty":1.1,"repetitionContext":20}},"instruct":{"sampling":{"temperature":0.8,"topP":0.9,"topK":40,"maxTokens":4096,"repetitionPenalty":1.1,"repetitionContext":20}},"creative":{"sampling":{"temperature":1,"topP":0.95,"topK":80,"maxTokens":8192,"repetitionPenalty":1.1,"repetitionContext":20}}}},"ollama":{"tag":"gemma4:e4b"},"llamaCpp":{"huggingfaceRepo":"unsloth/gemma-4-E4B-it-qat-GGUF","revision":"8c5a9e4fd5482e2be20fe0bf013b4c262a8f4265","filename":"gemma-4-E4B-it-qat-UD-Q4_K_XL.gguf","sha256":"df0fd4ee07072c607c29a0a1cb4f98918426cca12f45a2776bdd6ee6d09a4de3","approxSizeBytes":4215695776,"quantization":"UD-Q4_K_XL","draftModel":{"filename":"MTP/mtp-gemma-4-E4B-it-Q4_0.gguf","sha256":"423074e537504b4f9ec5eafed5c639fac82c96631626efccacdd3c4039b20605","sizeBytes":59678016}},"mlx":{"huggingfaceRepo":"mlx-community/unsloth-gemma-4-E4B-it-qat-oQ4","revision":"eaa5413e7ee2ce04f6e9544c06b420b365b0bfce","files":[{"name":"chat_template.jinja","sha256":"33204f1acb5bd0002713e16a593847f24ceeafe711ed88bda2a352dc996a3373","sizeBytes":16804},{"name":"config.json","sha256":"a3a3425e9689657df91de6cb425f012ea3fd751102ca897041b3b26e55f3e5c0","sizeBytes":31139},{"name":"generation_config.json","sha256":"b69207f9be617e982d13cc273cce6fd88c98dda99a4bdc5e2d52ffe0a0d9f0a9","sizeBytes":203},{"name":"model-00001-of-00002.safetensors","sha256":"c4bf6bd02244f31e1be953068b46c78e88ad5fc29f5bf18a9bafbcd74b414ac9","sizeBytes":5009987483},{"name":"model-00002-of-00002.safetensors","sha256":"faca610bbaffcdd442ebac1bfbfbfa924034099cc51dbd20bf4368b6e25c6cbf","sizeBytes":334813346},{"name":"model.safetensors.index.json","sha256":"c6feb5428a432da55774ef4decab5c3ad749ef7dcf6dae44462a69bac6b2e09e","sizeBytes":271419},{"name":"processor_config.json","sha256":"32bdf45d2ad4cc29a0822ddd157a182de76644f0419a6228d151495256e9813c","sizeBytes":1689},{"name":"tokenizer.json","sha256":"cc8d3a0ce36466ccc1278bf987df5f71db1719b9ca6b4118264f45cb627bfe0f","sizeBytes":32169626},{"name":"tokenizer_config.json","sha256":"a1bab8c81ed15fa6ce912ec993c66cb49392e0487fb1ea5f5f11ea3618683627","sizeBytes":2742}],"approxSizeBytes":5377294451,"quantization":"oQ4","chatTemplateOverride":"{#\n Template: Google Gemma 4 Canonical Chat Template\n Author: Google Gemma Engineering Team\n Published: 2026-07-09\n Context: Fixed tool-calling loops, turn closures, and thinking content-ordering.\n#}\n{%- macro format_parameters(properties, required, filter_keys=false) -%}\n {%- set standard_keys = ['description', 'type', 'properties', 'required', 'nullable'] -%}\n {%- set ns = namespace(found_first=false) -%}\n {%- for key, value in properties | dictsort -%}\n {%- set add_comma = false -%}\n {%- if not filter_keys or key not in standard_keys -%}\n {%- if ns.found_first %},{% endif -%}\n {%- set ns.found_first = true -%}\n {{ key }}:{\n {%- if value['description'] -%}\n description:<|\"|>{{ value['description'] }}<|\"|>\n {%- set add_comma = true -%}\n {%- endif -%}\n {%- if value['type'] | upper == 'STRING' -%}\n {%- if value['enum'] -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n enum:{{ format_argument(value['enum']) }}\n {%- endif -%}\n {%- elif value['type'] | upper == 'ARRAY' -%}\n {%- if value['items'] is mapping and value['items'] -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n items:{\n {%- set ns_items = namespace(found_first=false) -%}\n {%- for item_key, item_value in value['items'] | dictsort -%}\n {%- if item_value is not none -%}\n {%- if ns_items.found_first %},{% endif -%}\n {%- set ns_items.found_first = true -%}\n {%- if item_key == 'properties' -%}\n properties:{\n {%- if item_value is mapping -%}\n {{- format_parameters(item_value, value['items']['required'] | default([])) -}}\n {%- endif -%}\n }\n {%- elif item_key == 'required' -%}\n required:[\n {%- for req_item in item_value -%}\n <|\"|>{{- req_item -}}<|\"|>\n {%- if not loop.last %},{% endif -%}\n {%- endfor -%}\n ]\n {%- elif item_key == 'type' -%}\n {%- if item_value is string -%}\n type:{{ format_argument(item_value | upper) }}\n {%- else -%}\n type:{{ format_argument(item_value | map('upper') | list) }}\n {%- endif -%}\n {%- else -%}\n {{ item_key }}:{{ format_argument(item_value) }}\n {%- endif -%}\n {%- endif -%}\n {%- endfor -%}\n }\n {%- endif -%}\n {%- endif -%}\n {%- if value['nullable'] %}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n nullable:true\n {%- endif -%}\n {%- if value['type'] | upper == 'OBJECT' -%}\n {%- if value['properties'] is defined and value['properties'] is mapping -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n properties:{\n {{- format_parameters(value['properties'], value['required'] | default([])) -}}\n }\n {%- elif value is mapping -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n properties:{\n {{- format_parameters(value, value['required'] | default([]), filter_keys=true) -}}\n }\n {%- endif -%}\n {%- if value['required'] -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n required:[\n {%- for item in value['required'] | default([]) -%}\n <|\"|>{{- item -}}<|\"|>\n {%- if not loop.last %},{% endif -%}\n {%- endfor -%}\n ]\n {%- endif -%}\n {%- endif -%}\n {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}\n type:<|\"|>{{ value['type'] | upper }}<|\"|>}\n {%- endif -%}\n {%- endfor -%}\n{%- endmacro -%}\n{%- macro format_function_declaration(tool_data) -%}\n declaration:{{- tool_data['function']['name'] -}}{description:<|\"|>{{- tool_data['function']['description'] -}}<|\"|>\n {%- set params = tool_data['function']['parameters'] -%}\n {%- if params -%}\n ,parameters:{\n {%- if params['properties'] -%}\n properties:{ {{- format_parameters(params['properties'], params['required']) -}} },\n {%- endif -%}\n {%- if params['required'] -%}\n required:[\n {%- for item in params['required'] -%}\n <|\"|>{{- item -}}<|\"|>\n {{- ',' if not loop.last -}}\n {%- endfor -%}\n ],\n {%- endif -%}\n {%- if params['type'] -%}\n type:<|\"|>{{- params['type'] | upper -}}<|\"|>}\n {%- endif -%}\n {%- endif -%}\n {%- if 'response' in tool_data['function'] -%}\n {%- set response_declaration = tool_data['function']['response'] -%}\n ,response:{\n {%- if response_declaration['description'] -%}\n description:<|\"|>{{- response_declaration['description'] -}}<|\"|>,\n {%- endif -%}\n {%- if response_declaration['type'] | upper == 'OBJECT' -%}\n type:<|\"|>{{- response_declaration['type'] | upper -}}<|\"|>}\n {%- endif -%}\n {%- endif -%}\n }\n{%- endmacro -%}\n{%- macro format_argument(argument, escape_keys=True) -%}\n {%- if argument is none -%}\n {{- 'null' -}}\n {%- elif argument is string -%}\n {{- '<|\"|>' + argument + '<|\"|>' -}}\n {%- elif argument is boolean -%}\n {{- 'true' if argument else 'false' -}}\n {%- elif argument is mapping -%}\n {{- '{' -}}\n {%- set ns = namespace(found_first=false) -%}\n {%- for key, value in argument | dictsort -%}\n {%- if ns.found_first %},{% endif -%}\n {%- set ns.found_first = true -%}\n {%- if escape_keys -%}\n {{- '<|\"|>' + key + '<|\"|>' -}}\n {%- else -%}\n {{- key -}}\n {%- endif -%}\n :{{- format_argument(value, escape_keys=escape_keys) -}}\n {%- endfor -%}\n {{- '}' -}}\n {%- elif argument is sequence -%}\n {{- '[' -}}\n {%- for item in argument -%}\n {{- format_argument(item, escape_keys=escape_keys) -}}\n {%- if not loop.last %},{% endif -%}\n {%- endfor -%}\n {{- ']' -}}\n {%- else -%}\n {{- argument -}}\n {%- endif -%}\n{%- endmacro -%}\n{%- macro strip_thinking(text) -%}\n {%- set ns = namespace(result='') -%}\n {%- for part in text.split('<channel|>') -%}\n {%- if '<|channel>' in part -%}\n {%- set ns.result = ns.result + part.split('<|channel>')[0] -%}\n {%- else -%}\n {%- set ns.result = ns.result + part -%}\n {%- endif -%}\n {%- endfor -%}\n {{- ns.result | trim -}}\n{%- endmacro -%}\n\n{%- macro format_tool_response_block(tool_name, response) -%}\n {{- '<|tool_response>' -}}\n {%- if response is mapping -%}\n {{- 'response:' + tool_name + '{' -}}\n {%- for key, value in response | dictsort -%}\n {{- key -}}:{{- format_argument(value, escape_keys=False) -}}\n {%- if not loop.last %},{% endif -%}\n {%- endfor -%}\n {{- '}' -}}\n {%- else -%}\n {{- 'response:' + tool_name + '{value:' + format_argument(response, escape_keys=False) + '}' -}}\n {%- endif -%}\n {{- '<tool_response|>' -}}\n{%- endmacro -%}\n\n{#- ===== SETUP ===== -#}\n{%- set ns = namespace(prev_message_type=None, prev_non_tool_role=None) -%}\n{%- set loop_messages = messages -%}\n{%- set enable_thinking = enable_thinking | default(false) -%}\n{%- set preserve_thinking = preserve_thinking | default(false) -%}\n{{- bos_token -}}\n{#- Handle System/Tool Definitions Block -#}\n{%- if enable_thinking or tools or (messages and messages[0]['role'] in ['system', 'developer']) -%}\n {{- '<|turn>system\\n' -}}\n {#- Inject Thinking token at the very top of the FIRST system turn -#}\n {%- if enable_thinking -%}\n {{- '<|think|>\\n' -}}\n {%- set ns.prev_message_type = 'think' -%}\n {%- endif -%}\n {%- if messages and messages[0]['role'] in ['system', 'developer'] -%}\n {%- if messages[0]['content'] is string -%}\n {{- messages[0]['content'] | trim -}}\n {%- elif messages[0]['content'] is sequence -%}\n {%- for item in messages[0]['content'] -%}\n {{- item['text'] | trim + ' '-}}\n {%- endfor -%}\n {%- endif -%}\n {%- set loop_messages = messages[1:] -%}\n {%- endif -%}\n {%- if tools -%}\n {%- for tool in tools %}\n {{- '<|tool>' -}}\n {{- format_function_declaration(tool) | trim -}}\n {{- '<tool|>' -}}\n {%- endfor %}\n {%- set ns.prev_message_type = 'tool' -%}\n {%- endif -%}\n {{- '<turn|>\\n' -}}\n{%- endif %}\n\n{#- Pre-scan: find last user message index for reasoning guard -#}\n{%- set ns_turn = namespace(last_user_idx=-1) -%}\n{%- for i in range(loop_messages | length) -%}\n {%- if loop_messages[i]['role'] == 'user' -%}\n {%- set ns_turn.last_user_idx = i -%}\n {%- endif -%}\n{%- endfor -%}\n\n{#- Loop through messages -#}\n{%- for message in loop_messages -%}\n {%- if message['role'] != 'tool' -%}\n {%- set ns.prev_message_type = None -%}\n {%- set role = 'model' if message['role'] == 'assistant' else message['role'] -%}\n {#- Detect continuation using tracked state — O(1) instead of O(n) backward scan -#}\n {%- set continue_same_model_turn = (role == 'model' and ns.prev_non_tool_role == 'assistant') -%}\n {%- if not continue_same_model_turn -%}\n {{- '<|turn>' + role + '\\n' }}\n {%- endif -%}\n\n {#- Render reasoning/reasoning_content as thinking channel -#}\n {%- set thinking_text = message.get('reasoning') or message.get('reasoning_content') -%}\n {%- set thinking_gate = (loop.index0 > ns_turn.last_user_idx) or (preserve_thinking and message.get('tool_calls')) -%}\n {%- if thinking_text and thinking_gate -%}\n {{- '<|channel>thought\\n' + thinking_text + '\\n<channel|>' -}}\n {%- endif -%}\n\n {%- if message.get('tool_calls') -%}\n {%- for tool_call in message.get('tool_calls') -%}\n {%- set function = tool_call['function'] -%}\n {{- '<|tool_call>call:' + function['name'] + '{' -}}\n {%- if function['arguments'] is mapping -%}\n {%- set ns_args = namespace(found_first=false) -%}\n {%- for key, value in function['arguments'] | dictsort -%}\n {%- if ns_args.found_first %},{% endif -%}\n {%- set ns_args.found_first = true -%}\n {{- key -}}:{{- format_argument(value, escape_keys=False) -}}\n {%- endfor -%}\n {%- elif function['arguments'] is none -%}\n {%- else -%}\n {{- raise_exception(\n \"chat_template: tool_calls[].function.arguments must be a \"\n \"JSON object (mapping), not a string. Deserialize arguments \"\n \"before passing to the template.\"\n ) -}}\n {%- endif -%}\n {{- '}<tool_call|>' -}}\n {%- endfor -%}\n {%- set ns.prev_message_type = 'tool_call' -%}\n {%- endif -%}\n\n {%- set ns_tr_out = namespace(flag=false) -%}\n {%- if message.get('tool_responses') -%}\n {#- Legacy: tool_responses embedded on the assistant message (Google/Gemma native) -#}\n {%- for tool_response in message.get('tool_responses') -%}\n {{- format_tool_response_block(tool_response['name'] | default('unknown', true), tool_response['response']) -}}\n {%- set ns_tr_out.flag = true -%}\n {%- set ns.prev_message_type = 'tool_response' -%}\n {%- endfor -%}\n {%- elif message.get('tool_calls') -%}\n {#- OpenAI Chat Completions: forward-scan consecutive role:tool messages -#}\n {%- set ns_tool_scan = namespace(stopped=false) -%}\n {%- for k in range(loop.index0 + 1, loop_messages | length) -%}\n {%- if ns_tool_scan.stopped -%}\n {%- elif loop_messages[k]['role'] != 'tool' -%}\n {%- set ns_tool_scan.stopped = true -%}\n {%- else -%}\n {%- set follow = loop_messages[k] -%}\n {#- Resolve tool_call_id to function name -#}\n {%- set ns_tname = namespace(name=follow.get('name') or 'unknown') -%}\n {%- for tc in message.get('tool_calls') -%}\n {%- if tc.get('id') == follow.get('tool_call_id') -%}\n {%- set ns_tname.name = tc['function']['name'] -%}\n {%- endif -%}\n {%- endfor -%}\n {#- Handle content as string or content-parts array -#}\n {%- set tool_body = follow.get('content') -%}\n {%- if tool_body is string -%}\n {{- format_tool_response_block(ns_tname.name, tool_body) -}}\n {%- elif tool_body is sequence and tool_body is not string -%}\n {%- set ns_txt = namespace(s='') -%}\n {%- for part in tool_body -%}\n {%- if part.get('type') == 'text' -%}\n {%- set ns_txt.s = ns_txt.s + (part.get('text') | default('')) -%}\n {%- endif -%}\n {%- endfor -%}\n {{- format_tool_response_block(ns_tname.name, ns_txt.s) -}}\n {%- for part in tool_body -%}\n {%- if part.get('type') in ['image', 'image_url'] -%}\n {{- '<|image|>' -}}\n {%- elif part.get('type') in ['audio', 'input_audio'] -%}\n {{- '<|audio|>' -}}\n {%- elif part.get('type') == 'video' -%}\n {{- '<|video|>' -}}\n {%- endif -%}\n {%- endfor -%}\n {%- else -%}\n {{- format_tool_response_block(ns_tname.name, tool_body) -}}\n {%- endif -%}\n {%- set ns_tr_out.flag = true -%}\n {%- set ns.prev_message_type = 'tool_response' -%}\n {%- endif -%}\n {%- endfor -%}\n {%- endif -%}\n\n {%- set captured_content -%}\n {%- if message.get('content') is string -%}\n {%- if role == 'model' -%}\n {{- strip_thinking(message['content']) -}}\n {%- else -%}\n {{- message['content'] | trim -}}\n {%- endif -%}\n {%- elif message.get('content') is sequence -%}\n {%- for item in message['content'] -%}\n {%- if item.get('type') == 'text' -%}\n {%- if role == 'model' -%}\n {{- strip_thinking(item['text']) -}}\n {%- else -%}\n {{- item['text'] | trim -}}\n {%- endif -%}\n {%- elif item.get('type') in ['image', 'image_url'] -%}\n {{- '<|image|>' -}}\n {%- elif item.get('type') in ['audio', 'input_audio'] -%}\n {{- '<|audio|>' -}}\n {%- elif item.get('type') == 'video' -%}\n {{- '<|video|>' -}}\n {%- endif -%}\n {%- endfor -%}\n {%- endif -%}\n {%- endset -%}\n\n {{- captured_content -}}\n {%- set has_content = captured_content | trim | length > 0 -%}\n\n {#- Forward-scan: find next non-tool message role for continuation detection -#}\n {%- set next_nt = namespace(role=None, found=false) -%}\n {%- for j in range(loop.index0 + 1, loop_messages | length) -%}\n {%- if not next_nt.found -%}\n {%- if loop_messages[j]['role'] != 'tool' -%}\n {%- set next_nt.role = loop_messages[j]['role'] -%}\n {%- set next_nt.found = true -%}\n {%- endif -%}\n {%- endif -%}\n {%- endfor -%}\n\n {%- set continues_into_next = (\n role == 'model'\n and next_nt.role == 'assistant'\n and (not message.get('tool_calls') or ns_tr_out.flag)\n ) -%}\n\n {%- if ns.prev_message_type == 'tool_call' and not ns_tr_out.flag -%}\n {{- '<|tool_response>' -}}\n {%- elif continues_into_next -%}\n {%- elif not (ns_tr_out.flag and not has_content and not next_nt.found) -%}\n {{- '<turn|>\\n' -}}\n {%- endif -%}\n\n {#- Track previous non-tool role for next iteration (avoids O(n) backward scan) -#}\n {%- set ns.prev_non_tool_role = message['role'] -%}\n {%- endif -%}\n{%- endfor -%}\n\n{%- if add_generation_prompt -%}\n {%- if ns.prev_message_type != 'tool_response' and ns.prev_message_type != 'tool_call' -%}\n {{- '<|turn>model\\n' -}}\n {%- elif ns.prev_message_type == 'tool_response' and enable_thinking -%}\n {{- '<|channel>thought\\n' -}}\n {%- endif -%}\n{%- endif -%}\n"},"availableVersions":["1.3.0","1.2.1","1.2.0","1.1.2","1.1.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"glm-5.2-754b-q2","name":"GLM 5.2 (IQ2_XXS)","description":"antirez's routed 2-bit community GGUF of Z.ai's GLM 5.2 — a 754B-parameter Mixture-of-Experts (256 experts, 8 active per token, ~40B active) with a 1M-token context and DeepSeek-style sparse attention. The routed experts are crushed to IQ2_XXS (block 78 in Q2_K) while attention, the shared expert, embeddings, and the output head stay at Q8-class precision, landing the file at ~197 GB. Only ~20 GB of that is non-routed weight that must stay resident: DwarfStar streams the remaining ~177 GB of experts from SSD, so it runs on a 128 GB machine — but it is a very large download and a slow first turn. Built for antirez's `ds4` engine; these quants do not load on stock llama.cpp.","tags":["glm","reasoning","moe","tools","2-bit","iq2","long-context","large"],"maintainer":{"name":"antirez","url":"https://huggingface.co/antirez/glm-5.2-gguf"},"maker":{"name":"Z.ai","url":"https://huggingface.co/zai-org/GLM-5.2"},"license":"MIT","version":"1.0.0","releasedAt":"2026-07-25T00:00:00Z","parameterSize":"754B","approxSizeBytes":211075856448,"supportsTools":true,"contextWindow":1048576,"upstream":"https://huggingface.co/zai-org/GLM-5.2","category":"reasoning","style":{"family":"glm","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","prompt.tool-cookbook-condensed","mcp.compact-tool-schemas","fabrication.detect-past-tense-no-tools","turn.preamble-folding"],"tuning":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":16384},"reasoning":{"thinkingBudget":4096,"enableThinking":true},"profiles":{"thinking-general":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":16384},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"thinking-coding":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":16384},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"thinking-precise":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":8192,"seed":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"instruct":{"sampling":{"temperature":0.7,"topP":1,"maxTokens":4096},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":8192},"reasoning":{"enableThinking":false}}}},"ds4":{"huggingfaceRepo":"antirez/glm-5.2-gguf","revision":"2638b3b878f5c6cc3ae7334b8dbea1275025f52e","filename":"GLM-5.2-UD-IQ2_XXS_RoutedIQ2XXS_blk78Q2K.gguf","sha256":"a49de64c5020432bdae23de36a423a9660a5621bc0db8d12b66bd8814b07fea0","approxSizeBytes":211075856448,"residentBytes":61363217408,"kvBytesPerToken":91136,"residentCtxTokens":65536,"quantization":"IQ2_XXS","cacheExpertsBytes":34359738368,"ssdStreaming":true,"maxLaunchCtx":65536},"availableVersions":["1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"gpt-oss-120b-q4","name":"GPT-OSS (120B, MoE, Q4)","description":"OpenAI's open-weight 117B-parameter Mixture-of-Experts model (~5.1B active per token). Configurable reasoning effort (low/medium/high), full chain-of-thought access, and native function-calling. Frontier-class on-device reasoning for workstations and Mac Studio-class hardware — needs ~80GB of usable memory.","tags":["openai","tools","reasoning","moe","open-weights","large"],"maintainer":{"name":"OpenAI","url":"https://ollama.com/library/gpt-oss"},"license":"Apache-2.0","licenseClass":"open","licenseShortName":"Apache 2.0","version":"1.1.0","releasedAt":"2026-05-17T00:00:00Z","parameterSize":"117B","approxSizeBytes":65000000000,"supportsTools":true,"contextWindow":131072,"upstream":"https://huggingface.co/openai/gpt-oss-120b","category":"reasoning","style":{"family":"gpt-oss","reasoningFormat":"channel","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-channel-tags","prompt.private-reasoning-guidance","fabrication.detect-past-tense-no-tools","turn.preamble-folding"],"tuning":{"sampling":{"maxTokens":8192},"reasoning":{"effort":"medium","templateKwargs":{"reasoning_effort":"medium"}},"profiles":{"thinking-general":{"sampling":{"maxTokens":8192},"reasoning":{"effort":"medium","templateKwargs":{"reasoning_effort":"medium"}}},"thinking-deep":{"reasoning":{"effort":"high","templateKwargs":{"reasoning_effort":"high"}}},"thinking-coding":{"sampling":{"maxTokens":16384},"reasoning":{"effort":"high","templateKwargs":{"reasoning_effort":"high"}}},"thinking-precise":{"sampling":{"maxTokens":8192,"seed":0},"reasoning":{"effort":"medium","templateKwargs":{"reasoning_effort":"medium"}}},"instruct":{"sampling":{"maxTokens":4096},"reasoning":{"effort":"low","templateKwargs":{"reasoning_effort":"low"}}},"creative":{"sampling":{"maxTokens":8192},"reasoning":{"effort":"low","templateKwargs":{"reasoning_effort":"low"}}}}},"ollama":{"tag":"gpt-oss:120b"},"llamaCpp":{"huggingfaceRepo":"bartowski/openai_gpt-oss-120b-GGUF","revision":"8d64014efc314685c68ad448590f905fcb20e534","shards":[{"name":"openai_gpt-oss-120b-Q4_K_M/openai_gpt-oss-120b-Q4_K_M-00001-of-00002.gguf","sha256":"48b6bea561b52aaa3c10ca7681f35a923196cc348098e55ffc6ee3d184eb0949","sizeBytes":39954683808},{"name":"openai_gpt-oss-120b-Q4_K_M/openai_gpt-oss-120b-Q4_K_M-00002-of-00002.gguf","sha256":"06ab40ac3a9e2d7a77b6491b4cf76af152bee88ce493331a1f5147a0207abcad","sizeBytes":22887029536}],"approxSizeBytes":62841713344,"quantization":"Q4_K_M"},"mlx":{"huggingfaceRepo":"mlx-community/gpt-oss-120b-MXFP4-Q4","revision":"bce781bef0f2fc85ed4e575af74054f5aad73ddd","files":[{"name":"chat_template.jinja","sha256":"a4c9919cbbd4acdd51ccffe22da049264b1b73e59055fa58811a99efbd7c8146","sizeBytes":16738},{"name":"config.json","sha256":"d15a4db435befc6d28eff75c34f25386fb77ae56b88630857f372fd1fc25289d","sizeBytes":50145},{"name":"generation_config.json","sha256":"f9970ada892d2d1f72e3ed0a6535ccebadd11897318794ca671d8c7014c957da","sizeBytes":177},{"name":"model-00001-of-00013.safetensors","sha256":"f253063b8f2856e1e4bc0b3c3dcae743308574786c3de8e2b34e6108439a92a1","sizeBytes":4930648083},{"name":"model-00002-of-00013.safetensors","sha256":"75e5e879cf3eb84d8d520dd084f60aa9fa804a8ed9fe5bbfa3646c0abc196fcd","sizeBytes":5133844451},{"name":"model-00003-of-00013.safetensors","sha256":"8d45b4bd9a13913f1422d8056ab5e5455d961ee342810a483c65bc50e13e9825","sizeBytes":5133844463},{"name":"model-00004-of-00013.safetensors","sha256":"58a266ddeb125b5bb2f62329c1db6af5907917bce7e3228b6cd4c836d2b6ff1d","sizeBytes":5133844452},{"name":"model-00005-of-00013.safetensors","sha256":"9660b5a6a42ec1ecf59dd2d437ebb8f1e145d27d3d1a3b6551e4ad5f1231251c","sizeBytes":5133844583},{"name":"model-00006-of-00013.safetensors","sha256":"6a25c6255571f094de71bfbbbe0788edf40a1f42732caa67d5e34cafabe2b483","sizeBytes":5133844503},{"name":"model-00007-of-00013.safetensors","sha256":"baf2929ba19f5237b2eee1d70c62d366b7fe7efd2a36c301b276eb05117f92f4","sizeBytes":5133844579},{"name":"model-00008-of-00013.safetensors","sha256":"851ffd789b3fb575c93441b99a41326a1901ca931bebd1547fce68df91f6f9ae","sizeBytes":5133844553},{"name":"model-00009-of-00013.safetensors","sha256":"491729509a6b125c68f6756bb14fc27be8dc264fae3090ed6422468a07c16080","sizeBytes":5133844551},{"name":"model-00010-of-00013.safetensors","sha256":"3a985b1bb4073449483edcd1058390d46d6c2be2db74f77681ecd86114190367","sizeBytes":5133844567},{"name":"model-00011-of-00013.safetensors","sha256":"455f0edf416082de29bbcd906869bfcb2b8fddab58c3d6e57e348c72ccda0056","sizeBytes":5133844583},{"name":"model-00012-of-00013.safetensors","sha256":"40c8cf3a1797dce2b90a7e1db5858e337c173fc0e9055efe9362c56b8e0f06f1","sizeBytes":5133844567},{"name":"model-00013-of-00013.safetensors","sha256":"93e1477c64c3bd08f4f4202aee1e7305187e86dc82666659435620317f89bd83","sizeBytes":927119654},{"name":"model.safetensors.index.json","sha256":"6b2aab23124d1b9761c64a4f0076c8ecaf8955ed1d09f217aa9fb82c568991a6","sizeBytes":100431},{"name":"special_tokens_map.json","sha256":"8464cabd6eda239fe46ebf8ae63b46c417721784a961a022f6b59174a2cda0e2","sizeBytes":440},{"name":"tokenizer.json","sha256":"0614fe83cadab421296e664e1f48f4261fa8fef6e03e63bb75c20f38e37d07d3","sizeBytes":27868174},{"name":"tokenizer_config.json","sha256":"9279e942392b742d633c7adbb89ebe002c98399db8926a7af5125c726f404070","sizeBytes":4200}],"approxSizeBytes":62358097894,"quantization":"MXFP4-Q4"},"availableVersions":["1.1.0","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"gpt-oss-20b-q4","name":"GPT-OSS (20B, MoE, Q4)","description":"OpenAI's open-weight 20B-parameter Mixture-of-Experts model (~3.6B active per token). Configurable reasoning effort (low/medium/high), full chain-of-thought access, and native function-calling. Lower-latency frontier-class on-device option for machines with 16GB+ memory.","tags":["openai","tools","reasoning","moe","open-weights"],"maintainer":{"name":"OpenAI","url":"https://ollama.com/library/gpt-oss"},"license":"Apache-2.0","licenseClass":"open","licenseShortName":"Apache 2.0","minGezelVersion":"1.26227","version":"1.1.1","releasedAt":"2026-08-15T00:00:00Z","parameterSize":"20B","approxSizeBytes":12000000000,"supportsTools":true,"contextWindow":131072,"upstream":"https://ollama.com/library/gpt-oss","category":"reasoning","style":{"family":"gpt-oss","reasoningFormat":"channel","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-channel-tags","prompt.private-reasoning-guidance","prompt.prefer-writefile-edits","prompt.derive-by-execution","fabrication.detect-past-tense-no-tools","turn.preamble-folding","mcp.compact-tool-schemas"],"tuning":{"sampling":{"maxTokens":8192},"reasoning":{"effort":"medium","thinkingBudget":6144,"templateKwargs":{"reasoning_effort":"medium"}},"profiles":{"thinking-general":{"sampling":{"maxTokens":8192},"reasoning":{"effort":"medium","thinkingBudget":6144,"templateKwargs":{"reasoning_effort":"medium"}}},"thinking-deep":{"reasoning":{"effort":"high","thinkingBudget":6144,"templateKwargs":{"reasoning_effort":"high"}}},"thinking-coding":{"sampling":{"maxTokens":16384},"reasoning":{"effort":"high","thinkingBudget":6144,"templateKwargs":{"reasoning_effort":"high"}}},"thinking-precise":{"sampling":{"maxTokens":8192,"seed":0},"reasoning":{"effort":"medium","thinkingBudget":6144,"templateKwargs":{"reasoning_effort":"medium"}}},"instruct":{"sampling":{"maxTokens":4096},"reasoning":{"effort":"low","templateKwargs":{"reasoning_effort":"low"}}},"creative":{"sampling":{"maxTokens":8192},"reasoning":{"effort":"low","templateKwargs":{"reasoning_effort":"low"}}}}},"ollama":{"tag":"gpt-oss:20b"},"llamaCpp":{"huggingfaceRepo":"bartowski/openai_gpt-oss-20b-GGUF","revision":"e39ba3aa000c47c83dacdc9e1ca2c9dd0808c205","filename":"openai_gpt-oss-20b-Q4_K_M.gguf","sha256":"86a21df11afa5a40031ec1974e368ae0ab561ee3995f4d08ff432e8b2b7af9fc","approxSizeBytes":11673418816,"quantization":"Q4_K_M"},"mlx":{"huggingfaceRepo":"mlx-community/gpt-oss-20b-MXFP4-Q4","revision":"f356f2747216d7e98fee755df25987459fc19089","files":[{"name":"config.json","sha256":"e8ec3c105ab83e913a75baf587de778083ada1af3fac68d807e75ff926240e38","sizeBytes":33998},{"name":"generation_config.json","sha256":"f9970ada892d2d1f72e3ed0a6535ccebadd11897318794ca671d8c7014c957da","sizeBytes":177},{"name":"model-00001-of-00003.safetensors","sha256":"ec8571f6f8adba2d7d92a1f6029a69aecd18ab4e82404a306ceb063d9ae1362d","sizeBytes":5306798277},{"name":"model-00002-of-00003.safetensors","sha256":"9a32623d891d6f64694fdaaaeecf145d8796d17c238b9b99af953077d0f63837","sizeBytes":5263518916},{"name":"model-00003-of-00003.safetensors","sha256":"3fb80743340b3dbeb649e50b5fd1b5f063e98c143759025284344988d8fa0a95","sizeBytes":608251966},{"name":"model.safetensors.index.json","sha256":"065001869dd5ffd332419a432127467191b1bb0fd5c463dd0dc51f1359728a27","sizeBytes":67046},{"name":"special_tokens_map.json","sha256":"8464cabd6eda239fe46ebf8ae63b46c417721784a961a022f6b59174a2cda0e2","sizeBytes":440},{"name":"tokenizer.json","sha256":"0614fe83cadab421296e664e1f48f4261fa8fef6e03e63bb75c20f38e37d07d3","sizeBytes":27868174},{"name":"tokenizer_config.json","sha256":"2d8386578f85ea1fa698e78c58b2d8503e8122d6b110b61f93d3995601b07d91","sizeBytes":21694}],"approxSizeBytes":11206560688,"quantization":"MXFP4-Q4"},"availableVersions":["1.1.1","1.1.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"granite4.2-30b-q4","name":"Granite 4.2 (30B, Q4)","description":"IBM's flagship dense Granite 4.2 reasoning model at 30B parameters. Text-only, with native thinking, agentic coding, native tool calling, multilingual support, and a 128K context window. Q4 builds are suited to machines with 32GB+ usable memory.","tags":["ibm","reasoning","agentic","coding","tools","long-context","multilingual","open-weights","apple-silicon"],"maintainer":{"name":"IBM Granite","url":"https://huggingface.co/ibm-granite/granite-4.2-30b"},"license":"Apache-2.0","licenseClass":"open","licenseShortName":"Apache 2.0","minGezelVersion":"1.26238","version":"1.0.0","releasedAt":"2026-08-25T00:00:00Z","parameterSize":"30B","approxSizeBytes":17721455328,"supportsTools":true,"contextWindow":131072,"kvBytesPerTokenF16":262144,"upstream":"https://huggingface.co/ibm-granite/granite-4.2-30b","category":"reasoning","style":{"family":"granite","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","prompt.private-reasoning-guidance","mcp.compact-tool-schemas","fabrication.detect-past-tense-no-tools","prompt.retrieval-first","prompt.workspace-gestalt","prompt.documents-summaries","turn.preamble-folding","turn.ramble-detection","tools.mlx-grammar"],"tuning":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":8192},"samplingWhenThinking":{"temperature":1,"topP":0.95},"reasoning":{"thinkingBudget":8192,"enableThinking":true},"profiles":{"thinking-general":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":8192},"reasoning":{"thinkingBudget":8192,"enableThinking":true}},"thinking-deep":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":16384},"reasoning":{"thinkingBudget":12288,"enableThinking":true}},"thinking-coding":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":16384},"reasoning":{"thinkingBudget":8192,"enableThinking":true}},"thinking-precise":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":8192,"seed":0},"reasoning":{"thinkingBudget":8192,"enableThinking":true}},"instruct":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":8192},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":8192},"reasoning":{"enableThinking":false}}}},"llamaCpp":{"huggingfaceRepo":"ibm-granite/granite-4.2-30b-GGUF","revision":"dccfa56fbb20bc2d8bef5cc43f3c7ef190b090cb","filename":"granite-4.2-30b-Q4_K_M.gguf","sha256":"f299dace85d77ee0e24ca0b6720bd211b1f4cd1f65b9c0a2111e79692e29c9be","approxSizeBytes":17721455328,"quantization":"Q4_K_M"},"mlx":{"huggingfaceRepo":"lmstudio-community/granite-4.2-30b-MLX-4bit","revision":"a9b33b84944a3c27062c60bad1a37e0299f04eb2","files":[{"name":"chat_template.jinja","sha256":"f0ba43f79b3cabca5e5a7584c77aec92f49feae45cdf7779c87d9fc54cd90258","sizeBytes":9013},{"name":"config.json","sha256":"a745ccdfe4a4d7579c7e30cc9615b09f045cd9a7abe1e4e967dda8d548230870","sizeBytes":1187},{"name":"generation_config.json","sha256":"1b9baf0a7959d31d7fb58ff6b506c27d09a73d395cadccc7e6dd1d4b7e43fd9d","sizeBytes":207},{"name":"model-00001-of-00004.safetensors","sha256":"2c6e511eda2fd702c2c189211929202aedae5ddbd29cfb023682bf3f97619e10","sizeBytes":5332391152},{"name":"model-00002-of-00004.safetensors","sha256":"25350f8f9cf7c794ef5091d36cfdf5c48ee39439335f66bad4f213d02563d75a","sizeBytes":5327690091},{"name":"model-00003-of-00004.safetensors","sha256":"69300ea2414dc6ef214c943e1f4636d781be5ff231ba5d7421ae6b066cab64fa","sizeBytes":5351301086},{"name":"model-00004-of-00004.safetensors","sha256":"d51ae4e29e1fe98574b0f3e7087f7732fbf920d14d0f3f5946698d83d13dcacf","sizeBytes":457729616},{"name":"model.safetensors.index.json","sha256":"4db7a61eda74aba2a1229bff09bec129dbff49ca3241ffbe2d8a8fd0bd3f3b5b","sizeBytes":126768},{"name":"tokenizer.json","sha256":"883975314d58743726347caaf2c32ac89afd5ad57222cffbc4f052f2ab27b2d7","sizeBytes":7153414},{"name":"tokenizer_config.json","sha256":"856442330f3066df1f922cccbe107c4bc3b6764c791b803b475eecf88666b2a3","sizeBytes":9783}],"approxSizeBytes":16476412317,"quantization":"4bit"},"availableVersions":["1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"granite4.2-3b-q4","name":"Granite 4.2 (3B, Q4)","description":"IBM's compact dense Granite 4.2 reasoning model at 3B parameters. Text-only, with native thinking, native tool calling, multilingual support, and a 128K context window. Q4 builds are a lightweight option for machines with 8GB+ usable memory.","tags":["ibm","reasoning","agentic","coding","tools","long-context","multilingual","small","open-weights","apple-silicon"],"maintainer":{"name":"IBM Granite","url":"https://huggingface.co/ibm-granite/granite-4.2-3b"},"license":"Apache-2.0","licenseClass":"open","licenseShortName":"Apache 2.0","minGezelVersion":"1.26238","version":"1.0.0","releasedAt":"2026-08-25T00:00:00Z","parameterSize":"3B","approxSizeBytes":2244012160,"supportsTools":true,"contextWindow":131072,"kvBytesPerTokenF16":81920,"upstream":"https://huggingface.co/ibm-granite/granite-4.2-3b","category":"reasoning","style":{"family":"granite","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","prompt.private-reasoning-guidance","prompt.tool-cookbook-full","mcp.compact-tool-schemas","mcp.relax-required-fields","mcp.default-missing-fields","fabrication.detect-past-tense-no-tools","fabrication.detect-claim-without-tool","prompt.retrieval-first",{"id":"turn.continuation-budget","config":{"count":4}},"turn.preamble-folding","turn.ramble-detection","tools.mlx-grammar","prompt.prefer-writefile-edits","prompt.derive-by-execution"],"tuning":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":8192},"samplingWhenThinking":{"temperature":1,"topP":0.95},"reasoning":{"thinkingBudget":8192,"enableThinking":true},"profiles":{"thinking-general":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":8192},"reasoning":{"thinkingBudget":8192,"enableThinking":true}},"thinking-deep":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":16384},"reasoning":{"thinkingBudget":12288,"enableThinking":true}},"thinking-coding":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":16384},"reasoning":{"thinkingBudget":8192,"enableThinking":true}},"thinking-precise":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":8192,"seed":0},"reasoning":{"thinkingBudget":8192,"enableThinking":true}},"instruct":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":8192},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":8192},"reasoning":{"enableThinking":false}}}},"llamaCpp":{"huggingfaceRepo":"ibm-granite/granite-4.2-3b-GGUF","revision":"47a3d9699d7539606c83943d717fcea7bd9f6a19","filename":"granite-4.2-3b-Q4_K_M.gguf","sha256":"20e436143017578687f7f848225cc6c6038126c84149192229c7dff6e4e0f427","approxSizeBytes":2244012160,"quantization":"Q4_K_M"},"mlx":{"huggingfaceRepo":"lmstudio-community/granite-4.2-3b-MLX-4bit","revision":"4fe06f1699e99e288bf765ebc57f629cbca3bbfe","files":[{"name":"chat_template.jinja","sha256":"f0ba43f79b3cabca5e5a7584c77aec92f49feae45cdf7779c87d9fc54cd90258","sizeBytes":9013},{"name":"config.json","sha256":"bfcb1a01587dae223af89f07b960f0b456ef9fe9576167a126aa807941b213d7","sizeBytes":1185},{"name":"generation_config.json","sha256":"1b9baf0a7959d31d7fb58ff6b506c27d09a73d395cadccc7e6dd1d4b7e43fd9d","sizeBytes":207},{"name":"model.safetensors","sha256":"a71cf9297827b3c3d6ad426081b67c423044f6576632dabe40e7590552fd267d","sizeBytes":2059005430},{"name":"model.safetensors.index.json","sha256":"1cb600e4ea44dcbad15b65b3579fd06affb680b10b6f2ee1dec56db01f194f10","sizeBytes":65461},{"name":"tokenizer.json","sha256":"883975314d58743726347caaf2c32ac89afd5ad57222cffbc4f052f2ab27b2d7","sizeBytes":7153414},{"name":"tokenizer_config.json","sha256":"856442330f3066df1f922cccbe107c4bc3b6764c791b803b475eecf88666b2a3","sizeBytes":9783}],"approxSizeBytes":2066244493,"quantization":"4bit"},"availableVersions":["1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"granite4.2-8b-q4","name":"Granite 4.2 (8B, Q4)","description":"IBM's dense Granite 4.2 reasoning model at 8B parameters. Text-only, with native thinking, agentic coding, native tool calling, multilingual support, and a 128K context window. Q4 builds are suited to machines with 16GB+ usable memory.","tags":["ibm","reasoning","agentic","coding","tools","long-context","multilingual","open-weights","apple-silicon"],"maintainer":{"name":"IBM Granite","url":"https://huggingface.co/ibm-granite/granite-4.2-8b"},"license":"Apache-2.0","licenseClass":"open","licenseShortName":"Apache 2.0","minGezelVersion":"1.26238","version":"1.0.0","releasedAt":"2026-08-25T00:00:00Z","parameterSize":"8B","approxSizeBytes":5347917952,"supportsTools":true,"contextWindow":131072,"kvBytesPerTokenF16":163840,"upstream":"https://huggingface.co/ibm-granite/granite-4.2-8b","category":"reasoning","style":{"family":"granite","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","prompt.private-reasoning-guidance","prompt.tool-cookbook-condensed","mcp.compact-tool-schemas","mcp.relax-required-fields","mcp.default-missing-fields","fabrication.detect-past-tense-no-tools","fabrication.detect-claim-without-tool","prompt.retrieval-first","turn.preamble-folding","turn.ramble-detection","tools.mlx-grammar","prompt.prefer-writefile-edits","prompt.derive-by-execution"],"tuning":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":8192},"samplingWhenThinking":{"temperature":1,"topP":0.95},"reasoning":{"thinkingBudget":8192,"enableThinking":true},"profiles":{"thinking-general":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":8192},"reasoning":{"thinkingBudget":8192,"enableThinking":true}},"thinking-deep":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":16384},"reasoning":{"thinkingBudget":12288,"enableThinking":true}},"thinking-coding":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":16384},"reasoning":{"thinkingBudget":8192,"enableThinking":true}},"thinking-precise":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":8192,"seed":0},"reasoning":{"thinkingBudget":8192,"enableThinking":true}},"instruct":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":8192},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":8192},"reasoning":{"enableThinking":false}}}},"llamaCpp":{"huggingfaceRepo":"ibm-granite/granite-4.2-8b-GGUF","revision":"31239b3e4a93d1c2bc0e0d1160f711bf300cef05","filename":"granite-4.2-8b-Q4_K_M.gguf","sha256":"16a9369d0805f80b7377d25d87f937a90c05dc04ad79173a52001e42c9aab311","approxSizeBytes":5347917952,"quantization":"Q4_K_M"},"mlx":{"huggingfaceRepo":"lmstudio-community/granite-4.2-8b-MLX-4bit","revision":"1cfd523c66d94e2697af82cd968368d050166af4","files":[{"name":"chat_template.jinja","sha256":"f0ba43f79b3cabca5e5a7584c77aec92f49feae45cdf7779c87d9fc54cd90258","sizeBytes":9013},{"name":"config.json","sha256":"a1ee533ce70c3792b0281f9c7458ad4513ea3a9102e860f5da6f3f636e19c75c","sizeBytes":1187},{"name":"generation_config.json","sha256":"1b9baf0a7959d31d7fb58ff6b506c27d09a73d395cadccc7e6dd1d4b7e43fd9d","sizeBytes":207},{"name":"model.safetensors","sha256":"86a0c04a5deb24de6ada66a37c7373e3e37dbf2a138ed28bb03c212d331b6429","sizeBytes":4945853970},{"name":"model.safetensors.index.json","sha256":"e8d7bddce3c9ab993b8f4af8c390a10390c2966483f5391a808f9c6242e0c594","sizeBytes":65461},{"name":"tokenizer.json","sha256":"883975314d58743726347caaf2c32ac89afd5ad57222cffbc4f052f2ab27b2d7","sizeBytes":7153414},{"name":"tokenizer_config.json","sha256":"856442330f3066df1f922cccbe107c4bc3b6764c791b803b475eecf88666b2a3","sizeBytes":9783}],"approxSizeBytes":4953093035,"quantization":"4bit"},"availableVersions":["1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"laguna-s-2.1-118b-q4","name":"Laguna S 2.1 (118B-A8B, Q4)","description":"Poolside's Laguna S 2.1, a 118B-parameter Mixture-of-Experts model with about 8B active parameters per token, built for agentic coding and long-horizon software work. It supports native tool calling and interleaved reasoning between tool calls. Choose the official imatrix Q4_K_M GGUF (about 75GB) for llama.cpp, or the calibrated oQ4e MLX build (about 64GB) for native Apple Silicon inference on a 96GB-or-larger Mac. Gezel defaults to Poolside's quality-recommended 256K context window; the underlying checkpoint can be extended to 1M context with explicit YaRN overrides.","tags":["poolside","coding","agentic","tools","reasoning","long-context","moe","large","open-weights","apple-silicon"],"maintainer":{"name":"Poolside","url":"https://huggingface.co/poolside/Laguna-S-2.1"},"license":"OpenMDW-1.1","licenseClass":"open","licenseShortName":"OpenMDW 1.1","licenseUrl":"https://huggingface.co/poolside/Laguna-S-2.1/blob/main/LICENSE.md","minGezelVersion":"1.26227","version":"1.0.2","releasedAt":"2026-08-15T00:00:00Z","parameterSize":"118B","approxSizeBytes":96031829760,"supportsTools":true,"contextWindow":262144,"upstream":"https://huggingface.co/poolside/Laguna-S-2.1","category":"coding","style":{"family":"glm","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","prompt.private-reasoning-guidance","fabrication.detect-past-tense-no-tools","turn.preamble-folding","turn.ramble-detection","tools.mlx-grammar"],"tuning":{"sampling":{"temperature":0.7,"topP":0.95,"maxTokens":8192},"samplingWhenThinking":{"temperature":0.7,"topP":0.95},"reasoning":{"thinkingBudget":4096,"enableThinking":true},"profiles":{"thinking-general":{"sampling":{"temperature":0.7,"topP":0.95,"maxTokens":12288},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"thinking-coding":{"sampling":{"temperature":0.6,"topP":0.95,"maxTokens":16384},"reasoning":{"thinkingBudget":6144,"enableThinking":true}},"thinking-precise":{"sampling":{"temperature":0.4,"topP":0.9,"maxTokens":6144,"seed":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"instruct":{"sampling":{"temperature":0.7,"topP":0.95,"maxTokens":4096},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":8192},"reasoning":{"enableThinking":false}}}},"llamaCpp":{"huggingfaceRepo":"poolside/Laguna-S-2.1-GGUF","revision":"fc4e481289523cf7d0df668da6d1d391616141ca","filename":"laguna-s-2.1-Q4_K_M.gguf","sha256":"a8b55c75714ea73fd90ec85de5defdc0b8d88ca0ad2108343cdd8fc22f7583e4","approxSizeBytes":96031829760,"quantization":"Q4_K_M"},"mlx":{"huggingfaceRepo":"mlx-community/Laguna-S-2.1-oQ4e","revision":"d785a9349850807a34ac0ac1c22c66b718e77881","files":[{"name":"chat_template.jinja","sha256":"444819b8ad4612870827ac05b9147fe9e3344d3850cae8c2790898fc514099ff","sizeBytes":3961},{"name":"config.json","sha256":"de530f3a85f0dbef0b22c6e7caff51d21b6b75d1f04024b07947d103e22a630c","sizeBytes":106567},{"name":"generation_config.json","sha256":"81ff120c8c6739e2d0fc7a2829368b966fa2956938bc20393006ca3e800866a4","sizeBytes":479},{"name":"model-00001-of-00013.safetensors","sha256":"060e75728bc97e0659ee2294ad5ee29a36e3a94c514d2bc5276d7f178e2370fd","sizeBytes":5082945345},{"name":"model-00002-of-00013.safetensors","sha256":"f3751eadd95017b135e8cd44291a55bffd88c7deefa3fe7ec691b9e66b9f92bc","sizeBytes":5133833178},{"name":"model-00003-of-00013.safetensors","sha256":"f6095c47fbca034c6b83a05fac8f23e138059816cbe2d34b88601d34bbf3d8cc","sizeBytes":5133833188},{"name":"model-00004-of-00013.safetensors","sha256":"1e1f2502df93b1ac5f06d81522d0a2a2ca0ddb8842b8686941caf36fb2fdd202","sizeBytes":5133833222},{"name":"model-00005-of-00013.safetensors","sha256":"68d29552e4d763395081968a1ea020639168c1bfcd16cd140b1bfa1bf926ed7c","sizeBytes":5133833218},{"name":"model-00006-of-00013.safetensors","sha256":"4eb9afb24b47e73dc383ced9d89de273d9d8b4dd8ff6da3be2588834e6b77139","sizeBytes":5133833226},{"name":"model-00007-of-00013.safetensors","sha256":"7a72b8555831b05e54b222ef264f060c026d6dea04bec21e02b4ab2a901b79d7","sizeBytes":5133833236},{"name":"model-00008-of-00013.safetensors","sha256":"6f8cce69ae48076407c627a0a6e01c297a98a45ae6a05d34251b6f8a38c9a246","sizeBytes":5133833208},{"name":"model-00009-of-00013.safetensors","sha256":"15e76c2e5c1cdc6c97df0d0cea7e2b5619a9219fb145a8bd6e9faa584b8e7496","sizeBytes":5133833224},{"name":"model-00010-of-00013.safetensors","sha256":"f8d5d3a9b4328563fe273f0ea9471dc694897dadf055a7db5b82d1ae8bb818dc","sizeBytes":5133833218},{"name":"model-00011-of-00013.safetensors","sha256":"70e46864afd6fef184ef1dc4158e1c7d4f395615d988cc32b1b082020d30b50e","sizeBytes":5133833210},{"name":"model-00012-of-00013.safetensors","sha256":"ae943ae55c0b255d6194a728f2b8b3190ee31507f9c07b45f6e793b19ab58e2b","sizeBytes":5133833230},{"name":"model-00013-of-00013.safetensors","sha256":"3678e371f54756f19ac5f960880260c34b8fb97ca07fd8d7c089099ae6562559","sizeBytes":2566916620},{"name":"model.safetensors.index.json","sha256":"45709bf61be0398b4b34ed68845c80f8d2bab75f1f16d19e63c95e15571f0cc2","sizeBytes":190679},{"name":"special_tokens_map.json","sha256":"70cd3459fde61761e9440751a590e89a108c09b1803cc7727f5ad1ed1ea6122b","sizeBytes":214},{"name":"tokenizer.json","sha256":"809240f7a182cde859a4fc4ebc902e619a173d507e99304c1092aa04e7a6658e","sizeBytes":7287677},{"name":"tokenizer_config.json","sha256":"8103b5dd4baf13b38ee927370fbfeab2b1378457efaa233d1c5f0410c40dc9f9","sizeBytes":12978}],"approxSizeBytes":64129629878,"quantization":"oQ4e"},"availableVersions":["1.0.2","1.0.1","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"laguna-s-2.1-118b-q6","name":"Laguna S 2.1 (118B-A8B, Q6 MLX)","description":"Poolside's Laguna S 2.1 in a calibrated oQ6e MLX quantization for native Apple Silicon inference. The model has 118B total parameters with about 8B active per token and is built for agentic coding, long-horizon software work, native tool calling, and interleaved reasoning. This MLX-only build is about 92GB on disk, measured about 90GB peak at 64K context, and targets 128GB Macs. Gezel defaults to Poolside's quality-recommended 256K context window; the underlying checkpoint can be extended to 1M context with explicit YaRN overrides.","tags":["poolside","coding","agentic","tools","reasoning","long-context","moe","large","open-weights","apple-silicon"],"maintainer":{"name":"Poolside","url":"https://huggingface.co/poolside/Laguna-S-2.1"},"license":"OpenMDW-1.1","licenseClass":"open","licenseShortName":"OpenMDW 1.1","licenseUrl":"https://huggingface.co/poolside/Laguna-S-2.1/blob/main/LICENSE.md","minGezelVersion":"1.26227","version":"1.0.1","releasedAt":"2026-08-15T00:00:00Z","parameterSize":"118B","approxSizeBytes":92000000000,"supportsTools":true,"contextWindow":262144,"upstream":"https://huggingface.co/poolside/Laguna-S-2.1","category":"coding","style":{"family":"glm","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","prompt.private-reasoning-guidance","fabrication.detect-past-tense-no-tools","turn.preamble-folding","turn.ramble-detection","tools.mlx-grammar"],"tuning":{"sampling":{"temperature":0.7,"topP":0.95,"maxTokens":8192},"samplingWhenThinking":{"temperature":0.7,"topP":0.95},"reasoning":{"thinkingBudget":4096,"enableThinking":true},"profiles":{"thinking-general":{"sampling":{"temperature":0.7,"topP":0.95,"maxTokens":12288},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"thinking-coding":{"sampling":{"temperature":0.6,"topP":0.95,"maxTokens":16384},"reasoning":{"thinkingBudget":6144,"enableThinking":true}},"thinking-precise":{"sampling":{"temperature":0.4,"topP":0.9,"maxTokens":6144,"seed":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"instruct":{"sampling":{"temperature":0.7,"topP":0.95,"maxTokens":4096},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":8192},"reasoning":{"enableThinking":false}}}},"mlx":{"huggingfaceRepo":"mlx-community/Laguna-S-2.1-oQ6e","revision":"ec7a62ea672ddaf487384bce7093520e97656127","files":[{"name":"chat_template.jinja","sha256":"444819b8ad4612870827ac05b9147fe9e3344d3850cae8c2790898fc514099ff","sizeBytes":3961},{"name":"config.json","sha256":"54b4a72dafacf9df9091d4674c103bc7f60d822e59c680a7cb85417becfc64d4","sizeBytes":71357},{"name":"generation_config.json","sha256":"81ff120c8c6739e2d0fc7a2829368b966fa2956938bc20393006ca3e800866a4","sizeBytes":479},{"name":"model-00001-of-00019.safetensors","sha256":"9c4ae85da6cfbfc430882eb40e116c35ef00007c096c4039216a2a234a011a06","sizeBytes":5048917835},{"name":"model-00002-of-00019.safetensors","sha256":"b500001bb3fbbdda232c183523970eb0f38c616475c12728b1ff5df5c8bfdade","sizeBytes":5033168218},{"name":"model-00003-of-00019.safetensors","sha256":"74d46a48a614571e56f04a1135e4731e7b74954b2eee165a29a76804ccce92a1","sizeBytes":5033168202},{"name":"model-00004-of-00019.safetensors","sha256":"d4aca6b4a8236963929ca49c806c6ebf66f129f0274eec3ec29f8daa2d1292c0","sizeBytes":5033168200},{"name":"model-00005-of-00019.safetensors","sha256":"d178613bb91da16d0702e4c55a3f204b914aa87ec849f0284fc66d2dd3c1cfc1","sizeBytes":5033168225},{"name":"model-00006-of-00019.safetensors","sha256":"4b6b9bced366edae07b1635dc3c371d02fd6fc38070713a0546a0d6e38fa604c","sizeBytes":5033168230},{"name":"model-00007-of-00019.safetensors","sha256":"81baa5c2ef766e2e6b58aa370f2ed647b62556718cdd8dfc312fbb7351305154","sizeBytes":5033168222},{"name":"model-00008-of-00019.safetensors","sha256":"9bbc8236f09bf82bcf3d008f12d9a3a910c2ce0c387e78d0f0090d89dfdbff0b","sizeBytes":5033168228},{"name":"model-00009-of-00019.safetensors","sha256":"80f7a3b491ce469bf8e9659ffd5c98efa978a785c0e7ca05dbc6f58c2618895b","sizeBytes":5033168230},{"name":"model-00010-of-00019.safetensors","sha256":"26f35921be353b2294774b5f6e6a58f62c22411d7c47d7e3e884332c1daf2b81","sizeBytes":5033168226},{"name":"model-00011-of-00019.safetensors","sha256":"1b7c89212b8b7194c52efe21b9e3ee01bf14fc6f51547df47a4bd498a642545e","sizeBytes":5033168230},{"name":"model-00012-of-00019.safetensors","sha256":"52f47cd39a8a6b9acf086add059deeeae33d6c5293f6c45150dc75f2aafd4a76","sizeBytes":5033168230},{"name":"model-00013-of-00019.safetensors","sha256":"fc2fa934bbefaa00d0b8d1ad3185d482557d861b355388247ea3f87a458b25dd","sizeBytes":5033168232},{"name":"model-00014-of-00019.safetensors","sha256":"0c376d1871a47193f430fddde76c501043ac1fa683a66611b44149f5914a399a","sizeBytes":5033168236},{"name":"model-00015-of-00019.safetensors","sha256":"e5d7ec1efbef7a93f0790c5860a8dea59703700ec86702f071c85a1db7450e59","sizeBytes":5033168228},{"name":"model-00016-of-00019.safetensors","sha256":"843d385b2e99f6608631c9b3f42d3f080e26e4d204ca2ec539fe6cd2c60f7b43","sizeBytes":5033168232},{"name":"model-00017-of-00019.safetensors","sha256":"6c8e2bdbb72babb99ffd15252ae51495bb087df0dc9c94450572b50d4bb3e945","sizeBytes":5033168218},{"name":"model-00018-of-00019.safetensors","sha256":"4ecc87fc880407dcd0c9d86af1c83d32bd3c5611bb0b3ea29dab4de321f87f58","sizeBytes":5033168228},{"name":"model-00019-of-00019.safetensors","sha256":"28f27d6b9f5c3271bcbbbe53aa83005bf661d2e5c6d1f54e27652e5a173109a5","sizeBytes":1887438103},{"name":"model.safetensors.index.json","sha256":"714284a03a0b3b83c649e88cc9fbf0dd2f7e7cbd67827e7426fb45c75c9762f1","sizeBytes":190679},{"name":"special_tokens_map.json","sha256":"70cd3459fde61761e9440751a590e89a108c09b1803cc7727f5ad1ed1ea6122b","sizeBytes":214},{"name":"tokenizer.json","sha256":"809240f7a182cde859a4fc4ebc902e619a173d507e99304c1092aa04e7a6658e","sizeBytes":7287677},{"name":"tokenizer_config.json","sha256":"8103b5dd4baf13b38ee927370fbfeab2b1378457efaa233d1c5f0410c40dc9f9","sizeBytes":12978}],"approxSizeBytes":92507783098,"quantization":"oQ6e"},"availableVersions":["1.0.1","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"laguna-s-2.1-118b-q8","name":"Laguna S 2.1 (118B-A8B, Q8)","description":"Poolside's Laguna S 2.1, a 118B-parameter Mixture-of-Experts model with about 8B active parameters per token, built for agentic coding and long-horizon software work. It supports native tool calling and interleaved reasoning between tool calls. The official Q8_0 GGUF is about 128GB on disk, while the community MLX 8-bit conversion is about 125GB and runs natively on Apple Silicon. Both target larger-memory workstations; Q6 is the practical Laguna tier for a 128GB Mac. Gezel defaults to Poolside's quality-recommended 256K context window; the underlying checkpoint can be extended to 1M context with explicit YaRN overrides.","tags":["poolside","coding","agentic","tools","reasoning","long-context","moe","large","open-weights","apple-silicon"],"maintainer":{"name":"Poolside","url":"https://huggingface.co/poolside/Laguna-S-2.1"},"license":"OpenMDW-1.1","licenseClass":"open","licenseShortName":"OpenMDW 1.1","licenseUrl":"https://huggingface.co/poolside/Laguna-S-2.1/blob/main/LICENSE.md","minGezelVersion":"1.26227","version":"1.0.2","releasedAt":"2026-08-15T00:00:00Z","parameterSize":"118B","approxSizeBytes":128750823168,"supportsTools":true,"contextWindow":262144,"upstream":"https://huggingface.co/poolside/Laguna-S-2.1","category":"coding","style":{"family":"glm","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","prompt.private-reasoning-guidance","fabrication.detect-past-tense-no-tools","turn.preamble-folding","turn.ramble-detection","tools.mlx-grammar"],"tuning":{"sampling":{"temperature":0.7,"topP":0.95,"maxTokens":8192},"samplingWhenThinking":{"temperature":0.7,"topP":0.95},"reasoning":{"thinkingBudget":4096,"enableThinking":true},"profiles":{"thinking-general":{"sampling":{"temperature":0.7,"topP":0.95,"maxTokens":12288},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"thinking-coding":{"sampling":{"temperature":0.6,"topP":0.95,"maxTokens":16384},"reasoning":{"thinkingBudget":6144,"enableThinking":true}},"thinking-precise":{"sampling":{"temperature":0.4,"topP":0.9,"maxTokens":6144,"seed":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"instruct":{"sampling":{"temperature":0.7,"topP":0.95,"maxTokens":4096},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":8192},"reasoning":{"enableThinking":false}}}},"llamaCpp":{"huggingfaceRepo":"poolside/Laguna-S-2.1-GGUF","revision":"fc4e481289523cf7d0df668da6d1d391616141ca","filename":"laguna-s-2.1-Q8_0.gguf","sha256":"d946b221d69f2c5f87a986952bcd3cfb75831e5a6a2184e626e361663e1bfe2b","approxSizeBytes":128750823168,"quantization":"Q8_0"},"mlx":{"huggingfaceRepo":"Vontra/Laguna-S-2.1-MLX-8bit","revision":"b22cb31666ef6b5400a3c271a83e680499f24d73","files":[{"name":"chat_template.jinja","sha256":"2d3c724b3c2e9eb71fe9ccc5423ff268a370a8bfa89e9238b6de14fe000825c8","sizeBytes":3874},{"name":"config.json","sha256":"ab1a897c6f746f3884d3c9c23c89e49290ea0b752e4bc82d3d67695363cf8acf","sizeBytes":15759},{"name":"generation_config.json","sha256":"2deeac08584c9177028e108a994e37dffd06acf61ca429dc064f76fee52e2bea","sizeBytes":505},{"name":"model-00001-of-00024.safetensors","sha256":"a6071236c1018c6420088de8017723049a621e1826fc59e14d2a447a5a2e9ee7","sizeBytes":4918912786},{"name":"model-00002-of-00024.safetensors","sha256":"e3ad6a264165b579ef0e9f50003b0774683e4a5d44c0898bc96d785090a3b482","sizeBytes":5269620694},{"name":"model-00003-of-00024.safetensors","sha256":"6d1408c39b29e8f8da9cab266d6339eee3e4f8b2da0298d561dd2cb9dc1aca6f","sizeBytes":5289753118},{"name":"model-00004-of-00024.safetensors","sha256":"224a9902dace7b13a26bf632b81f0fe237c626ccc4b60ebe713fd92ee65802fe","sizeBytes":5269620770},{"name":"model-00005-of-00024.safetensors","sha256":"ab51e34e261f5f24c34b6f3c66ab73fa2e90ee2f84adf468be285ae3ed89a312","sizeBytes":5289753145},{"name":"model-00006-of-00024.safetensors","sha256":"75e7a2c66978f949f66a33066b48b4df09154683b926e334ee3aaa50ceb2168c","sizeBytes":5269620896},{"name":"model-00007-of-00024.safetensors","sha256":"a300396550270ab549d1937d06f30417935ba48686031613a40d6e419c994c5d","sizeBytes":5289753216},{"name":"model-00008-of-00024.safetensors","sha256":"e2d7e4baa5bf6ab6370903c007607ea9c67678942624ad7f407de433dbcc7122","sizeBytes":5269620902},{"name":"model-00009-of-00024.safetensors","sha256":"f46011b1ba7766e21a8f6d664f2db559b54dc6756a25f61485b94c5e589f6678","sizeBytes":5289753194},{"name":"model-00010-of-00024.safetensors","sha256":"bb4a638a64f15e753550ecda8ee953afc3ae7d7be92a0610db349d6381a307b7","sizeBytes":5269620878},{"name":"model-00011-of-00024.safetensors","sha256":"5d8401ab7462ce99e2d7de4dc4eb658ddbb4a2eecc658e3cf541e76e07114599","sizeBytes":5289753186},{"name":"model-00012-of-00024.safetensors","sha256":"0f5904a9da592e74db1358b7142264b302dd2f671a44fbb52033b7d33184188e","sizeBytes":5269620852},{"name":"model-00013-of-00024.safetensors","sha256":"41e74bda56d658c7c098e6fe044fd5444c1b85ad6602015fb2a30feea9ad7002","sizeBytes":5289753166},{"name":"model-00014-of-00024.safetensors","sha256":"1b4f7a55df54b8af0b06e47eb5693ff0d6827a579e073725a111c162fd372ef8","sizeBytes":5269620804},{"name":"model-00015-of-00024.safetensors","sha256":"dfc16dbd991c04a3cf6b93c5247e87a298dec25105a74745bb583d471ff3d5fb","sizeBytes":5289753254},{"name":"model-00016-of-00024.safetensors","sha256":"4b678f34d14445cb6a82689deea26b5b064d3a593f823dc716c2e60db59d9249","sizeBytes":5269620898},{"name":"model-00017-of-00024.safetensors","sha256":"6f746b737ea0254926bbd58b6305141c7d77aa7ed98c887376136be40eb5be38","sizeBytes":5289753198},{"name":"model-00018-of-00024.safetensors","sha256":"75a419263dee375f488e7746e36d5e6d40c07ff9b224b9a59320070efa84acfe","sizeBytes":5269620842},{"name":"model-00019-of-00024.safetensors","sha256":"5e8ac15f5ac2641707c330b1e9a30f3d48fc7636b51c456e8d5930b5230bfa7c","sizeBytes":5289753210},{"name":"model-00020-of-00024.safetensors","sha256":"edcd461565e4ae6ba0c6717e0689876e3325841bbefd1b30fbe130170c671f46","sizeBytes":5269620860},{"name":"model-00021-of-00024.safetensors","sha256":"3bf92e1f72ef570223f7e5864b103d60808e98379d83bfb3907a7b0c28b52717","sizeBytes":5289753130},{"name":"model-00022-of-00024.safetensors","sha256":"2f1b102b6b455e36dfabea3e908fdfa52f972a2ded7f2496b4fe228ef3760b13","sizeBytes":5269620836},{"name":"model-00023-of-00024.safetensors","sha256":"d44e48e98f11197b4f0558e5e079f019fd9332294d6f3af634d6ab1ceb2c0cdd","sizeBytes":5289753254},{"name":"model-00024-of-00024.safetensors","sha256":"35113954b195224343c057948a1beb795ae60652307566fc497fcfa512c4771b","sizeBytes":3838111062},{"name":"model.safetensors.index.json","sha256":"bde81b6ebdd0f3ed4f304a073020b5277542090854cec639dbdec0f46357a551","sizeBytes":178064},{"name":"tokenizer.json","sha256":"ff04405d2d1e1b6c77a8be25f0fce9371003a558b055c23248d9e8ca1d956d92","sizeBytes":7287678},{"name":"tokenizer_config.json","sha256":"fb4815e0e871cd4cb1cffa77722ce798df97db11da0481489b8da4d76142596e","sizeBytes":460}],"approxSizeBytes":124917624491,"quantization":"8bit"},"availableVersions":["1.0.2","1.0.1","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"lfm2.5-2.6b-q4","name":"LFM2.5 (2.6B, Q4)","description":"Liquid AI's LFM2.5 at 2.6B parameters. A hybrid convolution-attention design built for on-device speed — light on memory, quick even on modest hardware, with integrated reasoning, native tool calling, and a 128K context window.","tags":["liquid-ai","small","tools"],"maintainer":{"name":"Liquid AI","url":"https://huggingface.co/LiquidAI/LFM2.5-2.6B"},"license":"LFM Open License v1.0","licenseClass":"custom-restricted","licenseShortName":"LFM Open 1.0","minGezelVersion":"1.26227","version":"1.0.1","releasedAt":"2026-08-15T00:00:00Z","parameterSize":"2.6B","approxSizeBytes":1674454848,"supportsTools":true,"contextWindow":128000,"upstream":"https://huggingface.co/LiquidAI/LFM2.5-2.6B","category":"general","style":{"family":"other","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","prompt.private-reasoning-guidance","prompt.tool-cookbook-full","fabrication.detect-past-tense-no-tools","mcp.compact-tool-schemas","mcp.relax-required-fields","mcp.default-missing-fields",{"id":"turn.continuation-budget","config":{"count":4}},"turn.ollama-num-predict-bumped","turn.preamble-folding","turn.ramble-detection","prompt.prefer-writefile-edits","prompt.derive-by-execution",{"id":"prompt.native-tool-call-format","config":{"example":"<|tool_call_start|>[write_file(path='notes.md', content='hello')]<|tool_call_end|>"}}],"tuning":{"sampling":{"temperature":0.1,"topK":50,"repetitionPenalty":1.1},"reasoning":{"thinkingBudget":2048,"enableThinking":true},"profiles":{"thinking-general":{"sampling":{"temperature":0.1,"topP":0.95,"topK":50,"repetitionPenalty":1.1}},"thinking-coding":{"sampling":{"temperature":0.1,"topP":0.9,"topK":50,"repetitionPenalty":1.1}},"thinking-precise":{"sampling":{"temperature":0.05,"topP":0.9,"topK":20,"repetitionPenalty":1.1}},"instruct":{"sampling":{"temperature":0.1,"topP":0.95,"topK":50,"repetitionPenalty":1.1}},"creative":{"sampling":{"temperature":0.3,"topP":0.95,"topK":50,"repetitionPenalty":1.05}}}},"llamaCpp":{"huggingfaceRepo":"LiquidAI/LFM2.5-2.6B-GGUF","revision":"b22e29ebf6249a8c9fcdda36914743e9980595c4","filename":"LFM2.5-2.6B-Q4_K_M.gguf","sha256":"79fdf00351b46cf26f020aead28d01889886be87c55fa0eb907e6f9b00bfee14","approxSizeBytes":1674454848,"quantization":"Q4_K_M"},"mlx":{"huggingfaceRepo":"mlx-community/LFM2.5-2.6B-4bit","revision":"6b421051711933cdbad5b63a79f1c03ca782dc3b","files":[{"name":"chat_template.jinja","sha256":"ea663864491de7ade391839479860ca95541f892f72665c73251fbd4643b1bef","sizeBytes":5443},{"name":"config.json","sha256":"183f59ddf55580609fbc271a2e4025317b4a48daec2c43a9db61d7a3985ba2e3","sizeBytes":2377},{"name":"generation_config.json","sha256":"e08c9a83f4bfe64468c9671a2b69b60549728e2a9481387f3555471f64e958bc","sizeBytes":306},{"name":"model.safetensors","sha256":"c60882ad5ae00906e17b6fe14d1a86d6f63d4e2e2782ea0dced24bb97bef9766","sizeBytes":1517625850},{"name":"model.safetensors.index.json","sha256":"1c0460f5ce5e990b60ab83cdd446932738a327847fba5069dbb8cf92c0d7f389","sizeBytes":50943},{"name":"tokenizer.json","sha256":"695be7802a0e4b8a81048f0ff5ebb7fc811a0ba5a6be63dbb24deb5a81096f41","sizeBytes":17905598},{"name":"tokenizer_config.json","sha256":"11f1de897317b489dd09199284528382eeb17f566398b16e2039bb2266d26b09","sizeBytes":363}],"approxSizeBytes":1535590880,"quantization":"4bit"},"availableVersions":["1.0.1","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"llama3.2-3b-q4","name":"Llama 3.2 (3B, Q4)","description":"Meta's 3B chat model. Small enough to run on modest hardware, sharp enough to be a useful default.","tags":["meta","small"],"maintainer":{"name":"Meta","url":"https://ollama.com/library/llama3.2"},"license":"Llama 3.2 Community License","licenseClass":"custom-restricted","licenseShortName":"Llama 3.2 Community","minGezelVersion":"1.26227","version":"1.1.1","releasedAt":"2026-08-15T00:00:00Z","parameterSize":"3B","approxSizeBytes":2019377696,"supportsTools":true,"contextWindow":128000,"upstream":"https://ollama.com/library/llama3.2","category":"general","style":{"family":"llama","reasoningFormat":"none","toolCallFormat":"function-call"},"behaviors":["fabrication.detect-past-tense-no-tools","mcp.compact-tool-schemas","mcp.relax-required-fields","mcp.default-missing-fields"],"tuning":{"sampling":{"temperature":0.6,"topP":0.9},"profiles":{"thinking-general":{"sampling":{"temperature":0.5,"topP":0.9,"topK":40,"repetitionPenalty":1.1}},"thinking-coding":{"sampling":{"temperature":0.4,"topP":0.9,"topK":40,"repetitionPenalty":1.1}},"thinking-precise":{"sampling":{"temperature":0.2,"topP":0.9,"topK":20,"repetitionPenalty":1.1}},"instruct":{"sampling":{"temperature":0.6,"topP":0.9,"topK":40,"repetitionPenalty":1.1}},"creative":{"sampling":{"temperature":0.9,"topP":0.95,"topK":50,"repetitionPenalty":1.05}}}},"ollama":{"tag":"llama3.2"},"llamaCpp":{"huggingfaceRepo":"bartowski/Llama-3.2-3B-Instruct-GGUF","revision":"5ab33fa94d1d04e903623ae72c95d1696f09f9e8","filename":"Llama-3.2-3B-Instruct-Q4_K_M.gguf","sha256":"6c1a2b41161032677be168d354123594c0e6e67d2b9227c84f296ad037c728ff","approxSizeBytes":2019377696,"quantization":"Q4_K_M"},"mlx":{"huggingfaceRepo":"mlx-community/Llama-3.2-3B-Instruct-4bit","revision":"7f0dc925e0d0afb0322d96f9255cfddf2ba5636e","files":[{"name":"config.json","sha256":"c546925585e48f43890d9dc5150df4fec73dd3780d92961c5ace451934cc4cd6","sizeBytes":1122},{"name":"model.safetensors","sha256":"d75e1ee0ea653cc5b76191ec934c7c0d568e94d4e47846619f1f4bc715b7b265","sizeBytes":1807496278},{"name":"model.safetensors.index.json","sha256":"2ef31fa0b9dcda01f87835851d5e1d5a39ab6258ae618af6ea864c3747e556e4","sizeBytes":45720},{"name":"special_tokens_map.json","sha256":"6f38c73729248f6c127296386e3cdde96e254636cc58b4169d3fd32328d9a8ec","sizeBytes":296},{"name":"tokenizer.json","sha256":"6b9e4e7fb171f92fd137b777cc2714bf87d11576700a1dcd7a399e7bbe39537b","sizeBytes":17209920},{"name":"tokenizer_config.json","sha256":"022d5ae3df4737998ab97d8f31ac2bcb4c06dd8ebe5a8aba2b4aceef1e5ea7d3","sizeBytes":54558}],"approxSizeBytes":1824807894,"quantization":"4bit"},"availableVersions":["1.1.1","1.1.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"mistral-7b-q4","name":"Mistral 7B Instruct (Q4)","description":"Mistral AI's retired 7B Instruct v0.3 model, retained for compatibility with existing installs. Prefer a current small model for new work.","tags":["mistral","tools","retired"],"maintainer":{"name":"Mistral AI","url":"https://ollama.com/library/mistral"},"license":"Apache-2.0","licenseClass":"open","licenseShortName":"Apache 2.0","minGezelVersion":"1.26227","version":"1.1.1","releasedAt":"2026-08-15T00:00:00Z","parameterSize":"7B","approxSizeBytes":4372812000,"supportsTools":true,"contextWindow":32768,"upstream":"https://ollama.com/library/mistral","category":"general","style":{"family":"mistral","reasoningFormat":"none","toolCallFormat":"function-call"},"behaviors":["fabrication.detect-past-tense-no-tools","fabrication.detect-claim-without-tool","prompt.tool-cookbook-condensed","turn.preamble-folding","turn.ramble-detection","provider.flatten-tool-transcript","mcp.compact-tool-schemas","mcp.relax-required-fields","mcp.default-missing-fields"],"tuning":{"sampling":{"temperature":0.7,"topP":0.95,"maxTokens":8192,"repetitionPenalty":1.1,"repetitionContext":20},"engine":{"llamaCpp":{"chatTemplate":"{{ bos_token }}\n{% if tools %}\n{{ '[AVAILABLE_TOOLS] ' + (tools | tojson) + ' [/AVAILABLE_TOOLS]' }}\n{% endif %}\n{% for message in messages %}\n{% if message['role'] == 'system' %}\n{{ message['content'] }}\n{% elif message['role'] == 'user' %}\n{{ '[INST] ' + message['content'] + ' [/INST]' }}\n{% elif message['role'] == 'assistant' %}\n{% if message.get('tool_calls') %}\n{{ '[TOOL_CALLS] ' + (message['tool_calls'] | tojson) }}\n{% else %}\n{{ message['content'] + eos_token }}\n{% endif %}\n{% elif message['role'] == 'tool' %}\n{{ '[TOOL_RESULTS] ' + message['content'] + ' [/TOOL_RESULTS]' }}\n{% endif %}\n{% endfor %}"}},"profiles":{"thinking-general":{"sampling":{"temperature":0.6,"topP":0.9,"topK":40,"maxTokens":8192,"repetitionPenalty":1.1}},"thinking-coding":{"sampling":{"temperature":0.4,"topP":0.9,"topK":40,"maxTokens":8192,"repetitionPenalty":1.1}},"thinking-precise":{"sampling":{"temperature":0.2,"topP":0.9,"topK":20,"maxTokens":4096,"seed":0,"repetitionPenalty":1.1}},"instruct":{"sampling":{"temperature":0.7,"topP":0.95,"topK":40,"maxTokens":8192,"repetitionPenalty":1.1}},"creative":{"sampling":{"temperature":0.9,"topP":0.95,"topK":50,"maxTokens":8192,"repetitionPenalty":1.05}}}},"ollama":{"tag":"mistral:7b"},"llamaCpp":{"huggingfaceRepo":"bartowski/Mistral-7B-Instruct-v0.3-GGUF","revision":"61fd4167fff3ab01ee1cfe0da183fa27a944db48","filename":"Mistral-7B-Instruct-v0.3-Q4_K_M.gguf","sha256":"1270d22c0fbb3d092fb725d4d96c457b7b687a5f5a715abe1e818da303e562b6","approxSizeBytes":4372812000,"quantization":"Q4_K_M"},"mlx":{"huggingfaceRepo":"mlx-community/Mistral-7B-Instruct-v0.3-4bit","revision":"a4b8f870474b0eb527f466a03fbc187830d271f5","files":[{"name":"config.json","sha256":"efc145d2f53d6d6ef2639be0556b4ecf6faac6cf8a7199ad2b7bb5ebcf443bdd","sizeBytes":721},{"name":"model.safetensors","sha256":"d7182d886f93a9efa73d6d556ee33ffe839a4e09e15965eeef46f295ab5b503d","sizeBytes":4077480215},{"name":"model.safetensors.index.json","sha256":"525940738b16d210fdfd692a24752d050c15a50cbe208dd82b06204d640d687b","sizeBytes":52381},{"name":"special_tokens_map.json","sha256":"6fa06efa2785e450051989a6f8fb4416b10149ded485ddd3f127a40734f5cfd0","sizeBytes":414},{"name":"tokenizer.json","sha256":"e553af6fff7d7ad76e830608b218c5c0b0822998d5a1a96099a74cd3c1cb1a49","sizeBytes":1961548},{"name":"tokenizer.model","sha256":"37f00374dea48658ee8f5d0f21895b9bc55cb0103939607c8185bfd1c6ca1f89","sizeBytes":587404},{"name":"tokenizer_config.json","sha256":"e8fbcfef34d855dba2c7f1d91a2c5470cf493d00ecfd06488ce21e45325bc8ae","sizeBytes":138039}],"approxSizeBytes":4080220722,"quantization":"4bit"},"availableVersions":["1.1.1","1.1.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"mistral-medium-3.5-128b-q4","name":"Mistral Medium 3.5 (128B, Q4)","description":"Mistral AI's frontier dense 128B model with configurable reasoning (instant or chain-of-thought via `reasoning_effort`). Native function-calling, 256K context. Workstation-tier on-device — needs ~80GB of usable memory for Q4_K_M; an MLX 4-bit build is available for Apple Silicon Mac Studio-class hardware. License is a Modified MIT with a revenue carve-out — free for commercial and non-commercial use unless the licensee company exceeds Mistral's revenue threshold.","tags":["mistral","reasoning","tools","large","revenue-limited"],"maintainer":{"name":"Mistral AI","url":"https://huggingface.co/mistralai/Mistral-Medium-3.5-128B"},"license":"MIT-Modified","licenseClass":"custom-restricted","licenseShortName":"MIT-Modified","minGezelVersion":"1.26227","version":"1.0.1","releasedAt":"2026-08-15T00:00:00Z","parameterSize":"128B","approxSizeBytes":74897139136,"supportsTools":true,"contextWindow":262144,"upstream":"https://huggingface.co/mistralai/Mistral-Medium-3.5-128B","category":"reasoning","style":{"family":"mistral","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","prompt.private-reasoning-guidance","fabrication.detect-past-tense-no-tools","turn.preamble-folding","provider.flatten-tool-transcript"],"tuning":{"sampling":{"temperature":0.7,"topP":0.95,"topK":64,"maxTokens":8192,"repetitionPenalty":1.05,"repetitionContext":20},"reasoning":{"thinkingBudget":4096,"enableThinking":true,"templateKwargs":{"reasoning_effort":"high"}},"profiles":{"thinking-general":{"sampling":{"temperature":0.7,"topP":0.95,"maxTokens":8192},"reasoning":{"thinkingBudget":4096,"enableThinking":true,"templateKwargs":{"reasoning_effort":"high"}}},"thinking-coding":{"sampling":{"temperature":0.7,"topP":0.95,"maxTokens":16384},"reasoning":{"thinkingBudget":4096,"enableThinking":true,"templateKwargs":{"reasoning_effort":"high"}}},"thinking-precise":{"sampling":{"temperature":0.4,"topP":0.95,"maxTokens":8192,"seed":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true,"templateKwargs":{"reasoning_effort":"high"}}},"instruct":{"sampling":{"temperature":0.1,"topP":1,"maxTokens":4096},"reasoning":{"enableThinking":false,"templateKwargs":{"reasoning_effort":"none"}}},"creative":{"sampling":{"temperature":0.7,"topP":1,"maxTokens":8192},"reasoning":{"enableThinking":false,"templateKwargs":{"reasoning_effort":"none"}}}}},"llamaCpp":{"huggingfaceRepo":"unsloth/Mistral-Medium-3.5-128B-GGUF","revision":"c8f5b1477e1b22cd2d819157d450f001f7047298","shards":[{"name":"Q4_K_M/Mistral-Medium-3.5-128B-Q4_K_M-00001-of-00003.gguf","sha256":"94bf2dd90d80f41b1dfb1f94b569d11fd78fd302a79ae9fdf828f8082d1dfeaa","sizeBytes":7875456},{"name":"Q4_K_M/Mistral-Medium-3.5-128B-Q4_K_M-00002-of-00003.gguf","sha256":"8396392f4b9eafac69e59355b569b6603f42d103505988e26939db7f5bfecb95","sizeBytes":49927945056},{"name":"Q4_K_M/Mistral-Medium-3.5-128B-Q4_K_M-00003-of-00003.gguf","sha256":"3f4ddc0284d522e6f1a020eaa731eaf851d6708a26431773de7bba504227c2e5","sizeBytes":24961318624}],"approxSizeBytes":74897139136,"quantization":"Q4_K_M"},"mlx":{"huggingfaceRepo":"mlx-community/Mistral-Medium-3.5-128B-4bit","revision":"5a7b6b72ca9eb2324a90bdb5e6079789dae68348","files":[{"name":"chat_template.jinja","sha256":"07ef40663bd181457c9c2a823296c83b33dc4f09e5d5f11478c219f7fb4f5633","sizeBytes":13479},{"name":"config.json","sha256":"915a6627d7cef04adf8efbb7c8befa1f09833d038eeddd80958aa88f5ae5dabb","sizeBytes":2127},{"name":"consolidated.safetensors.index.json","sha256":"abf847cd7a832d633fc800945dabf54fad3fca04a853c7d53eefa1e9b90fd8d0","sizeBytes":217908},{"name":"generation_config.json","sha256":"a107bf29bb85bd142694b293f41f5984176c598c8c3a3bc47f1f5ac8008bf89e","sizeBytes":131},{"name":"model-00001-of-00015.safetensors","sha256":"595e23a7aaf89c392165e653cb8d4cf862aa596f6cbfb1d03ed671330f72d0de","sizeBytes":5356508226},{"name":"model-00002-of-00015.safetensors","sha256":"59db0909274c1464a058fb6d98ba5ed39280bf96ed34f81867b27351e1c9154d","sizeBytes":5368448119},{"name":"model-00003-of-00015.safetensors","sha256":"91e857ebe77e1020f7e90742ee643290f71a67cccd56ba81250daeb2e2876e64","sizeBytes":5263167745},{"name":"model-00004-of-00015.safetensors","sha256":"dfa77b77d40ff44aa27a8be3d1a611e177a9e29b7fcf47d99959643b115bb435","sizeBytes":5252157665},{"name":"model-00005-of-00015.safetensors","sha256":"0b62abf4d755c9a882e513f74cfebcffb7cce94fe6746aff4912eb411174a962","sizeBytes":5365403842},{"name":"model-00006-of-00015.safetensors","sha256":"fc241be9252defbe6bd44c1ec3c2c1cc7e3cbfef3c710025944aa45c91e63477","sizeBytes":5351247306},{"name":"model-00007-of-00015.safetensors","sha256":"95ba57e62c4979b6dcc23dc4d4d199c7ac6c71b5f9a96d20ebf99e231202fe36","sizeBytes":5252108242},{"name":"model-00008-of-00015.safetensors","sha256":"574edc0a63b23874258610a132a69c648520dbd8db2a6a68929ead73872c8d67","sizeBytes":5252157663},{"name":"model-00009-of-00015.safetensors","sha256":"dab1076222d40b7777d8fe09285cb804188ad8a10af1d5232ba19b842d34cec3","sizeBytes":5252157629},{"name":"model-00010-of-00015.safetensors","sha256":"1c7836f1b077dbffa6a54a3458dd66879f343f4f8e648d74e7f21e2642ecf48c","sizeBytes":5365403830},{"name":"model-00011-of-00015.safetensors","sha256":"13402c3ceccea8af794bec72d841885c7f63a7fba534a1b9c6d7f722d028c7d5","sizeBytes":5351247296},{"name":"model-00012-of-00015.safetensors","sha256":"b2f988520b06cc34a9f9b0c4f71b1cc0fbd465b7c45a20ead3911fe1ca434d5a","sizeBytes":5252108278},{"name":"model-00013-of-00015.safetensors","sha256":"97f3bb3f7b2486db4d4912d5a3620b5ae8d34b8f55ce23c17b7a553c19dc6a1f","sizeBytes":5252157667},{"name":"model-00014-of-00015.safetensors","sha256":"7a1f12144046d582ff6997eeefd29f025060586f5cf23880be3416bb630adce5","sizeBytes":5252157631},{"name":"model-00015-of-00015.safetensors","sha256":"e03cd427f534273d586bad3d9f7ff24d3eb838572dc5be7bc4bc98cdeba86d92","sizeBytes":3815843471},{"name":"model.safetensors.index.json","sha256":"7dd3ad9ef87bae38057d528bd92342bd6dadae4112113c2b55c8ee6ef67a85b4","sizeBytes":256576},{"name":"processor_config.json","sha256":"c64dadda906c723a428eedfe6263485a343c35adb64d24295a9b408c372aba31","sizeBytes":661},{"name":"tokenizer.json","sha256":"2ba5b3330fd84d5376fcca797cfb3b42eee6241ce23e3271e6fb2a115a8751bd","sizeBytes":17077420},{"name":"tokenizer_config.json","sha256":"776dd712367ab3da3e79c5008c6141b1f8912c74310410c4ed49827299b856d1","sizeBytes":21190}],"approxSizeBytes":78019864102,"quantization":"4bit"},"availableVersions":["1.0.1","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"muse-glimmer-30b-q4","name":"Muse Glimmer (30B, Q4)","description":"Meta Superintelligence Labs' Muse Glimmer at 30B parameters, distilled from the larger Muse Spark and built for long-horizon tool use on everyday hardware. Multimodal (text + image), 131K context, native tool calling, and adjustable reasoning effort. Meta's own build, sized for machines with 24GB+ memory.","tags":["meta","agentic","multimodal","vision","tools","long-context","reasoning"],"maintainer":{"name":"Meta Superintelligence Labs","url":"https://huggingface.co/meta-models/Muse-Glimmer-30B"},"license":"Apache-2.0","licenseClass":"open","licenseShortName":"Apache 2.0","minGezelVersion":"1.26227","version":"1.0.2","releasedAt":"2026-08-23T00:00:00Z","parameterSize":"30B","approxSizeBytes":16756681056,"supportsTools":true,"contextWindow":131072,"upstream":"https://huggingface.co/meta-models/Muse-Glimmer-30B","category":"general","style":{"family":"muse","reasoningFormat":"channel","toolCallFormat":"function-call"},"tuning":{"sampling":{"temperature":1,"topP":0.95,"topK":64,"maxTokens":8192},"reasoning":{"thinkingBudget":4096,"enableThinking":true,"templateKwargs":{"reasoning_strength":"high"}},"profiles":{"thinking-general":{"sampling":{"temperature":1,"topP":0.95,"topK":64,"maxTokens":8192},"reasoning":{"enableThinking":true,"templateKwargs":{"reasoning_strength":"high"}}},"thinking-coding":{"sampling":{"temperature":1,"topP":0.95,"topK":64,"maxTokens":16384},"reasoning":{"enableThinking":true,"templateKwargs":{"reasoning_strength":"xhigh"}}},"thinking-precise":{"sampling":{"temperature":0.6,"topP":0.9,"topK":64,"maxTokens":8192},"reasoning":{"enableThinking":true,"templateKwargs":{"reasoning_strength":"high"}}},"instruct":{"sampling":{"temperature":0.7,"topP":0.95,"topK":64,"maxTokens":4096},"reasoning":{"templateKwargs":{"reasoning_strength":"low"}}},"creative":{"sampling":{"temperature":1.1,"topP":0.95,"topK":64,"maxTokens":8192},"reasoning":{"templateKwargs":{"reasoning_strength":"low"}}}}},"llamaCpp":{"huggingfaceRepo":"meta-models/Muse-Glimmer-30B-GGUF","revision":"93769bc7ab5ad1e9cd22d857e3138cf5d977ae81","filename":"muse-glimmer-30B-kquant-17gb.gguf","sha256":"7e9b74b7c8875e9e265695df9613bf6290f2392e479ce740495a129019c488d8","approxSizeBytes":16756681056,"quantization":"Q4_K_M","mmproj":{"filename":"mmproj-kquant.gguf","sha256":"f48b452316f9b213758e8659444029b961a24a07f99a1abb2a9f88b06f7c00c6","sizeBytes":1400328928}},"availableVersions":["1.0.2","1.0.1","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"nemotron3.5-lightning-30b-q4","name":"Nemotron 3.5 Lightning (30B-A3B, Q4)","description":"NVIDIA's Nemotron 3.5 Lightning at 30B parameters — text-only, with native reasoning, native tool calling, and a 256K context window. Capable-tier on-device option: about 25GB of memory on most machines, about 18GB on Apple Silicon.","tags":["nvidia","reasoning","agentic","coding","tools","long-context","moe","hybrid","mamba","open-weights","apple-silicon"],"maintainer":{"name":"NVIDIA","url":"https://huggingface.co/nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16"},"license":"OpenMDW-1.1","licenseClass":"open","licenseShortName":"OpenMDW 1.1","licenseUrl":"https://huggingface.co/nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16/blob/main/LICENSE","minGezelVersion":"1.26227","version":"1.0.1","releasedAt":"2026-08-15T00:00:00Z","parameterSize":"30B","approxSizeBytes":25430738944,"supportsTools":true,"contextWindow":262144,"kvBytesPerTokenF16":6144,"upstream":"https://huggingface.co/nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16","category":"reasoning","style":{"family":"nemotron","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","prompt.private-reasoning-guidance","prompt.tool-cookbook-condensed","mcp.compact-tool-schemas","fabrication.detect-past-tense-no-tools","prompt.retrieval-first","prompt.workspace-gestalt","turn.preamble-folding","turn.ramble-detection","tools.mlx-grammar"],"tuning":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":16384},"samplingWhenThinking":{"temperature":1,"topP":0.95},"reasoning":{"thinkingBudget":8192,"enableThinking":true},"profiles":{"thinking-general":{"sampling":{"temperature":0.6,"topP":0.95,"maxTokens":16384},"reasoning":{"thinkingBudget":8192,"enableThinking":true}},"thinking-coding":{"sampling":{"temperature":0.6,"topP":0.95,"maxTokens":32768},"reasoning":{"thinkingBudget":12288,"enableThinking":true}},"thinking-precise":{"sampling":{"temperature":0.6,"topP":0.9,"maxTokens":8192,"seed":0},"reasoning":{"thinkingBudget":6144,"enableThinking":true}},"instruct":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":8192},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":16384},"reasoning":{"enableThinking":false}}}},"llamaCpp":{"huggingfaceRepo":"ggml-org/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-GGUF","revision":"88d7ce0b0fa385c5108866ce5d33690927531a37","filename":"NVIDIA-Nemotron-3.5-Lightning-30B-A3B-Q4_K_M.gguf","sha256":"6110e2e2e6cd324e6ee69ddced5a6b34fad6c94ca9827222a1e420fb92e3c90b","approxSizeBytes":25430738944,"quantization":"Q4_K_M"},"mlx":{"huggingfaceRepo":"mlx-community/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-4bit","revision":"55ac8c89261109b36c04371cd3f479a4594208c8","files":[{"name":"chat_template.jinja","sha256":"58933db77d3099b4f78c55a38347a72e1ea05b97d6bd8f38775303dc0194e0a9","sizeBytes":9867},{"name":"config.json","sha256":"2d4bdc543efd8ccd68fccbf1231b1d1216ab2a0482229ea5638d448127973b27","sizeBytes":2932},{"name":"generation_config.json","sha256":"0ed94823ae737b507aef6af01e837041b7aa2fb0306793a310cd201d89a31ff4","sizeBytes":210},{"name":"model-00001-of-00004.safetensors","sha256":"12e2ba8a7f0990b7e34ddb25cf4043fe39b105215fe61a0b7dc1447be6b247b3","sizeBytes":5118631442},{"name":"model-00002-of-00004.safetensors","sha256":"a095b11193a9d58e2c67c83bc2aff0eedde8f76b77ff8ee4781fe08f6c3f5363","sizeBytes":5291568433},{"name":"model-00003-of-00004.safetensors","sha256":"c55808e0cf33a6b957d34ab57caf4185c4aed49c6ef15c7c69683e7af7e892cc","sizeBytes":5291568429},{"name":"model-00004-of-00004.safetensors","sha256":"9c541daef892060fffb831afb9e20251ff18c492df7bacd0bfee4d8e43124d89","sizeBytes":2073657055},{"name":"model.safetensors.index.json","sha256":"4c12ae32746441ec65e94d8cf312462ac10ab0d3c80513bba3d1c1ca3f2ed9ca","sizeBytes":65410},{"name":"tokenizer.json","sha256":"623c34567aebb18582765289fbe23d901c62704d6518d71866e0e58db892b5b7","sizeBytes":17077484},{"name":"tokenizer_config.json","sha256":"ec380f0a6c0c2e294eb2435f5ec521fb2121cfc970e6ebf023d06829714a4eaa","sizeBytes":430}],"approxSizeBytes":17792581692,"quantization":"4bit"},"availableVersions":["1.0.1","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"nemotron3.5-lightning-30b-q8","name":"Nemotron 3.5 Lightning (30B-A3B, Q8)","description":"NVIDIA's Nemotron 3.5 Lightning at 30B parameters — text-only, with native reasoning, native tool calling, and a 256K context window. 8-bit quantization for higher fidelity than the Q4 build, at roughly a third more memory (about 35GB, or 34GB on Apple Silicon).","tags":["nvidia","reasoning","agentic","coding","tools","long-context","moe","hybrid","mamba","open-weights","apple-silicon"],"maintainer":{"name":"NVIDIA","url":"https://huggingface.co/nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16"},"license":"OpenMDW-1.1","licenseClass":"open","licenseShortName":"OpenMDW 1.1","licenseUrl":"https://huggingface.co/nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16/blob/main/LICENSE","minGezelVersion":"1.26227","version":"1.0.1","releasedAt":"2026-08-15T00:00:00Z","parameterSize":"30B","approxSizeBytes":35004642304,"supportsTools":true,"contextWindow":262144,"kvBytesPerTokenF16":6144,"upstream":"https://huggingface.co/nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16","category":"reasoning","style":{"family":"nemotron","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","prompt.private-reasoning-guidance","prompt.tool-cookbook-condensed","mcp.compact-tool-schemas","fabrication.detect-past-tense-no-tools","prompt.retrieval-first","prompt.workspace-gestalt","turn.preamble-folding","turn.ramble-detection","tools.mlx-grammar"],"tuning":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":16384},"samplingWhenThinking":{"temperature":1,"topP":0.95},"reasoning":{"thinkingBudget":8192,"enableThinking":true},"profiles":{"thinking-general":{"sampling":{"temperature":0.6,"topP":0.95,"maxTokens":16384},"reasoning":{"thinkingBudget":8192,"enableThinking":true}},"thinking-coding":{"sampling":{"temperature":0.6,"topP":0.95,"maxTokens":32768},"reasoning":{"thinkingBudget":12288,"enableThinking":true}},"thinking-precise":{"sampling":{"temperature":0.6,"topP":0.9,"maxTokens":8192,"seed":0},"reasoning":{"thinkingBudget":6144,"enableThinking":true}},"instruct":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":8192},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1,"topP":0.95,"maxTokens":16384},"reasoning":{"enableThinking":false}}}},"llamaCpp":{"huggingfaceRepo":"ggml-org/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-GGUF","revision":"88d7ce0b0fa385c5108866ce5d33690927531a37","filename":"NVIDIA-Nemotron-3.5-Lightning-30B-A3B-Q8_0.gguf","sha256":"8544826247d087745baf4e7540f6911608a61caba7a16702314946af5e4235ae","approxSizeBytes":35004642304,"quantization":"Q8_0"},"mlx":{"huggingfaceRepo":"mlx-community/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-8bit","revision":"881a85f9e84dac5ab1a61d4493739b5ef67efeaa","files":[{"name":"chat_template.jinja","sha256":"58933db77d3099b4f78c55a38347a72e1ea05b97d6bd8f38775303dc0194e0a9","sizeBytes":9867},{"name":"config.json","sha256":"a1b0135c0973322d188a836c86746e69ea07c02b241e1f26681bf5123345359b","sizeBytes":2932},{"name":"generation_config.json","sha256":"0ed94823ae737b507aef6af01e837041b7aa2fb0306793a310cd201d89a31ff4","sizeBytes":210},{"name":"model-00001-of-00007.safetensors","sha256":"7ce9d0b7b01bb133ebf089a65dbcce23dcf35d73eb28dfa20b639a21e86711f3","sizeBytes":5359226316},{"name":"model-00002-of-00007.safetensors","sha256":"ad229b96564455b865364db16918a557d55f21199e4ff7a9d0e0952e56c5c9e0","sizeBytes":5046688726},{"name":"model-00003-of-00007.safetensors","sha256":"a2c01a7ae42cc9881768fc3f4c1820a86c00766f8f88f154fd17e32d10ed1a46","sizeBytes":4963631598},{"name":"model-00004-of-00007.safetensors","sha256":"f9afcd3cedfc7e107b7e199fea995d105ee2ad56929fd3dd017ce6dd24ea9f55","sizeBytes":5051598289},{"name":"model-00005-of-00007.safetensors","sha256":"bf8ef73665e3d894d5badd01cef18a99e7da7dcc3a21c52c80a298976499420c","sizeBytes":4938766121},{"name":"model-00006-of-00007.safetensors","sha256":"bbd2d487828c3e2434ca181673023a1489699a6739c2725250ac0c91d5eb1e17","sizeBytes":5026732862},{"name":"model-00007-of-00007.safetensors","sha256":"01b0ace9963a901962e9bbe492d66faa5a0ed47b09ade9da5529375694fa770e","sizeBytes":3173319638},{"name":"model.safetensors.index.json","sha256":"14f9c8d6ff717ea35d64585e4f723544aa0964d7492c10dbf2e27a1ee29a87e5","sizeBytes":65410},{"name":"tokenizer.json","sha256":"623c34567aebb18582765289fbe23d901c62704d6518d71866e0e58db892b5b7","sizeBytes":17077484},{"name":"tokenizer_config.json","sha256":"ec380f0a6c0c2e294eb2435f5ec521fb2121cfc970e6ebf023d06829714a4eaa","sizeBytes":430}],"approxSizeBytes":33577119883,"quantization":"8bit"},"availableVersions":["1.0.1","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"nemotron3-nano-30b-q4","name":"Nemotron-3 Nano (30B, MoE Reasoning, Q4)","description":"NVIDIA's Nemotron-3 Nano Omni at 30B parameters, tuned for reasoning. Multimodal (text + image + audio + video), 128K context, native tool calling. Capable-tier on-device option for machines with 32GB+ memory.","tags":["nvidia","reasoning","moe","hybrid","tools","multimodal","vision","audio","video"],"maintainer":{"name":"NVIDIA","url":"https://huggingface.co/nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning"},"license":"NVIDIA Open Model License","licenseClass":"custom-restricted","licenseShortName":"NVIDIA Open Model","minGezelVersion":"1.26227","version":"1.0.2","releasedAt":"2026-08-15T00:00:00Z","parameterSize":"30B","approxSizeBytes":24515129536,"supportsTools":true,"contextWindow":131072,"upstream":"https://huggingface.co/nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning","category":"reasoning","style":{"family":"nemotron","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","prompt.private-reasoning-guidance","fabrication.detect-past-tense-no-tools","turn.preamble-folding","mcp.compact-tool-schemas"],"tuning":{"sampling":{"temperature":0.2,"topK":1},"samplingWhenThinking":{"temperature":0.6,"topP":0.95},"reasoning":{"thinkingBudget":8192,"enableThinking":true},"engine":{"llamaCpp":{"contextSize":98304}},"profiles":{"thinking-general":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"thinking-coding":{"sampling":{"temperature":0.4,"topP":0.95,"topK":20,"repetitionPenalty":1.05},"reasoning":{"thinkingBudget":6144,"enableThinking":true}},"thinking-precise":{"sampling":{"temperature":0.2,"topP":0.9,"topK":20,"seed":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"instruct":{"sampling":{"temperature":0.2,"topK":1},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":0.9,"topP":0.95,"topK":40},"reasoning":{"enableThinking":false}}}},"llamaCpp":{"huggingfaceRepo":"lmstudio-community/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-GGUF","revision":"49a5b1ae335e30e775d4eb03f822b52a63ea4271","filename":"Nemotron-3-Nano-Omni-30B-A3B-Reasoning-Q4_K_M.gguf","sha256":"e3efd3f173538eef6a422cfb20f273413348adfd75e14b846acf36943894ef43","approxSizeBytes":24515129536,"quantization":"Q4_K_M","mmproj":{"filename":"mmproj-Nemotron-3-Nano-Omni-30B-A3B-Reasoning-BF16.gguf","sha256":"0e46f4126eb65732c645262d78b2ac41955ced3de4643dddfa9892f68d08c9e9","sizeBytes":1589506176}},"mlx":{"huggingfaceRepo":"mlx-community/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-nvfp4","revision":"3f65bc48c603081c6ba89b63fdc23400ea087e38","files":[{"name":"chat_template.jinja","sha256":"41428e0c65e312c359df2495ef5284769a9520b15a693deda4c34a1538208faa","sizeBytes":14277},{"name":"config.json","sha256":"1fb89f29105b9fb455ee8e1dc88de963b95a631c7cc6a68d7e17d4aa24570aac","sizeBytes":9459},{"name":"generation_config.json","sha256":"dbe3dfa851ad1462c45beed3a9a35f02e24af5311d79e8b9de5a41428b3a8e7a","sizeBytes":309},{"name":"model-00001-of-00004.safetensors","sha256":"128a189c3e20c23b5199394b0c84f1dae226405f82081e5d559e3fb2c980b343","sizeBytes":5118626596},{"name":"model-00002-of-00004.safetensors","sha256":"a2097eb987352e665992af87edd101047e713a1f80cc34555254179033f00fe6","sizeBytes":5291563052},{"name":"model-00003-of-00004.safetensors","sha256":"1c77e0cb0d69884a9bb01e540fa43818c10f106bb447edbef5fe7a80b5a4f38b","sizeBytes":5291563074},{"name":"model-00004-of-00004.safetensors","sha256":"903b1ecdef13e3a80fe430a28143ffd4062337c6cd5e78ba9986a127fbd78a25","sizeBytes":3931693211},{"name":"model.safetensors.index.json","sha256":"09a169e3c52670cfe7ea95930139f17abed38144d2d220db5057e2e0ba000f13","sizeBytes":191231},{"name":"preprocessor_config.json","sha256":"e53c54889896ad6104a031f58831cf237e1416bfb16612d856213ce94a91df17","sizeBytes":342},{"name":"processor_config.json","sha256":"f7de807026c387af42011cc85058253b7cf39ddb5cb8cedf8927d7d2eb2c6ce7","sizeBytes":743},{"name":"special_tokens_map.json","sha256":"e3a4f63da745f02317a45e00e6476c17fc66ac41faf14bb1b0be1f3211b0ca53","sizeBytes":420},{"name":"tokenizer.json","sha256":"d0432ad8b1c2984a2e2dca82e1933e3fd5628df6e95c51fba4c3ee9950dce299","sizeBytes":17077366},{"name":"tokenizer_config.json","sha256":"1293fc27661bc2989b8c3b42db6ffbdfad87e35144b9b686eab2538b4c56c60e","sizeBytes":582}],"approxSizeBytes":19650740662,"quantization":"nvfp4"},"availableVersions":["1.0.2","1.0.1","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"nemotron3-super-120b-q4","name":"Nemotron-3 Super (120B-A12B, Q4)","description":"NVIDIA's flagship Nemotron-3 Super at 120B parameters, tuned for reasoning. Native tool calling, 128K context. Frontier-tier on-device reasoning for workstations and Mac Studio-class hardware — needs ~100GB of usable memory. No Apple Silicon build yet.","tags":["nvidia","reasoning","moe","hybrid","tools","large"],"maintainer":{"name":"NVIDIA","url":"https://huggingface.co/nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-BF16"},"license":"NVIDIA Open Model License","licenseClass":"custom-restricted","licenseShortName":"NVIDIA Open Model","minGezelVersion":"1.26227","version":"1.0.1","releasedAt":"2026-08-15T00:00:00Z","parameterSize":"120B","approxSizeBytes":86051079584,"supportsTools":true,"contextWindow":131072,"upstream":"https://huggingface.co/nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-BF16","category":"reasoning","style":{"family":"nemotron","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","prompt.private-reasoning-guidance","fabrication.detect-past-tense-no-tools","turn.preamble-folding"],"tuning":{"sampling":{"temperature":1,"topP":0.95},"reasoning":{"thinkingBudget":4096,"enableThinking":true},"profiles":{"thinking-general":{"sampling":{"temperature":0.7,"topP":0.95,"topK":20},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"thinking-coding":{"sampling":{"temperature":0.4,"topP":0.95,"topK":20},"reasoning":{"thinkingBudget":6144,"enableThinking":true}},"thinking-precise":{"sampling":{"temperature":0.2,"topP":0.9,"topK":20,"seed":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"instruct":{"sampling":{"temperature":0.7,"topP":0.9,"topK":40},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1,"topP":0.95,"topK":40},"reasoning":{"enableThinking":false}}}},"llamaCpp":{"huggingfaceRepo":"lmstudio-community/NVIDIA-Nemotron-3-Super-120B-A12B-GGUF","revision":"16410500b9bdc62081c34cc2dff52471e001f970","shards":[{"name":"NVIDIA-Nemotron-3-Super-120B-A12B-Q4_K_M-00001-of-00003.gguf","sha256":"2cf8e99b9b71babc5932eb594b1fe1f9b9e407a460a5b49b0625f0c25e0ba799","sizeBytes":39205633408},{"name":"NVIDIA-Nemotron-3-Super-120B-A12B-Q4_K_M-00002-of-00003.gguf","sha256":"770b505e6fe3b19b422b5b0dd06201b07218d0af99e72e69086208983fe54219","sizeBytes":39720681760},{"name":"NVIDIA-Nemotron-3-Super-120B-A12B-Q4_K_M-00003-of-00003.gguf","sha256":"7420107ccfc77230deaf57971ae84a58a18c4e6e035aa99cf0e25fbbc4c7614a","sizeBytes":7124764416}],"approxSizeBytes":86051079584,"quantization":"Q4_K_M"},"availableVersions":["1.0.1","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"ornith-35b-q4","name":"Ornith 1.0 (35B, Q4)","description":"DeepReinforce's Ornith 1.0 at 35B parameters — an agentic-coding model built for hands-on software work: reading a codebase, running tools, and seeing a change through. Native reasoning, native tool calling, 256K context. Capable-tier on-device option for machines with 32GB+ memory. MIT licensed.","tags":["deepreinforce","coding","agentic","tools","reasoning","long-context","moe"],"maintainer":{"name":"DeepReinforce","url":"https://huggingface.co/deepreinforce-ai"},"license":"MIT","licenseClass":"open","licenseShortName":"MIT","minGezelVersion":"1.26227","version":"1.0.1","releasedAt":"2026-08-15T00:00:00Z","parameterSize":"35B","approxSizeBytes":21200000000,"supportsTools":true,"contextWindow":262144,"kvBytesPerTokenF16":20480,"kvFixedBytesF16":64389120,"upstream":"https://huggingface.co/deepreinforce-ai/Ornith-1.0-35B","category":"coding","style":{"family":"qwen","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","prompt.private-reasoning-guidance","prompt.tool-cookbook-condensed","fabrication.detect-past-tense-no-tools","turn.ollama-num-predict-bumped","turn.preamble-folding","turn.ramble-detection","mcp.compact-tool-schemas"],"tuning":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":8192},"samplingWhenThinking":{"temperature":0.6,"topP":0.95},"reasoning":{"thinkingBudget":4096,"enableThinking":true},"promptTags":{"enableThinkingTag":"/think","disableThinkingTag":"/no_think"},"profiles":{"thinking-general":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":12288,"repetitionPenalty":1},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"thinking-coding":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":16384,"repetitionPenalty":1},"reasoning":{"thinkingBudget":6144,"enableThinking":true}},"thinking-precise":{"sampling":{"temperature":0.4,"topP":0.9,"topK":20,"minP":0,"maxTokens":6144,"seed":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"instruct":{"sampling":{"temperature":0.7,"topP":0.8,"topK":20,"minP":0,"maxTokens":4096,"repetitionPenalty":1,"presencePenalty":1.5},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1.1,"topP":0.95,"topK":40,"maxTokens":8192},"reasoning":{"enableThinking":false}}}},"llamaCpp":{"huggingfaceRepo":"deepreinforce-ai/Ornith-1.0-35B-GGUF","revision":"c2e1703039380de4ce6820e97afd185682d3c16c","filename":"ornith-1.0-35b-Q4_K_M.gguf","sha256":"ff25291b2599fb927a835e624d2b3540106af61761c3fa57ac4264046dbec002","approxSizeBytes":21166757760,"quantization":"Q4_K_M"},"mlx":{"huggingfaceRepo":"mlx-community/Ornith-1.0-35B-4bit","revision":"781f91090809411b7fc07449817f398a99feb188","files":[{"name":"chat_template.jinja","sha256":"182e77dd83bd8e9ca818b240b82e28f243762cd5dda32e6eef327df7b1cd107e","sizeBytes":7536},{"name":"config.json","sha256":"550efce0158addbcab424cfc92bdaa297138a949bfc71c724918994b7b692d2f","sizeBytes":24151},{"name":"generation_config.json","sha256":"896eeba60a1195e034dc6b9a7bbddd64b6174992348f5dc7d75daaa93d0bdd45","sizeBytes":213},{"name":"model-00001-of-00004.safetensors","sha256":"2a34b0daa08c1decdeb817301ec4927bfdfa5e573559a3f541f73834383b21d0","sizeBytes":5288196062},{"name":"model-00002-of-00004.safetensors","sha256":"5eab94545fdddd6db8c6d8cd54a3481ba26f2d9fc6d48ee47ea94951c631680b","sizeBytes":5368472657},{"name":"model-00003-of-00004.safetensors","sha256":"8fc467f4036656f488afc86776757ad3cbd4910ab9031f84bb28c55768a904fb","sizeBytes":5368324255},{"name":"model-00004-of-00004.safetensors","sha256":"c700f3b3a89d613dfaf5b430f8e3b70e1aeb0e5b7ad4fe3aebf8c64e3644ce17","sizeBytes":4377211327},{"name":"model.safetensors.index.json","sha256":"0b28df60e33753a14e816d3b31577ae2c93884c58430a4a6de6ae9ea483842ea","sizeBytes":215755},{"name":"preprocessor_config.json","sha256":"27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516","sizeBytes":390},{"name":"processor_config.json","sha256":"45fc17c8dd2474af6b493b52483c26c0584b0082d368c480f9fa611e73070040","sizeBytes":991},{"name":"tokenizer.json","sha256":"06b9509352d2af50381ab2247e083b80d32d5c0aba91c272ca9ff729b6a0e523","sizeBytes":19989325},{"name":"tokenizer_config.json","sha256":"792fa3f0cb88b111e54ef3134c873531008c4df471d108da17903426e308aa7b","sizeBytes":1165},{"name":"video_preprocessor_config.json","sha256":"7768af27c1fafa9cc9011c1dc20067e03f8915e03b63504550e11d5066986d13","sizeBytes":385},{"name":"vocab.json","sha256":"ce99b4cb2983d118806ce0a8b777a35b093e2000a503ebde25853284c9dfa003","sizeBytes":6722759}],"approxSizeBytes":20429166971,"quantization":"4bit"},"availableVersions":["1.0.1","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"ornith-35b-q8","name":"Ornith 1.0 (35B, Q8)","description":"DeepReinforce's Ornith 1.0 at 35B parameters — an agentic-coding model built for hands-on software work: reading a codebase, running tools, and seeing a change through. Native reasoning, native tool calling, 256K context. 8-bit quantization for higher fidelity than the Q4 build, at roughly double the memory footprint (~37GB). MIT licensed.","tags":["deepreinforce","coding","agentic","tools","reasoning","long-context","moe"],"maintainer":{"name":"DeepReinforce","url":"https://huggingface.co/deepreinforce-ai"},"license":"MIT","licenseClass":"open","licenseShortName":"MIT","minGezelVersion":"1.26227","version":"1.0.1","releasedAt":"2026-08-15T00:00:00Z","parameterSize":"35B","approxSizeBytes":37000000000,"supportsTools":true,"contextWindow":262144,"kvBytesPerTokenF16":20480,"kvFixedBytesF16":64389120,"upstream":"https://huggingface.co/deepreinforce-ai/Ornith-1.0-35B","category":"coding","style":{"family":"qwen","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","prompt.private-reasoning-guidance","prompt.tool-cookbook-condensed","fabrication.detect-past-tense-no-tools","turn.ollama-num-predict-bumped","turn.preamble-folding","turn.ramble-detection","mcp.compact-tool-schemas"],"tuning":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":8192},"samplingWhenThinking":{"temperature":0.6,"topP":0.95},"reasoning":{"thinkingBudget":4096,"enableThinking":true},"promptTags":{"enableThinkingTag":"/think","disableThinkingTag":"/no_think"},"profiles":{"thinking-general":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":12288,"repetitionPenalty":1},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"thinking-coding":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":16384,"repetitionPenalty":1},"reasoning":{"thinkingBudget":6144,"enableThinking":true}},"thinking-precise":{"sampling":{"temperature":0.4,"topP":0.9,"topK":20,"minP":0,"maxTokens":6144,"seed":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"instruct":{"sampling":{"temperature":0.7,"topP":0.8,"topK":20,"minP":0,"maxTokens":4096,"repetitionPenalty":1,"presencePenalty":1.5},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1.1,"topP":0.95,"topK":40,"maxTokens":8192},"reasoning":{"enableThinking":false}}}},"llamaCpp":{"huggingfaceRepo":"deepreinforce-ai/Ornith-1.0-35B-GGUF","revision":"c2e1703039380de4ce6820e97afd185682d3c16c","filename":"ornith-1.0-35b-Q8_0.gguf","sha256":"cbc992bca07901c1a51f33e65e6fc5d687de179c852a772dfd15e4c3261dbf5c","approxSizeBytes":36903138880,"quantization":"Q8_0"},"mlx":{"huggingfaceRepo":"mlx-community/Ornith-1.0-35B-8bit","revision":"28d10f45a04981989f5a2e53e38f6473e81e815a","files":[{"name":"chat_template.jinja","sha256":"182e77dd83bd8e9ca818b240b82e28f243762cd5dda32e6eef327df7b1cd107e","sizeBytes":7536},{"name":"config.json","sha256":"c1cfeef1ed8dc341d400c33d7a2a93b61d01b1a8b70bf8b8992550b09a5dfc07","sizeBytes":24151},{"name":"generation_config.json","sha256":"896eeba60a1195e034dc6b9a7bbddd64b6174992348f5dc7d75daaa93d0bdd45","sizeBytes":213},{"name":"model-00001-of-00008.safetensors","sha256":"356cbcbe9244d120e352782e7f8ab582f8a3125a0a82876c0bc43275b73ad217","sizeBytes":5329916013},{"name":"model-00002-of-00008.safetensors","sha256":"59f16e6cb8bce7a47a5c11458cac47307070c00984a0849e29f1873101f4e102","sizeBytes":5365573922},{"name":"model-00003-of-00008.safetensors","sha256":"449d965928a225fdb5f1d90e4ed0f718a3733dbe03ecc733d65daaf120fca526","sizeBytes":5358684668},{"name":"model-00004-of-00008.safetensors","sha256":"d6754fbc66cbc37c953843aeaf074546f8807860adc1ea7c067b3f747bd09f6c","sizeBytes":5365574194},{"name":"model-00005-of-00008.safetensors","sha256":"d4325c8eb40a2871674ca701340edecc7e753389a3c3ddb11365474a34cf7169","sizeBytes":5358684644},{"name":"model-00006-of-00008.safetensors","sha256":"43a4bd68352772825dfb79c0bd844031818994e953bbd1adb06f3dbb4d9b1e70","sizeBytes":5365574174},{"name":"model-00007-of-00008.safetensors","sha256":"1f6b3423dc7c560ae2ad43781b66ab92fe439cd684ab47be051c4bd45a0032b4","sizeBytes":5037050574},{"name":"model-00008-of-00008.safetensors","sha256":"259f82efaf13be9af40eb427d913a51c8bb340e57bfd8ea2b5cf629a5cb78de6","sizeBytes":540344667},{"name":"model.safetensors.index.json","sha256":"3db12edeebeb65cab9a6eeb63cd74be4e0c74139a75f672701290b98230501cf","sizeBytes":215755},{"name":"preprocessor_config.json","sha256":"27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516","sizeBytes":390},{"name":"processor_config.json","sha256":"45fc17c8dd2474af6b493b52483c26c0584b0082d368c480f9fa611e73070040","sizeBytes":991},{"name":"tokenizer.json","sha256":"06b9509352d2af50381ab2247e083b80d32d5c0aba91c272ca9ff729b6a0e523","sizeBytes":19989325},{"name":"tokenizer_config.json","sha256":"792fa3f0cb88b111e54ef3134c873531008c4df471d108da17903426e308aa7b","sizeBytes":1165},{"name":"video_preprocessor_config.json","sha256":"7768af27c1fafa9cc9011c1dc20067e03f8915e03b63504550e11d5066986d13","sizeBytes":385},{"name":"vocab.json","sha256":"ce99b4cb2983d118806ce0a8b777a35b093e2000a503ebde25853284c9dfa003","sizeBytes":6722759}],"approxSizeBytes":37748365526,"quantization":"8bit"},"availableVersions":["1.0.1","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"ornith-9b-q4","name":"Ornith 1.0 (9B, Q4)","description":"DeepReinforce's Ornith 1.0 at 9B parameters — an agentic-coding model built for hands-on software work. Native reasoning, native tool calling, 256K context. The small-tier pick for tool-heavy work on a 12GB+ inference budget. MIT licensed.","tags":["deepreinforce","coding","agentic","tools","reasoning","long-context"],"maintainer":{"name":"DeepReinforce","url":"https://huggingface.co/deepreinforce-ai"},"license":"MIT","licenseClass":"open","licenseShortName":"MIT","minGezelVersion":"1.26227","version":"1.0.1","releasedAt":"2026-08-15T00:00:00Z","parameterSize":"9B","approxSizeBytes":5600000000,"supportsTools":true,"contextWindow":262144,"kvBytesPerTokenF16":32768,"kvFixedBytesF16":51511296,"upstream":"https://huggingface.co/deepreinforce-ai/Ornith-1.0-9B","category":"coding","style":{"family":"qwen","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","prompt.private-reasoning-guidance","prompt.tool-cookbook-condensed","fabrication.detect-past-tense-no-tools","mcp.compact-tool-schemas","mcp.relax-required-fields","mcp.default-missing-fields","turn.ollama-num-predict-bumped","turn.preamble-folding","provider.merge-system-messages"],"tuning":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":16384},"samplingWhenThinking":{"temperature":0.6,"topP":0.95},"reasoning":{"thinkingBudget":2048,"enableThinking":true},"promptTags":{"enableThinkingTag":"/think","disableThinkingTag":"/no_think"},"profiles":{"thinking-general":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":12288,"repetitionPenalty":1},"reasoning":{"thinkingBudget":2048,"enableThinking":true}},"thinking-coding":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":16384,"repetitionPenalty":1},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"thinking-precise":{"sampling":{"temperature":0.4,"topP":0.9,"topK":20,"minP":0,"maxTokens":6144,"seed":0},"reasoning":{"thinkingBudget":2048,"enableThinking":true}},"instruct":{"sampling":{"temperature":0.7,"topP":0.8,"topK":20,"minP":0,"maxTokens":4096,"repetitionPenalty":1,"presencePenalty":1.5},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1.1,"topP":0.95,"topK":40,"maxTokens":8192},"reasoning":{"enableThinking":false}}}},"llamaCpp":{"huggingfaceRepo":"deepreinforce-ai/Ornith-1.0-9B-GGUF","revision":"3296bc7a404871a72ac3f1903f561459c09b5c17","filename":"ornith-1.0-9b-Q4_K_M.gguf","sha256":"5720d1f671b4996481274fffe01868c3c36e87c135cc8538471cc7bd6087b106","approxSizeBytes":5629108704,"quantization":"Q4_K_M"},"mlx":{"huggingfaceRepo":"mlx-community/Ornith-1.0-9B-4bit","revision":"1e980b9742a9e554a4d57e90b4c597811fb2fc4e","files":[{"name":"chat_template.jinja","sha256":"8b4d21a1e70ccbc8849e5e5e6dd32f3acfb2e2060739475909edc6e9b27c7165","sizeBytes":7594},{"name":"config.json","sha256":"e661291d14e6c4e239ae430d7a72ab1c947440ca89c94fc09be71ff0acb45c37","sizeBytes":3876},{"name":"generation_config.json","sha256":"be19d3c48cd249efd6e0327b69916caae8279007dd14c0aad86f7b6b28c5d148","sizeBytes":137},{"name":"model-00001-of-00002.safetensors","sha256":"60e62b00a2ff10d793aed5fe7efc40137e46c9d4028b14c84f1d170eef964beb","sizeBytes":5349769710},{"name":"model-00002-of-00002.safetensors","sha256":"736da49643bb8c64fa081f2415ce624f40e983be1fc590ad30e65af75cdd5a5a","sizeBytes":600449850},{"name":"model.safetensors.index.json","sha256":"4518e4d98baed265cb25c5adb45839d5b69e0b9700f4bd573533392097bbb874","sizeBytes":123592},{"name":"preprocessor_config.json","sha256":"27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516","sizeBytes":390},{"name":"processor_config.json","sha256":"45fc17c8dd2474af6b493b52483c26c0584b0082d368c480f9fa611e73070040","sizeBytes":991},{"name":"tokenizer.json","sha256":"06b9509352d2af50381ab2247e083b80d32d5c0aba91c272ca9ff729b6a0e523","sizeBytes":19989325},{"name":"tokenizer_config.json","sha256":"c908cd42c5e6eac721445fb70841e45845a6a269c6ef2c595e97a578a9724671","sizeBytes":1168},{"name":"video_preprocessor_config.json","sha256":"7768af27c1fafa9cc9011c1dc20067e03f8915e03b63504550e11d5066986d13","sizeBytes":385},{"name":"vocab.json","sha256":"ce99b4cb2983d118806ce0a8b777a35b093e2000a503ebde25853284c9dfa003","sizeBytes":6722759}],"approxSizeBytes":5977069777,"quantization":"4bit"},"availableVersions":["1.0.1","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"ornith1.5-35b-a3b-q4","name":"Ornith 1.5 (35B-A3B, Q4)","description":"Ornith AI's Ornith 1.5 at 35B total parameters with roughly 3B active per token — a self-improving, agentic-coding model trained for software engineering, tool use, and reasoning. The 4-bit build is the practical pick at this size, keeping fast MoE decode in a much smaller footprint than Q8, with native tool calling and a 256K context window. MIT licensed; best suited to machines with 32GB+ usable memory.","tags":["ornith","coding","agentic","tools","reasoning","long-context","moe"],"maintainer":{"name":"Ornith AI","url":"https://huggingface.co/ornith-ai"},"license":"MIT","licenseClass":"open","licenseShortName":"MIT","minGezelVersion":"1.26227","version":"1.0.0","releasedAt":"2026-08-27T00:00:00Z","parameterSize":"35B","approxSizeBytes":21713463040,"supportsTools":true,"contextWindow":262144,"kvBytesPerTokenF16":20480,"kvFixedBytesF16":64389120,"upstream":"https://huggingface.co/ornith-ai/Ornith-1.5-35B-A3B","category":"coding","style":{"family":"qwen","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","prompt.private-reasoning-guidance","prompt.tool-cookbook-condensed","fabrication.detect-past-tense-no-tools","turn.ollama-num-predict-bumped","turn.preamble-folding","turn.ramble-detection","mcp.compact-tool-schemas","tools.mlx-grammar"],"tuning":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":8192,"repetitionPenalty":1},"samplingWhenThinking":{"temperature":0.6,"topP":0.95},"reasoning":{"thinkingBudget":4096,"enableThinking":true},"promptTags":{"enableThinkingTag":"/think","disableThinkingTag":"/no_think"},"profiles":{"thinking-general":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":12288,"repetitionPenalty":1},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"thinking-coding":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":16384,"repetitionPenalty":1},"reasoning":{"thinkingBudget":6144,"enableThinking":true}},"thinking-precise":{"sampling":{"temperature":0.4,"topP":0.9,"topK":20,"minP":0,"maxTokens":6144,"seed":0,"repetitionPenalty":1},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"instruct":{"sampling":{"temperature":0.7,"topP":0.8,"topK":20,"minP":0,"maxTokens":4096,"repetitionPenalty":1,"presencePenalty":1.5},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1.1,"topP":0.95,"topK":40,"maxTokens":8192},"reasoning":{"enableThinking":false}}}},"llamaCpp":{"huggingfaceRepo":"ornith-ai/Ornith-1.5-35B-A3B-GGUF","revision":"12393612fd4f730ff5aadc23e9b8f9648aa49ceb","filename":"Ornith-1.5-35B-Q4_K_M.gguf","sha256":"42739874cc2ccfdb8523b23fbe52e29b2a7555c8176737ca9ca0b5d59859d41f","approxSizeBytes":21713463040,"quantization":"Q4_K_M"},"mlx":{"huggingfaceRepo":"ornith-ai/Ornith-1.5-35B-A3B-MLX-4bit","revision":"19504d912fa8fc7622bf6b1de3db5d5d890b1f02","files":[{"name":"chat_template.jinja","sha256":"182e77dd83bd8e9ca818b240b82e28f243762cd5dda32e6eef327df7b1cd107e","sizeBytes":7536},{"name":"config.json","sha256":"fc27b922c3506e955271c68120be9079ad8bba7266c8086c02dfbb8c98723bd5","sizeBytes":23203},{"name":"generation_config.json","sha256":"e70c136c1b78ddc1fb0905bac8e733a4dc448d4f852a5dd75143fffc70be550e","sizeBytes":202},{"name":"model-00001-of-00004.safetensors","sha256":"f0b2b03fb3eecf84096ee5abb213c99e9c3725f9947004a01999dc5cc55ebdd9","sizeBytes":5343699466},{"name":"model-00002-of-00004.safetensors","sha256":"971b1935112c4221616ddab04ead15d50b3c489754e619d74304dc4f64d034dc","sizeBytes":5368472837},{"name":"model-00003-of-00004.safetensors","sha256":"041377369466c48cb486ce2911c3cce638b8702080bb39113a7cf190632f5529","sizeBytes":5368324245},{"name":"model-00004-of-00004.safetensors","sha256":"d1088c7f6e9d705a253d3049bf7308704ccf1f4099cf40678ff077da88f0184b","sizeBytes":3428527653},{"name":"model.safetensors.index.json","sha256":"c118f13c0dcb729e4ca2e3d653ab193067551eb1a6410badb5192eb426104f36","sizeBytes":187263},{"name":"tokenizer.json","sha256":"06b9509352d2af50381ab2247e083b80d32d5c0aba91c272ca9ff729b6a0e523","sizeBytes":19989325},{"name":"tokenizer_config.json","sha256":"386ba246ba3dfa4d3a21d8bc8712eba38de558e5ac94c2c90436d8f94d519d5e","sizeBytes":1160}],"approxSizeBytes":19529232890,"quantization":"4bit","disabledReason":"The official MLX conversion omits 393 vision-tower parameters while declaring the multimodal Qwen3.5 architecture, so mlx-vlm cannot construct the checkpoint."},"availableVersions":["1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"ornith1.5-35b-a3b-q8","name":"Ornith 1.5 (35B-A3B, Q8)","description":"Ornith AI's Ornith 1.5 at 35B total parameters with roughly 3B active per token — a self-improving, agentic-coding model trained for software engineering, tool use, and reasoning. The 8-bit build preserves more fidelity than Q4 while retaining fast MoE decode, with native tool calling and a 256K context window. MIT licensed; best suited to machines with 48GB+ usable memory.","tags":["ornith","coding","agentic","tools","reasoning","long-context","moe"],"maintainer":{"name":"Ornith AI","url":"https://huggingface.co/ornith-ai"},"license":"MIT","licenseClass":"open","licenseShortName":"MIT","minGezelVersion":"1.26227","version":"1.0.0","releasedAt":"2026-08-19T00:00:00Z","parameterSize":"35B","approxSizeBytes":36850134517,"supportsTools":true,"contextWindow":262144,"kvBytesPerTokenF16":20480,"kvFixedBytesF16":64389120,"upstream":"https://huggingface.co/ornith-ai/Ornith-1.5-35B-A3B","category":"coding","style":{"family":"qwen","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","prompt.private-reasoning-guidance","prompt.tool-cookbook-condensed","fabrication.detect-past-tense-no-tools","turn.ollama-num-predict-bumped","turn.preamble-folding","turn.ramble-detection","mcp.compact-tool-schemas","tools.mlx-grammar"],"tuning":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":8192,"repetitionPenalty":1},"samplingWhenThinking":{"temperature":0.6,"topP":0.95},"reasoning":{"thinkingBudget":4096,"enableThinking":true},"promptTags":{"enableThinkingTag":"/think","disableThinkingTag":"/no_think"},"profiles":{"thinking-general":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":12288,"repetitionPenalty":1},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"thinking-coding":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":16384,"repetitionPenalty":1},"reasoning":{"thinkingBudget":6144,"enableThinking":true}},"thinking-precise":{"sampling":{"temperature":0.4,"topP":0.9,"topK":20,"minP":0,"maxTokens":6144,"seed":0,"repetitionPenalty":1},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"instruct":{"sampling":{"temperature":0.7,"topP":0.8,"topK":20,"minP":0,"maxTokens":4096,"repetitionPenalty":1,"presencePenalty":1.5},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1.1,"topP":0.95,"topK":40,"maxTokens":8192},"reasoning":{"enableThinking":false}}}},"llamaCpp":{"huggingfaceRepo":"ornith-ai/Ornith-1.5-35B-A3B-GGUF","revision":"5ae357e3eaf951ae221e8d784c71a8a3cdb6aa5f","filename":"Ornith-1.5-35B-Q8_0.gguf","sha256":"854cf83f80cd37a061ed86df1fa7201162e4e1fb820b91068cc12a11d2746c9e","approxSizeBytes":37802149120,"quantization":"Q8_0"},"mlx":{"huggingfaceRepo":"ornith-ai/Ornith-1.5-35B-A3B-MLX-8bit","revision":"42e87ef9eb541877dfbd497a1bd3d765b09d3191","files":[{"name":"chat_template.jinja","sha256":"182e77dd83bd8e9ca818b240b82e28f243762cd5dda32e6eef327df7b1cd107e","sizeBytes":7536},{"name":"config.json","sha256":"99ea92ebd3d749cbecad2a85327193b3aa5d7635e1416c5d31ec487082406d53","sizeBytes":23203},{"name":"generation_config.json","sha256":"e70c136c1b78ddc1fb0905bac8e733a4dc448d4f852a5dd75143fffc70be550e","sizeBytes":202},{"name":"model-00001-of-00007.safetensors","sha256":"a195a70b050e72c4adf357d5130fd10375d370dcb729bb64a114f9d364198c0c","sizeBytes":5332146247},{"name":"model-00002-of-00007.safetensors","sha256":"51e214cd9b9912930458f525ebab05b536ebe8e255cd20914f57cf615b5d429f","sizeBytes":5358684441},{"name":"model-00003-of-00007.safetensors","sha256":"1ba1d27677f32e3c23f1f9d7cb69acc2e3a9eafe14e18240c521082f70ad182c","sizeBytes":5365574222},{"name":"model-00004-of-00007.safetensors","sha256":"ff68dde1ed5170af0b07429558c06b716a5404f63f2e2f0af77e8f0cd72ed498","sizeBytes":5358684656},{"name":"model-00005-of-00007.safetensors","sha256":"8e36a2581814d5a0df550379ad83742b71abd793e5fe54ceb51dcf1434d6826b","sizeBytes":5365574220},{"name":"model-00006-of-00007.safetensors","sha256":"e8e5bd7c6e4e285121a714742580eb42f7c909d5164e333e189509f54f1bc18c","sizeBytes":5358684638},{"name":"model-00007-of-00007.safetensors","sha256":"91c6f632a3447f3e64abc623ea04e950ea1428214c739835d4b129532d30db54","sizeBytes":4688874137},{"name":"model.safetensors.index.json","sha256":"83c641a791aa957df7d280eef1b0c8faf7a2ec9b19dd3355fb13abae8ae0ed15","sizeBytes":187263},{"name":"tokenizer.json","sha256":"06b9509352d2af50381ab2247e083b80d32d5c0aba91c272ca9ff729b6a0e523","sizeBytes":19989325},{"name":"tokenizer_config.json","sha256":"386ba246ba3dfa4d3a21d8bc8712eba38de558e5ac94c2c90436d8f94d519d5e","sizeBytes":1160}],"approxSizeBytes":36848431250,"quantization":"8bit","disabledReason":"The official MLX conversion omits 393 vision-tower parameters while declaring the multimodal Qwen3.5 architecture, so mlx-vlm cannot construct the checkpoint."},"availableVersions":["1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"ornith1.5-9b-q4","name":"Ornith 1.5 (9B, Q4)","description":"Ornith AI's dense 9B Ornith 1.5 model — a compact self-improving agentic coder trained for software engineering, tool use, and reasoning. The 4-bit build offers the practical small-tier balance of quality and memory use, with native tool calling and a 256K context window. MIT licensed; best suited to machines with 12GB+ usable memory.","tags":["ornith","coding","agentic","tools","reasoning","long-context"],"maintainer":{"name":"Ornith AI","url":"https://huggingface.co/ornith-ai"},"license":"MIT","licenseClass":"open","licenseShortName":"MIT","minGezelVersion":"1.26227","version":"1.0.1","releasedAt":"2026-08-29T00:00:00Z","parameterSize":"9B","approxSizeBytes":5629108992,"supportsTools":true,"contextWindow":262144,"upstream":"https://huggingface.co/ornith-ai/Ornith-1.5-9B","category":"coding","style":{"family":"qwen","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","prompt.private-reasoning-guidance","prompt.tool-cookbook-condensed","fabrication.detect-past-tense-no-tools","turn.ollama-num-predict-bumped","turn.preamble-folding","turn.ramble-detection","mcp.compact-tool-schemas","mcp.relax-required-fields","mcp.default-missing-fields","prompt.retrieval-first","tools.mlx-grammar"],"tuning":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":8192,"repetitionPenalty":1},"samplingWhenThinking":{"temperature":0.6,"topP":0.95},"reasoning":{"thinkingBudget":4096,"enableThinking":true},"promptTags":{"enableThinkingTag":"/think","disableThinkingTag":"/no_think"},"profiles":{"thinking-general":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":12288,"repetitionPenalty":1},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"thinking-coding":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":16384,"repetitionPenalty":1},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"thinking-precise":{"sampling":{"temperature":0.4,"topP":0.9,"topK":20,"minP":0,"maxTokens":6144,"seed":0,"repetitionPenalty":1},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"instruct":{"sampling":{"temperature":0.7,"topP":0.8,"topK":20,"minP":0,"maxTokens":4096,"repetitionPenalty":1,"presencePenalty":1.5},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1.1,"topP":0.95,"topK":40,"maxTokens":8192},"reasoning":{"enableThinking":false}}}},"llamaCpp":{"huggingfaceRepo":"ornith-ai/Ornith-1.5-9B-GGUF","revision":"85bf2b98cdcbad4291cb4f46943526cc089f75a0","filename":"Ornith-1.5-9B-Q4_K_M.gguf","sha256":"7d791afcb31812acc88cd5aafc675391df28c6fc3d8eae002bb4e6cc3d8cfd8d","approxSizeBytes":5629108992,"quantization":"Q4_K_M"},"mlx":{"huggingfaceRepo":"ornith-ai/Ornith-1.5-9B-MLX-4bit","revision":"a48173b246ac705be75c05bedf1a0666db522d53","files":[{"name":"chat_template.jinja","sha256":"9dd2fbd270feaa1fbef2d4f634d7887c9c506e3bde140f8e7351c8944e8fd235","sizeBytes":7593},{"name":"config.json","sha256":"7ddc5bb8c3057edaa0a3337c1721312a8f3d28ad587b77dd6ac075876929d95d","sizeBytes":3084},{"name":"model.safetensors","sha256":"c022a4c4b8de62c75306e2442fd78161ff49bce85fe7abb308c5ad5d04454a26","sizeBytes":5038161163},{"name":"model.safetensors.index.json","sha256":"215f9abadc1cea4d465b01c036dffcac5a84c2fb2386777863eff6928b91ed0b","sizeBytes":81194},{"name":"tokenizer.json","sha256":"06b9509352d2af50381ab2247e083b80d32d5c0aba91c272ca9ff729b6a0e523","sizeBytes":19989325},{"name":"tokenizer_config.json","sha256":"386ba246ba3dfa4d3a21d8bc8712eba38de558e5ac94c2c90436d8f94d519d5e","sizeBytes":1160}],"approxSizeBytes":5058243519,"quantization":"4bit","drafter":{"huggingfaceRepo":"Bendyline/Ornith-1.5-9B-mtp-drafter-mlx-4bit","revision":"079839102462e41fcc8020ba2cf5a41af982823b","kind":"mtp","files":[{"name":"config.json","sha256":"012a563afc610c562c02d3360ca912eb843ad4c544a5896b7e8420033ed51d47","sizeBytes":2328},{"name":"model.safetensors","sha256":"28914322560cc5f60b38966ce2bb1f69bb7a513a1491c3a757bdcf24ded9b940","sizeBytes":136884332},{"name":"tokenizer_config.json","sha256":"316230d6a809701f4db5ea8f8fc862bc3a6f3229c937c174e674ff3ca0a64ac8","sizeBytes":16710}],"approxSizeBytes":136903370,"residentBytes":492783595}},"availableVersions":["1.0.1","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"ornith1.5-9b-q8","name":"Ornith 1.5 (9B, Q8)","description":"Ornith AI's dense 9B Ornith 1.5 model — a compact self-improving agentic coder trained for software engineering, tool use, and reasoning. This 8-bit build prioritizes fidelity while staying practical on Apple Silicon, with native tool calling and a 256K context window. MIT licensed; best suited to machines with 16GB+ usable memory.","tags":["ornith","coding","agentic","tools","reasoning","long-context"],"maintainer":{"name":"Ornith AI","url":"https://huggingface.co/ornith-ai"},"license":"MIT","licenseClass":"open","licenseShortName":"MIT","minGezelVersion":"1.26227","version":"1.0.1","releasedAt":"2026-08-29T00:00:00Z","parameterSize":"9B","approxSizeBytes":9534628340,"supportsTools":true,"contextWindow":262144,"upstream":"https://huggingface.co/ornith-ai/Ornith-1.5-9B","category":"coding","style":{"family":"qwen","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","prompt.private-reasoning-guidance","prompt.tool-cookbook-condensed","fabrication.detect-past-tense-no-tools","turn.ollama-num-predict-bumped","turn.preamble-folding","turn.ramble-detection","mcp.compact-tool-schemas","mcp.relax-required-fields","mcp.default-missing-fields","prompt.retrieval-first","tools.mlx-grammar"],"tuning":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":8192,"repetitionPenalty":1},"samplingWhenThinking":{"temperature":0.6,"topP":0.95},"reasoning":{"thinkingBudget":4096,"enableThinking":true},"promptTags":{"enableThinkingTag":"/think","disableThinkingTag":"/no_think"},"profiles":{"thinking-general":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":12288,"repetitionPenalty":1},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"thinking-coding":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":16384,"repetitionPenalty":1},"reasoning":{"thinkingBudget":6144,"enableThinking":true}},"thinking-precise":{"sampling":{"temperature":0.4,"topP":0.9,"topK":20,"minP":0,"maxTokens":6144,"seed":0,"repetitionPenalty":1},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"instruct":{"sampling":{"temperature":0.7,"topP":0.8,"topK":20,"minP":0,"maxTokens":4096,"repetitionPenalty":1,"presencePenalty":1.5},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1.1,"topP":0.95,"topK":40,"maxTokens":8192},"reasoning":{"enableThinking":false}}}},"llamaCpp":{"huggingfaceRepo":"ornith-ai/Ornith-1.5-9B-GGUF","revision":"85bf2b98cdcbad4291cb4f46943526cc089f75a0","filename":"Ornith-1.5-9B-Q8_0.gguf","sha256":"6874eeb25c71081dc8f0bbe88f3ebb786312447132745371cd980bce95d259b9","approxSizeBytes":9527501248,"quantization":"Q8_0"},"mlx":{"huggingfaceRepo":"ornith-ai/Ornith-1.5-9B-MLX-8bit","revision":"c66111f39e6c07aa98dd566f019cfa79a1cd5782","files":[{"name":"chat_template.jinja","sha256":"9dd2fbd270feaa1fbef2d4f634d7887c9c506e3bde140f8e7351c8944e8fd235","sizeBytes":7593},{"name":"config.json","sha256":"45e0cb999e819bb8394ac6ffc317683ca492ece1f6b2c86cefdd0e533919b395","sizeBytes":3084},{"name":"model-00001-of-00002.safetensors","sha256":"f66e0c3f49a399269845824135d92f91e8f8be9830a49cefb5985f884b13dc09","sizeBytes":5346606498},{"name":"model-00002-of-00002.safetensors","sha256":"4f2b6a779d7c42eee7ee932aea1b6bea0dbbce54acc2231962a20a1616a60fbe","sizeBytes":4167925581},{"name":"model.safetensors.index.json","sha256":"d11d30241db3acd6c2e2b5eea59b2ca0f2ca63776aa91f025699e4307a4d0370","sizeBytes":95099},{"name":"tokenizer.json","sha256":"06b9509352d2af50381ab2247e083b80d32d5c0aba91c272ca9ff729b6a0e523","sizeBytes":19989325},{"name":"tokenizer_config.json","sha256":"386ba246ba3dfa4d3a21d8bc8712eba38de558e5ac94c2c90436d8f94d519d5e","sizeBytes":1160}],"approxSizeBytes":9534628340,"quantization":"8bit","drafter":{"huggingfaceRepo":"Bendyline/Ornith-1.5-9B-mtp-drafter-mlx-4bit","revision":"079839102462e41fcc8020ba2cf5a41af982823b","kind":"mtp","files":[{"name":"config.json","sha256":"012a563afc610c562c02d3360ca912eb843ad4c544a5896b7e8420033ed51d47","sizeBytes":2328},{"name":"model.safetensors","sha256":"28914322560cc5f60b38966ce2bb1f69bb7a513a1491c3a757bdcf24ded9b940","sizeBytes":136884332},{"name":"tokenizer_config.json","sha256":"316230d6a809701f4db5ea8f8fc862bc3a6f3229c937c174e674ff3ca0a64ac8","sizeBytes":16710}],"approxSizeBytes":136903370,"residentBytes":492783595}},"availableVersions":["1.0.1","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"qwen3.5-122b-a10b-q4","name":"Qwen 3.5 (122B-A10B, Q4)","description":"Alibaba's Qwen 3.5 flagship open-weight model: 122B total parameters with 10B active per token, sparse MoE/Gated DeltaNet architecture, multimodal text + image + video support, native tool calling, and 262K native context extensible to roughly 1M tokens. Workstation-tier on-device option via Q4 GGUF or MLX 4-bit; expect around 90GB of usable memory before large KV-cache workloads.","tags":["alibaba","multimodal","vision","video","tools","long-context","moe","reasoning","large"],"maintainer":{"name":"Alibaba","url":"https://huggingface.co/Qwen/Qwen3.5-122B-A10B"},"license":"Apache-2.0","licenseClass":"open","licenseShortName":"Apache 2.0","minGezelVersion":"1.26227","version":"1.0.3","releasedAt":"2026-08-15T00:00:00Z","parameterSize":"122B","approxSizeBytes":78260403200,"supportsTools":true,"contextWindow":262144,"upstream":"https://huggingface.co/Qwen/Qwen3.5-122B-A10B","category":"general","style":{"family":"qwen","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","prompt.private-reasoning-guidance","prompt.tool-cookbook-condensed","prompt.meester-build-prelude","fabrication.detect-past-tense-no-tools","fabrication.detect-claim-without-tool","mcp.relax-required-fields","mcp.default-missing-fields","turn.ollama-num-predict-bumped","turn.preamble-folding","turn.ramble-detection","tools.mlx-grammar","provider.merge-system-messages","validate.inline-js-parses","prompt.prefer-writefile-edits","prompt.derive-by-execution"],"tuning":{"sampling":{"temperature":1,"topP":0.95,"topK":20,"minP":0,"maxTokens":16384,"repetitionPenalty":1,"presencePenalty":1.5},"samplingWhenThinking":{"temperature":0.6,"topP":0.95},"reasoning":{"thinkingBudget":4096,"enableThinking":true},"engine":{"llamaCpp":{"spec":{"mtp":true,"nMax":4}}},"profiles":{"thinking-general":{"sampling":{"temperature":1,"topP":0.95,"topK":20,"minP":0,"maxTokens":12288,"repetitionPenalty":1,"presencePenalty":1.5},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"thinking-coding":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":16384,"repetitionPenalty":1,"presencePenalty":0},"reasoning":{"thinkingBudget":6144,"enableThinking":true}},"thinking-precise":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":6144,"seed":0,"repetitionPenalty":1,"presencePenalty":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"instruct":{"sampling":{"temperature":0.7,"topP":0.8,"topK":20,"minP":0,"maxTokens":4096,"repetitionPenalty":1,"presencePenalty":1.5},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1,"topP":1,"topK":40,"minP":0,"maxTokens":8192,"repetitionPenalty":1,"presencePenalty":2},"reasoning":{"enableThinking":false}}}},"llamaCpp":{"huggingfaceRepo":"unsloth/Qwen3.5-122B-A10B-MTP-GGUF","revision":"907becb33103ab66b23da06a2dc74a5fca0583bd","shards":[{"name":"UD-Q4_K_M/Qwen3.5-122B-A10B-UD-Q4_K_M-00001-of-00003.gguf","sha256":"2faef922e80dcb9558c5a358510244a7c0bb96868b974a359dac87ce52a84316","sizeBytes":10943808},{"name":"UD-Q4_K_M/Qwen3.5-122B-A10B-UD-Q4_K_M-00002-of-00003.gguf","sha256":"d4ea910bb66552114eab0eee7b3c01c4bc490210855cffa400bd6bed065259ed","sizeBytes":49995868640},{"name":"UD-Q4_K_M/Qwen3.5-122B-A10B-UD-Q4_K_M-00003-of-00003.gguf","sha256":"985f36efe05d1bd8ed50bfb17f1294b6957b8f343e14fed0d7ec7c81b739d32a","sizeBytes":28253590752}],"approxSizeBytes":78260403200,"quantization":"UD-Q4_K_M","mmproj":{"filename":"mmproj-BF16.gguf","sha256":"8f2442758a6f5a2bbfbbddb4b160b08ff4e29c3a76cad7627a0fe2beca2325e6","sizeBytes":912263776}},"mlx":{"huggingfaceRepo":"mlx-community/Qwen3.5-122B-A10B-4bit","revision":"e9c67b08899964be5fdd069bb1b4bc8907fe68f5","files":[{"name":"chat_template.jinja","sha256":"a4aee8afcf2e0711942cf848899be66016f8d14a889ff9ede07bca099c28f715","sizeBytes":7756},{"name":"config.json","sha256":"fc1c3921b5146143cda7a5feed445cc31c8929cc3f164f967ec6340b448086eb","sizeBytes":4063},{"name":"generation_config.json","sha256":"303aba891d66ab63908a7b3cc9163bcb835fdf8b9f6301c73216f3f1eb3992dd","sizeBytes":244},{"name":"model-00001-of-00014.safetensors","sha256":"a2e5982d8ae4087ef151c5faab112a4a1d4b511a399dd4c83390183cf9dc2bed","sizeBytes":5117191884},{"name":"model-00002-of-00014.safetensors","sha256":"617d0276db85950faff4d7e8a253940addcb05137f6374d95d0a9c83e752f883","sizeBytes":5199749275},{"name":"model-00003-of-00014.safetensors","sha256":"a96a3a6e837c1f2dea15f312ed85189c1887c04b94bbf0e9bd4ce400f4514991","sizeBytes":5199749313},{"name":"model-00004-of-00014.safetensors","sha256":"fb70d290b16264828109df54b627e448fefbe3477c2772a0c36bc6e8cbbdadb3","sizeBytes":5144114566},{"name":"model-00005-of-00014.safetensors","sha256":"d396eef8d4fe4911bdf6dcc0e219f60fa55922baae647929c9f2fa00d26abab6","sizeBytes":5199749511},{"name":"model-00006-of-00014.safetensors","sha256":"19f338fdd7ac3f9246addcb9ec387f28f129a3b36082ebb8f90de20abea10ad2","sizeBytes":5199749419},{"name":"model-00007-of-00014.safetensors","sha256":"ef428dd92ed6ee5a7d4e32dd8caba3919cb2963040b11e26fbeae98191e23f7f","sizeBytes":5144114570},{"name":"model-00008-of-00014.safetensors","sha256":"e7c877102c7f1e572838cce84d83890478ca45a3dd6f603d923da2bd9fc68cf5","sizeBytes":5199749483},{"name":"model-00009-of-00014.safetensors","sha256":"4fb3c12704e6010312fd8c377ec15b0f582ca5772e61d67dd4e28c91decc56ce","sizeBytes":5199749473},{"name":"model-00010-of-00014.safetensors","sha256":"a1de2cfcb5c251578bde9cec23c4d02ed2c37be3de4b5a8a30f5168078aa5a07","sizeBytes":5144114588},{"name":"model-00011-of-00014.safetensors","sha256":"b8f6fc3bdf62bad1d0db747bafff02a8c179172508bf5ed08d625690f8bac2d1","sizeBytes":5199749481},{"name":"model-00012-of-00014.safetensors","sha256":"bd42762181ba345e1b092b95384d575b37fe402ad191796b6eab2d38d8b7d357","sizeBytes":5199749423},{"name":"model-00013-of-00014.safetensors","sha256":"e240d793b2b925df9564ff934ce2da30ba81f72c78fa1671cffe6958fc7fcbe8","sizeBytes":5149742812},{"name":"model-00014-of-00014.safetensors","sha256":"aeee4503d75b5d55bd65e001cb4d781bacac886529351cfa7593e9d9fb25ecb0","sizeBytes":2296363141},{"name":"model.safetensors.index.json","sha256":"e6bbd20503bb8f43b7df32983a5711e7fb54785807c296614801d7209ab40222","sizeBytes":253155},{"name":"preprocessor_config.json","sha256":"27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516","sizeBytes":390},{"name":"processor_config.json","sha256":"14932921ca485d458a04dafd8069fbb0a4505622a48208d19ed247115801385b","sizeBytes":1300},{"name":"tokenizer.json","sha256":"87a7830d63fcf43bf241c3c5242e96e62dd3fdc29224ca26fed8ea333db72de4","sizeBytes":19989343},{"name":"tokenizer_config.json","sha256":"e98f1901ac6f0adff67b1d540bfa0c36ac1a0cf59eb72ed78146ef89aafa1182","sizeBytes":1139},{"name":"video_preprocessor_config.json","sha256":"7768af27c1fafa9cc9011c1dc20067e03f8915e03b63504550e11d5066986d13","sizeBytes":385},{"name":"vocab.json","sha256":"ce99b4cb2983d118806ce0a8b777a35b093e2000a503ebde25853284c9dfa003","sizeBytes":6722759}],"approxSizeBytes":69620617473,"quantization":"4bit"},"availableVersions":["1.0.3","1.0.2","1.0.1","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"qwen3.5-2b-q4","name":"Qwen 3.5 (2B, Q4)","description":"Alibaba's Qwen 3.5 at 2B parameters. Multimodal (text + images) with native tool calling and a 256K context window. A very compact choice for constrained devices.","tags":["alibaba","multimodal","vision","tools","small"],"maintainer":{"name":"Alibaba","url":"https://ollama.com/library/qwen3.5"},"license":"Apache-2.0","licenseClass":"open","licenseShortName":"Apache 2.0","minGezelVersion":"1.26227","version":"1.1.3","releasedAt":"2026-08-15T00:00:00Z","parameterSize":"2B","approxSizeBytes":1329851808,"supportsTools":true,"contextWindow":256000,"upstream":"https://ollama.com/library/qwen3.5","category":"general","style":{"family":"qwen","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","prompt.private-reasoning-guidance","prompt.tool-cookbook-full","fabrication.detect-past-tense-no-tools","mcp.compact-tool-schemas","mcp.relax-required-fields","mcp.default-missing-fields",{"id":"turn.continuation-budget","config":{"count":4}},"turn.ollama-num-predict-bumped","turn.preamble-folding","turn.ramble-detection","tools.mlx-grammar","prompt.prefer-writefile-edits","prompt.derive-by-execution"],"tuning":{"sampling":{"temperature":0.7,"topP":0.8,"topK":20,"minP":0},"samplingWhenThinking":{"temperature":0.6,"topP":0.95},"reasoning":{"thinkingBudget":2048,"enableThinking":true},"promptTags":{"enableThinkingTag":"/think","disableThinkingTag":"/no_think"},"engine":{"llamaCpp":{"spec":{"mtp":true,"nMax":4}}},"profiles":{"thinking-general":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"repetitionPenalty":1.05}},"thinking-coding":{"sampling":{"temperature":0.5,"topP":0.9,"topK":20,"repetitionPenalty":1.05}},"thinking-precise":{"sampling":{"temperature":0.3,"topP":0.9,"topK":10,"repetitionPenalty":1.05}},"instruct":{"sampling":{"temperature":0.7,"topP":0.8,"topK":20,"repetitionPenalty":1.1}},"creative":{"sampling":{"temperature":0.9,"topP":0.95,"topK":40,"repetitionPenalty":1.1}}}},"ollama":{"tag":"qwen3.5:2b"},"llamaCpp":{"huggingfaceRepo":"unsloth/Qwen3.5-2B-MTP-GGUF","revision":"e05864f8066d874d5f85aaff007ae57a2a7d1efe","filename":"Qwen3.5-2B-Q4_K_M.gguf","sha256":"18c92228fc1498a02506f64593f7cc8cc02f406f732a217c6ba99ad1254d4f0b","approxSizeBytes":1329851808,"quantization":"Q4_K_M"},"mlx":{"huggingfaceRepo":"mlx-community/Qwen3.5-2B-4bit","revision":"674aaa7240b91e8012fcad5d791b7dfe5ba90207","files":[{"name":"chat_template.jinja","sha256":"273d8e0e683b885071fb17e08d71e5f2a5ddfb5309756181681de4f5a1822d80","sizeBytes":7755},{"name":"config.json","sha256":"beb7fc5a6e0405fe332821cf1a8ef7b69bb390a8c8933171647de5579debf949","sizeBytes":3113},{"name":"model.safetensors","sha256":"713fe7e5d3c3965f7106b0d0ee17615f7869c23c8d327996df8c1196fbcf07d5","sizeBytes":1722271785},{"name":"model.safetensors.index.json","sha256":"8294c05cca7d53a6c33e3db2b379539bd296d054e0b689711b16b6ac93c7e49d","sizeBytes":81722},{"name":"preprocessor_config.json","sha256":"27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516","sizeBytes":390},{"name":"processor_config.json","sha256":"14932921ca485d458a04dafd8069fbb0a4505622a48208d19ed247115801385b","sizeBytes":1300},{"name":"tokenizer.json","sha256":"87a7830d63fcf43bf241c3c5242e96e62dd3fdc29224ca26fed8ea333db72de4","sizeBytes":19989343},{"name":"tokenizer_config.json","sha256":"e98f1901ac6f0adff67b1d540bfa0c36ac1a0cf59eb72ed78146ef89aafa1182","sizeBytes":1139},{"name":"video_preprocessor_config.json","sha256":"7768af27c1fafa9cc9011c1dc20067e03f8915e03b63504550e11d5066986d13","sizeBytes":385},{"name":"vocab.json","sha256":"ce99b4cb2983d118806ce0a8b777a35b093e2000a503ebde25853284c9dfa003","sizeBytes":6722759}],"approxSizeBytes":1749079691,"quantization":"4bit"},"availableVersions":["1.1.3","1.1.2","1.1.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"qwen3.5-4b-q4","name":"Qwen 3.5 (4B, Q4)","description":"Alibaba's Qwen 3.5 at 4B parameters. Multimodal (text + images) with native tool calling and a 256K context window. A balanced compact default for modern laptops.","tags":["alibaba","multimodal","vision","tools"],"maintainer":{"name":"Alibaba","url":"https://ollama.com/library/qwen3.5"},"license":"Apache-2.0","licenseClass":"open","licenseShortName":"Apache 2.0","minGezelVersion":"1.26227","version":"1.1.3","releasedAt":"2026-08-15T00:00:00Z","parameterSize":"4B","approxSizeBytes":2834975040,"supportsTools":true,"contextWindow":256000,"upstream":"https://ollama.com/library/qwen3.5","category":"general","style":{"family":"qwen","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["provider.merge-system-messages","reasoning.strip-think-tags","prompt.private-reasoning-guidance","prompt.tool-cookbook-condensed","fabrication.detect-past-tense-no-tools","mcp.compact-tool-schemas","mcp.relax-required-fields","mcp.default-missing-fields","turn.ollama-num-predict-bumped","turn.preamble-folding","turn.ramble-detection","tools.mlx-grammar","prompt.prefer-writefile-edits","prompt.derive-by-execution"],"tuning":{"sampling":{"temperature":0.7,"topP":0.8,"topK":20,"minP":0},"samplingWhenThinking":{"temperature":0.6,"topP":0.95},"reasoning":{"thinkingBudget":2048,"enableThinking":true},"promptTags":{"enableThinkingTag":"/think","disableThinkingTag":"/no_think"},"engine":{"llamaCpp":{"spec":{"mtp":true,"nMax":4}}},"profiles":{"thinking-general":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"repetitionPenalty":1.05}},"thinking-coding":{"sampling":{"temperature":0.5,"topP":0.9,"topK":20,"repetitionPenalty":1.05}},"thinking-precise":{"sampling":{"temperature":0.3,"topP":0.9,"topK":10,"repetitionPenalty":1.05}},"instruct":{"sampling":{"temperature":0.7,"topP":0.8,"topK":20,"repetitionPenalty":1.1}},"creative":{"sampling":{"temperature":0.9,"topP":0.95,"topK":40,"repetitionPenalty":1.1}}}},"ollama":{"tag":"qwen3.5:4b"},"llamaCpp":{"huggingfaceRepo":"unsloth/Qwen3.5-4B-MTP-GGUF","revision":"86835bf9949e4d14d6860f7910b1340ad4f271a9","filename":"Qwen3.5-4B-Q4_K_M.gguf","sha256":"3874209241c9a397e2f62cd3f70f80fd2dfbf0dfccb6838416bdb48a714e8630","approxSizeBytes":2834975040,"quantization":"Q4_K_M"},"mlx":{"huggingfaceRepo":"mlx-community/Qwen3.5-4B-4bit","revision":"0e7ffd5c629ef7719d4cbc04069232580bfa9d9c","files":[{"name":"chat_template.jinja","sha256":"a4aee8afcf2e0711942cf848899be66016f8d14a889ff9ede07bca099c28f715","sizeBytes":7756},{"name":"config.json","sha256":"f3efc81b2ea8d96a45301037d3ccccbcccdef44a961845c87f286aaddbc6eaaa","sizeBytes":3366},{"name":"model.safetensors","sha256":"5fb9acd0246866381cf8c5c354c6db1019f6498eec4ccb4f5edcc71ffeacb2db","sizeBytes":3034300695},{"name":"model.safetensors.index.json","sha256":"52e534c41f7b97708329c85f762e5882bf48bd5955a422c6ae74eba321e6048a","sizeBytes":101944},{"name":"preprocessor_config.json","sha256":"27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516","sizeBytes":390},{"name":"processor_config.json","sha256":"14932921ca485d458a04dafd8069fbb0a4505622a48208d19ed247115801385b","sizeBytes":1300},{"name":"tokenizer.json","sha256":"87a7830d63fcf43bf241c3c5242e96e62dd3fdc29224ca26fed8ea333db72de4","sizeBytes":19989343},{"name":"tokenizer_config.json","sha256":"e98f1901ac6f0adff67b1d540bfa0c36ac1a0cf59eb72ed78146ef89aafa1182","sizeBytes":1139},{"name":"video_preprocessor_config.json","sha256":"7768af27c1fafa9cc9011c1dc20067e03f8915e03b63504550e11d5066986d13","sizeBytes":385},{"name":"vocab.json","sha256":"ce99b4cb2983d118806ce0a8b777a35b093e2000a503ebde25853284c9dfa003","sizeBytes":6722759}],"approxSizeBytes":3061129077,"quantization":"4bit"},"availableVersions":["1.1.3","1.1.2","1.1.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"qwen3.5-9b-q4","name":"Qwen 3.5 (9B, Q4)","description":"Alibaba's Qwen 3.5 at 9B parameters. Multimodal (text + images), native tool calling, 256K context. Strong reasoning + tool use for devices with a 12GB+ inference budget — the small-tier sweet spot for tool-heavy work.","tags":["alibaba","multimodal","vision","tools"],"maintainer":{"name":"Alibaba","url":"https://ollama.com/library/qwen3.5"},"license":"Apache-2.0","licenseClass":"open","licenseShortName":"Apache 2.0","minGezelVersion":"1.26227","version":"1.1.3","releasedAt":"2026-08-15T00:00:00Z","parameterSize":"9B","approxSizeBytes":5868826976,"supportsTools":true,"contextWindow":262144,"upstream":"https://ollama.com/library/qwen3.5","category":"general","style":{"family":"qwen","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","prompt.private-reasoning-guidance","prompt.tool-cookbook-condensed","prompt.meester-build-prelude","fabrication.detect-past-tense-no-tools","fabrication.detect-claim-without-tool","mcp.compact-tool-schemas","mcp.relax-required-fields","mcp.default-missing-fields","turn.ollama-num-predict-bumped","turn.preamble-folding","turn.ramble-detection","tools.mlx-grammar","provider.merge-system-messages","validate.inline-js-parses","prompt.prefer-writefile-edits","prompt.derive-by-execution"],"tuning":{"sampling":{"temperature":0.7,"topP":0.8,"topK":20,"minP":0,"maxTokens":16384,"repetitionPenalty":1.1,"repetitionContext":20},"samplingWhenThinking":{"temperature":0.6,"topP":0.95},"reasoning":{"thinkingBudget":2048,"enableThinking":true},"promptTags":{"enableThinkingTag":"/think","disableThinkingTag":"/no_think"},"engine":{"llamaCpp":{"spec":{"mtp":true,"nMax":4}}},"profiles":{"thinking-general":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"repetitionPenalty":1.05}},"thinking-coding":{"sampling":{"temperature":0.5,"topP":0.9,"topK":20,"repetitionPenalty":1.05,"repetitionContext":32,"dry":{"multiplier":0.8,"base":1.75,"allowedLength":2}}},"thinking-precise":{"sampling":{"temperature":0.3,"topP":0.9,"topK":10,"repetitionPenalty":1.05}},"instruct":{"sampling":{"temperature":0.7,"topP":0.8,"topK":20,"repetitionPenalty":1.1}},"creative":{"sampling":{"temperature":0.9,"topP":0.95,"topK":40,"repetitionPenalty":1.1}}}},"ollama":{"tag":"qwen3.5:9b"},"llamaCpp":{"huggingfaceRepo":"unsloth/Qwen3.5-9B-MTP-GGUF","revision":"9716a636ee4bddc3fed678220b7a33dd2a4160ae","filename":"Qwen3.5-9B-Q4_K_M.gguf","sha256":"e8dd94817e95d6c0939102049d068418269978377b13616c4726235e232841fe","approxSizeBytes":5868826976,"quantization":"Q4_K_M"},"mlx":{"huggingfaceRepo":"mlx-community/Qwen3.5-9B-4bit","revision":"8b2b98c00a6b4d291155e4890773ca8f769aee53","files":[{"name":"chat_template.jinja","sha256":"a4aee8afcf2e0711942cf848899be66016f8d14a889ff9ede07bca099c28f715","sizeBytes":7756},{"name":"config.json","sha256":"a96942cb6a8a1d3f1d17514d81a1925d04362a6a3233b389d13012211baaa9f8","sizeBytes":3331},{"name":"model-00001-of-00002.safetensors","sha256":"a68b87558c6ef43f74c2bd63ce7e9092ceddc3101f3def0030774bae5f42aadd","sizeBytes":5349771222},{"name":"model-00002-of-00002.safetensors","sha256":"b0a770bf8469c7f3f18756a0e0283f1c1174344a83e059a4e483f6af4907352d","sizeBytes":600449850},{"name":"model.safetensors.index.json","sha256":"dd023913fb87cfdae27fb11dcf695117c925833796ccac3c64117d6652d8ff1e","sizeBytes":123592},{"name":"preprocessor_config.json","sha256":"27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516","sizeBytes":390},{"name":"processor_config.json","sha256":"14932921ca485d458a04dafd8069fbb0a4505622a48208d19ed247115801385b","sizeBytes":1300},{"name":"tokenizer.json","sha256":"87a7830d63fcf43bf241c3c5242e96e62dd3fdc29224ca26fed8ea333db72de4","sizeBytes":19989343},{"name":"tokenizer_config.json","sha256":"e98f1901ac6f0adff67b1d540bfa0c36ac1a0cf59eb72ed78146ef89aafa1182","sizeBytes":1139},{"name":"video_preprocessor_config.json","sha256":"7768af27c1fafa9cc9011c1dc20067e03f8915e03b63504550e11d5066986d13","sizeBytes":385},{"name":"vocab.json","sha256":"ce99b4cb2983d118806ce0a8b777a35b093e2000a503ebde25853284c9dfa003","sizeBytes":6722759}],"approxSizeBytes":5977071067,"quantization":"4bit"},"availableVersions":["1.1.3","1.1.2","1.1.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"qwen3.6-27b-q4","name":"Qwen 3.6 (27B, Q4)","description":"Alibaba's Qwen 3.6 at 27B parameters. Multimodal (text + image + video), 256K native context, explicit native tool-calling support. Capable-tier on-device option for machines with 24GB+ memory.","tags":["alibaba","multimodal","vision","video","tools","long-context"],"maintainer":{"name":"Alibaba","url":"https://ollama.com/library/qwen3.6"},"license":"Apache-2.0","licenseClass":"open","licenseShortName":"Apache 2.0","recoScore":20,"minGezelVersion":"1.26227","version":"1.1.6","releasedAt":"2026-08-29T00:00:00Z","parameterSize":"27B","approxSizeBytes":17106773120,"supportsTools":true,"contextWindow":262144,"upstream":"https://ollama.com/library/qwen3.6","category":"general","style":{"family":"qwen","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","provider.merge-system-messages","mcp.compact-tool-schemas","provider.compact-write-transcript","fabrication.detect-past-tense-no-tools","turn.ollama-num-predict-bumped","turn.preamble-folding","turn.ramble-detection","tools.mlx-grammar","prompt.derive-by-execution"],"tuning":{"sampling":{"temperature":0.7,"topP":0.8,"topK":20,"minP":0,"maxTokens":8192},"samplingWhenThinking":{"temperature":0.6,"topP":0.95},"reasoning":{"thinkingBudget":4096,"enableThinking":true},"promptTags":{"enableThinkingTag":"/think","disableThinkingTag":"/no_think"},"engine":{"llamaCpp":{"spec":{"mtp":true,"nMax":4}}},"profiles":{"thinking-general":{"sampling":{"temperature":0.8,"topP":0.95,"topK":20,"minP":0,"maxTokens":12288,"repetitionPenalty":1},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"thinking-coding":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":16384,"repetitionPenalty":1},"reasoning":{"thinkingBudget":6144,"enableThinking":true}},"thinking-precise":{"sampling":{"temperature":0.4,"topP":0.9,"topK":20,"minP":0,"maxTokens":6144,"seed":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"instruct":{"sampling":{"temperature":0.7,"topP":0.8,"topK":20,"minP":0,"maxTokens":4096,"repetitionPenalty":1,"presencePenalty":1.5},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1.1,"topP":0.95,"topK":40,"maxTokens":8192},"reasoning":{"enableThinking":false}}}},"ollama":{"tag":"qwen3.6"},"llamaCpp":{"huggingfaceRepo":"unsloth/Qwen3.6-27B-MTP-GGUF","revision":"5cb35eb3dcbf52dbce5f87dbc64df6aaffadcace","filename":"Qwen3.6-27B-Q4_K_M.gguf","sha256":"a7cbd3ecc0e3f9b333edee61ae66bc87ed713c5d49587a8355814722ed329e0f","approxSizeBytes":17106773120,"quantization":"Q4_K_M"},"mlx":{"huggingfaceRepo":"mlx-community/Qwen3.6-27B-4bit","revision":"c000ac2c2057d94be3fa931000c31723aac53282","files":[{"name":"chat_template.jinja","sha256":"e84f32a23fdda27689f868aa4a1a5621f41133e51a48d7f3efcbea2839574259","sizeBytes":7764},{"name":"config.json","sha256":"ede24666ac51e6d5ab948a8a1e6c72fc6effd941ba3aabb6dd942eb517c78043","sizeBytes":4573},{"name":"generation_config.json","sha256":"e70c136c1b78ddc1fb0905bac8e733a4dc448d4f852a5dd75143fffc70be550e","sizeBytes":202},{"name":"model-00001-of-00003.safetensors","sha256":"2689680915661f040c50c35244d08b336def279e509e1ca11873f8dd1b0e7ce0","sizeBytes":5343268752},{"name":"model-00002-of-00003.safetensors","sha256":"a46183727b2c5cd16613fd8395f5e9e7cc4ad679644558cc87c9406fe334463d","sizeBytes":5354185100},{"name":"model-00003-of-00003.safetensors","sha256":"ac23bf70b1f239a040921d6f93770d74176fd435dbf44e42317053d06c68d702","sizeBytes":5357087747},{"name":"model.safetensors.index.json","sha256":"13b840162b4cb35c66fef7df072f7dbb4717908204364f5e5d9f9655a2758fa8","sizeBytes":218281},{"name":"preprocessor_config.json","sha256":"27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516","sizeBytes":390},{"name":"processor_config.json","sha256":"51c5f33646392e0bf1ed3e96be02504da47406c21c6cb86925d8908d1a6c4da7","sizeBytes":1312},{"name":"tokenizer.json","sha256":"87a7830d63fcf43bf241c3c5242e96e62dd3fdc29224ca26fed8ea333db72de4","sizeBytes":19989343},{"name":"tokenizer_config.json","sha256":"e98f1901ac6f0adff67b1d540bfa0c36ac1a0cf59eb72ed78146ef89aafa1182","sizeBytes":1139},{"name":"video_preprocessor_config.json","sha256":"7768af27c1fafa9cc9011c1dc20067e03f8915e03b63504550e11d5066986d13","sizeBytes":385},{"name":"vocab.json","sha256":"ce99b4cb2983d118806ce0a8b777a35b093e2000a503ebde25853284c9dfa003","sizeBytes":6722759}],"approxSizeBytes":16081487747,"quantization":"4bit","drafter":{"huggingfaceRepo":"mlx-community/Qwen3.6-27B-MTP-4bit","revision":"83795d546e9d328160e593fb0bf10b2bf2fe637e","kind":"mtp","files":[{"name":"config.json","sha256":"64c2cf173fc259540fa39f6f07ccfa51359a3d7be76c2d0e8b9fdecbe4446b0d","sizeBytes":3779},{"name":"model.safetensors","sha256":"b9983c04801d7ad28e2f49cc7517ff3e8bfff9d2346255dcf7478f42165c0539","sizeBytes":238934137},{"name":"tokenizer_config.json","sha256":"5186f0defcd7f232382c7f0aebcd2252d073bb921ab240e407b7ae8745d2b29b","sizeBytes":16718}],"approxSizeBytes":238954634,"residentBytes":860162893}},"availableVersions":["1.1.6","1.1.5","1.1.4","1.1.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"qwen3.6-27b-q8","name":"Qwen 3.6 (27B, Q8)","description":"Alibaba's Qwen 3.6 at 27B parameters, 8-bit quantization for higher fidelity than the Q4 build (at roughly double the memory footprint). Multimodal (text + image + video), 256K native context, explicit native tool-calling support. For machines with ~40GB+ memory.","tags":["alibaba","multimodal","vision","video","tools","long-context"],"maintainer":{"name":"Alibaba","url":"https://ollama.com/library/qwen3.6"},"license":"Apache-2.0","licenseClass":"open","licenseShortName":"Apache 2.0","recoScore":20,"minGezelVersion":"1.26227","version":"1.0.4","releasedAt":"2026-08-29T00:00:00Z","parameterSize":"27B","approxSizeBytes":29047084160,"supportsTools":true,"contextWindow":262144,"upstream":"https://ollama.com/library/qwen3.6","category":"general","style":{"family":"qwen","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","mcp.compact-tool-schemas","fabrication.detect-past-tense-no-tools","turn.ollama-num-predict-bumped","turn.preamble-folding","turn.ramble-detection","tools.mlx-grammar","prompt.derive-by-execution"],"tuning":{"sampling":{"temperature":0.7,"topP":0.8,"topK":20,"minP":0,"maxTokens":8192},"samplingWhenThinking":{"temperature":0.6,"topP":0.95},"reasoning":{"thinkingBudget":4096,"enableThinking":true},"promptTags":{"enableThinkingTag":"/think","disableThinkingTag":"/no_think"},"engine":{"llamaCpp":{"spec":{"mtp":true,"nMax":4}}},"profiles":{"thinking-general":{"sampling":{"temperature":0.8,"topP":0.95,"topK":20,"minP":0,"maxTokens":12288,"repetitionPenalty":1},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"thinking-coding":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":16384,"repetitionPenalty":1},"reasoning":{"thinkingBudget":6144,"enableThinking":true}},"thinking-precise":{"sampling":{"temperature":0.4,"topP":0.9,"topK":20,"minP":0,"maxTokens":6144,"seed":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"instruct":{"sampling":{"temperature":0.7,"topP":0.8,"topK":20,"minP":0,"maxTokens":4096,"repetitionPenalty":1,"presencePenalty":1.5},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1.1,"topP":0.95,"topK":40,"maxTokens":8192},"reasoning":{"enableThinking":false}}}},"llamaCpp":{"huggingfaceRepo":"unsloth/Qwen3.6-27B-MTP-GGUF","revision":"5cb35eb3dcbf52dbce5f87dbc64df6aaffadcace","filename":"Qwen3.6-27B-Q8_0.gguf","sha256":"9408dcb356cc061a05c139e5647cbde0698ff980c6a69f7fc214e9989f86cfa8","approxSizeBytes":29047084160,"quantization":"Q8_0"},"mlx":{"huggingfaceRepo":"mlx-community/Qwen3.6-27B-8bit","revision":"c5a593c1475a746e43a543b0a02bd2b357e5745f","files":[{"name":"chat_template.jinja","sha256":"e84f32a23fdda27689f868aa4a1a5621f41133e51a48d7f3efcbea2839574259","sizeBytes":7764},{"name":"config.json","sha256":"93f5fa0d6c683b2278a5505337d0d756bbf4e633f9432dd15633aac50a87e55e","sizeBytes":4573},{"name":"generation_config.json","sha256":"e70c136c1b78ddc1fb0905bac8e733a4dc448d4f852a5dd75143fffc70be550e","sizeBytes":202},{"name":"model-00001-of-00006.safetensors","sha256":"f824099df8957f3d5e773c2faad5316ed6e43cdc8e41497e4f6c96bb87bb160d","sizeBytes":5317707349},{"name":"model-00002-of-00006.safetensors","sha256":"6b0ac8faafe5ed25f5c19ffe74b5ea9980c18d04baf4d98169db1c67a2ed35e5","sizeBytes":5354102528},{"name":"model-00003-of-00006.safetensors","sha256":"4923f72bbfcfab5749a9a8d88f654515bbf15e3f6f01f3199ff67a5f50c58f85","sizeBytes":5354184654},{"name":"model-00004-of-00006.safetensors","sha256":"e0ee725dd0fc3cc7ca2a94734f18f9ab5ea3bdfa0c749353687d6f3442c0ab64","sizeBytes":5337309675},{"name":"model-00005-of-00006.safetensors","sha256":"e6731a152f2ec3773526354b7104e9be1231b2bc9b1ec9cd033e2cc4470480ec","sizeBytes":5292848520},{"name":"model-00006-of-00006.safetensors","sha256":"5c8550886d4bd9249079cf1cb1e4cd572e8e491f5db60ae8a78e957be1dadb24","sizeBytes":2845065535},{"name":"model.safetensors.index.json","sha256":"4301ca600788afb2a45c0aa367140d6144ecf617d0a51a8187fc6755d65301f8","sizeBytes":218281},{"name":"preprocessor_config.json","sha256":"27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516","sizeBytes":390},{"name":"processor_config.json","sha256":"51c5f33646392e0bf1ed3e96be02504da47406c21c6cb86925d8908d1a6c4da7","sizeBytes":1312},{"name":"tokenizer.json","sha256":"87a7830d63fcf43bf241c3c5242e96e62dd3fdc29224ca26fed8ea333db72de4","sizeBytes":19989343},{"name":"tokenizer_config.json","sha256":"e98f1901ac6f0adff67b1d540bfa0c36ac1a0cf59eb72ed78146ef89aafa1182","sizeBytes":1139},{"name":"video_preprocessor_config.json","sha256":"7768af27c1fafa9cc9011c1dc20067e03f8915e03b63504550e11d5066986d13","sizeBytes":385},{"name":"vocab.json","sha256":"ce99b4cb2983d118806ce0a8b777a35b093e2000a503ebde25853284c9dfa003","sizeBytes":6722759}],"approxSizeBytes":29528164409,"quantization":"8bit","drafter":{"huggingfaceRepo":"mlx-community/Qwen3.6-27B-MTP-4bit","revision":"83795d546e9d328160e593fb0bf10b2bf2fe637e","kind":"mtp","files":[{"name":"config.json","sha256":"64c2cf173fc259540fa39f6f07ccfa51359a3d7be76c2d0e8b9fdecbe4446b0d","sizeBytes":3779},{"name":"model.safetensors","sha256":"b9983c04801d7ad28e2f49cc7517ff3e8bfff9d2346255dcf7478f42165c0539","sizeBytes":238934137},{"name":"tokenizer_config.json","sha256":"5186f0defcd7f232382c7f0aebcd2252d073bb921ab240e407b7ae8745d2b29b","sizeBytes":16718}],"approxSizeBytes":238954634,"residentBytes":860162893}},"availableVersions":["1.0.4","1.0.3","1.0.2","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"qwen3.6-35b-a3b-q4","name":"Qwen 3.6 (35B-A3B, Q4)","description":"Alibaba's Qwen 3.6 at 35B total parameters with only 3B active per token (Mixture-of-Experts: 256 experts, 8 routed + 1 shared). Multimodal (text + image + video), 256K native context (extensible to ~1M with YaRN), explicit native tool-calling support. MoE sparsity keeps inference light despite the larger total parameter count.","tags":["alibaba","multimodal","vision","video","tools","long-context","moe"],"maintainer":{"name":"Alibaba","url":"https://huggingface.co/Qwen/Qwen3.6-35B-A3B"},"license":"Apache-2.0","licenseClass":"open","licenseShortName":"Apache 2.0","recoScore":20,"minGezelVersion":"1.26227","version":"1.0.3","releasedAt":"2026-08-29T00:00:00Z","parameterSize":"35B","approxSizeBytes":22663387424,"supportsTools":true,"contextWindow":262144,"upstream":"https://huggingface.co/Qwen/Qwen3.6-35B-A3B","category":"general","style":{"family":"qwen","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["provider.merge-system-messages","reasoning.strip-think-tags","mcp.compact-tool-schemas","prompt.private-reasoning-guidance","prompt.tool-cookbook-condensed","fabrication.detect-past-tense-no-tools","turn.ollama-num-predict-bumped","turn.preamble-folding","turn.ramble-detection","tools.mlx-grammar"],"tuning":{"sampling":{"temperature":0.7,"topP":0.8,"topK":20,"minP":0,"maxTokens":8192},"samplingWhenThinking":{"temperature":0.6,"topP":0.95},"reasoning":{"thinkingBudget":4096,"enableThinking":true},"promptTags":{"enableThinkingTag":"/think","disableThinkingTag":"/no_think"},"engine":{"llamaCpp":{"spec":{"mtp":true,"nMax":4}}},"profiles":{"thinking-general":{"sampling":{"temperature":0.8,"topP":0.95,"topK":20,"minP":0,"maxTokens":12288,"repetitionPenalty":1},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"thinking-coding":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":16384,"repetitionPenalty":1},"reasoning":{"thinkingBudget":6144,"enableThinking":true}},"thinking-precise":{"sampling":{"temperature":0.4,"topP":0.9,"topK":20,"minP":0,"maxTokens":6144,"seed":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"instruct":{"sampling":{"temperature":0.7,"topP":0.8,"topK":20,"minP":0,"maxTokens":4096,"repetitionPenalty":1,"presencePenalty":1.5},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1.1,"topP":0.95,"topK":40,"maxTokens":8192},"reasoning":{"enableThinking":false}}}},"llamaCpp":{"huggingfaceRepo":"unsloth/Qwen3.6-35B-A3B-MTP-GGUF","revision":"5bc3e238d916f48a861bac2f8a1990a0e9b7e98d","filename":"Qwen3.6-35B-A3B-UD-Q4_K_M.gguf","sha256":"0b21525e972670ed59e1812e170b27c26355381f0656ecc4e25617ece7dac58b","approxSizeBytes":22663387424,"quantization":"UD-Q4_K_M"},"mlx":{"huggingfaceRepo":"mlx-community/Qwen3.6-35B-A3B-4bit","revision":"38740b847e4cb78f352aba30aa41c76e08e6eb46","files":[{"name":"chat_template.jinja","sha256":"e84f32a23fdda27689f868aa4a1a5621f41133e51a48d7f3efcbea2839574259","sizeBytes":7764},{"name":"config.json","sha256":"a822a9e48b0aafbe3144ec37d4fb067e178ed96615ce6e4420b3149893cc5767","sizeBytes":23591},{"name":"generation_config.json","sha256":"e70c136c1b78ddc1fb0905bac8e733a4dc448d4f852a5dd75143fffc70be550e","sizeBytes":202},{"name":"model-00001-of-00004.safetensors","sha256":"09f3e6ecb0b7af6e6a38bc8169a134c821b0924c2679b2bb8f4426ad38d032b8","sizeBytes":5288196018},{"name":"model-00002-of-00004.safetensors","sha256":"31dcdb1c49eebdb1505bd14e3cb33f9cf900bd2546b638f2464694ae763a033f","sizeBytes":5368472749},{"name":"model-00003-of-00004.safetensors","sha256":"3e66de06a1f03dade16a612a368cfce4a4c9caa4efd7d28185454384082cec03","sizeBytes":5368324139},{"name":"model-00004-of-00004.safetensors","sha256":"a5d0cf03519c26f8b506df6b0ba60526e5c08c8cea22d0c21ce92950e58a5422","sizeBytes":4377211365},{"name":"model.safetensors.index.json","sha256":"0b28df60e33753a14e816d3b31577ae2c93884c58430a4a6de6ae9ea483842ea","sizeBytes":215755},{"name":"preprocessor_config.json","sha256":"27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516","sizeBytes":390},{"name":"processor_config.json","sha256":"51c5f33646392e0bf1ed3e96be02504da47406c21c6cb86925d8908d1a6c4da7","sizeBytes":1312},{"name":"tokenizer.json","sha256":"87a7830d63fcf43bf241c3c5242e96e62dd3fdc29224ca26fed8ea333db72de4","sizeBytes":19989343},{"name":"tokenizer_config.json","sha256":"e98f1901ac6f0adff67b1d540bfa0c36ac1a0cf59eb72ed78146ef89aafa1182","sizeBytes":1139},{"name":"video_preprocessor_config.json","sha256":"7768af27c1fafa9cc9011c1dc20067e03f8915e03b63504550e11d5066986d13","sizeBytes":385},{"name":"vocab.json","sha256":"ce99b4cb2983d118806ce0a8b777a35b093e2000a503ebde25853284c9dfa003","sizeBytes":6722759}],"approxSizeBytes":20429166911,"quantization":"4bit","drafter":{"huggingfaceRepo":"mlx-community/Qwen3.6-35B-A3B-MTP-4bit","revision":"0295b81421bf4d0fccca9a7c0fcfb1418dda3516","kind":"mtp","files":[{"name":"config.json","sha256":"7b38a336fa246a285ee23cc990351989bf2ee6c040506a2b793ee24e463f35a7","sizeBytes":3180},{"name":"model.safetensors","sha256":"77fbc6594cdd830cae89e0b693f18278dd0a7a7c5749fd33d4bc5817dbb91bad","sizeBytes":475130833},{"name":"tokenizer_config.json","sha256":"5186f0defcd7f232382c7f0aebcd2252d073bb921ab240e407b7ae8745d2b29b","sizeBytes":16718}],"approxSizeBytes":475150731,"residentBytes":1710470999}},"availableVersions":["1.0.3","1.0.2","1.0.1","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"qwen3.6-35b-a3b-q8","name":"Qwen 3.6 (35B-A3B, Q8)","description":"Alibaba's Qwen 3.6 at 35B total parameters with only 3B active per token (Mixture-of-Experts: 256 experts, 8 routed + 1 shared), 8-bit quantization for higher fidelity than the Q4 build (at roughly double the memory footprint). Multimodal (text + image + video), 256K native context (extensible to ~1M with YaRN), explicit native tool-calling support.","tags":["alibaba","multimodal","vision","video","tools","long-context","moe"],"maintainer":{"name":"Alibaba","url":"https://huggingface.co/Qwen/Qwen3.6-35B-A3B"},"license":"Apache-2.0","licenseClass":"open","licenseShortName":"Apache 2.0","recoScore":20,"minGezelVersion":"1.26227","version":"1.0.3","releasedAt":"2026-08-29T00:00:00Z","parameterSize":"35B","approxSizeBytes":37801097504,"supportsTools":true,"contextWindow":262144,"upstream":"https://huggingface.co/Qwen/Qwen3.6-35B-A3B","category":"general","style":{"family":"qwen","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","mcp.compact-tool-schemas","prompt.private-reasoning-guidance","prompt.tool-cookbook-condensed","fabrication.detect-past-tense-no-tools","turn.ollama-num-predict-bumped","turn.preamble-folding","turn.ramble-detection","tools.mlx-grammar"],"tuning":{"sampling":{"temperature":0.7,"topP":0.8,"topK":20,"minP":0,"maxTokens":8192},"samplingWhenThinking":{"temperature":0.6,"topP":0.95},"reasoning":{"thinkingBudget":4096,"enableThinking":true},"promptTags":{"enableThinkingTag":"/think","disableThinkingTag":"/no_think"},"engine":{"llamaCpp":{"spec":{"mtp":true,"nMax":4}}},"profiles":{"thinking-general":{"sampling":{"temperature":0.8,"topP":0.95,"topK":20,"minP":0,"maxTokens":12288,"repetitionPenalty":1},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"thinking-coding":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":16384,"repetitionPenalty":1},"reasoning":{"thinkingBudget":6144,"enableThinking":true}},"thinking-precise":{"sampling":{"temperature":0.4,"topP":0.9,"topK":20,"minP":0,"maxTokens":6144,"seed":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"instruct":{"sampling":{"temperature":0.7,"topP":0.8,"topK":20,"minP":0,"maxTokens":4096,"repetitionPenalty":1,"presencePenalty":1.5},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1.1,"topP":0.95,"topK":40,"maxTokens":8192},"reasoning":{"enableThinking":false}}}},"llamaCpp":{"huggingfaceRepo":"unsloth/Qwen3.6-35B-A3B-MTP-GGUF","revision":"5bc3e238d916f48a861bac2f8a1990a0e9b7e98d","filename":"Qwen3.6-35B-A3B-Q8_0.gguf","sha256":"c1283d8b80c3e38b2735ddbc9766d3b3126f44d6c484be419d4e101d09a76131","approxSizeBytes":37801097504,"quantization":"Q8_0"},"mlx":{"huggingfaceRepo":"mlx-community/Qwen3.6-35B-A3B-8bit","revision":"e06a74e6236a60c8367e1a3214e83d8b61b637b0","files":[{"name":"chat_template.jinja","sha256":"e84f32a23fdda27689f868aa4a1a5621f41133e51a48d7f3efcbea2839574259","sizeBytes":7764},{"name":"config.json","sha256":"5da49c3a84c5a4a751b720b62b9f8703bdb8a0796b5fc55df3278f8b9d6ce296","sizeBytes":23591},{"name":"generation_config.json","sha256":"e70c136c1b78ddc1fb0905bac8e733a4dc448d4f852a5dd75143fffc70be550e","sizeBytes":202},{"name":"model-00001-of-00008.safetensors","sha256":"ae1ced7360792820cfc12f2e0c8e1ca4d95c712c122e08ebb474b197dee3edaf","sizeBytes":5329915945},{"name":"model-00002-of-00008.safetensors","sha256":"b8fdc3700f7339dc29d0e8504d15bc61e9beda7dc69eea037084cfa4067f1b26","sizeBytes":5365574072},{"name":"model-00003-of-00008.safetensors","sha256":"8a7851d9152dd39369026ab0ac7c369e4e62ce67ea1e3836862ff0c651176675","sizeBytes":5358684778},{"name":"model-00004-of-00008.safetensors","sha256":"3ad6623bb7ff4ddf39ee3854d473d66543ea8fdffc48f03ae4a1dc866da34b36","sizeBytes":5365574256},{"name":"model-00005-of-00008.safetensors","sha256":"ec9d987a3c499146e6e8edd92afb3943dfd35c908a3de0685346c1ea6901e383","sizeBytes":5358684632},{"name":"model-00006-of-00008.safetensors","sha256":"9a843214e1e72bfbae1d2c61283e25ee5930b5ccdbe15dccc7d72fba3a5812c4","sizeBytes":5365574102},{"name":"model-00007-of-00008.safetensors","sha256":"0a1ed4b82de64955eefb212b2eda57acfa1c2330a4258448e5c7f0f8aaf3649a","sizeBytes":5037050550},{"name":"model-00008-of-00008.safetensors","sha256":"41a1d955de1a9a97de3abebc40b5519b02d542adf266fefbd33b24dc674aef39","sizeBytes":540344667},{"name":"model.safetensors.index.json","sha256":"3db12edeebeb65cab9a6eeb63cd74be4e0c74139a75f672701290b98230501cf","sizeBytes":215755},{"name":"preprocessor_config.json","sha256":"27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516","sizeBytes":390},{"name":"processor_config.json","sha256":"51c5f33646392e0bf1ed3e96be02504da47406c21c6cb86925d8908d1a6c4da7","sizeBytes":1312},{"name":"tokenizer.json","sha256":"87a7830d63fcf43bf241c3c5242e96e62dd3fdc29224ca26fed8ea333db72de4","sizeBytes":19989343},{"name":"tokenizer_config.json","sha256":"e98f1901ac6f0adff67b1d540bfa0c36ac1a0cf59eb72ed78146ef89aafa1182","sizeBytes":1139},{"name":"video_preprocessor_config.json","sha256":"7768af27c1fafa9cc9011c1dc20067e03f8915e03b63504550e11d5066986d13","sizeBytes":385},{"name":"vocab.json","sha256":"ce99b4cb2983d118806ce0a8b777a35b093e2000a503ebde25853284c9dfa003","sizeBytes":6722759}],"approxSizeBytes":37748365642,"quantization":"8bit","drafter":{"huggingfaceRepo":"mlx-community/Qwen3.6-35B-A3B-MTP-4bit","revision":"0295b81421bf4d0fccca9a7c0fcfb1418dda3516","kind":"mtp","files":[{"name":"config.json","sha256":"7b38a336fa246a285ee23cc990351989bf2ee6c040506a2b793ee24e463f35a7","sizeBytes":3180},{"name":"model.safetensors","sha256":"77fbc6594cdd830cae89e0b693f18278dd0a7a7c5749fd33d4bc5817dbb91bad","sizeBytes":475130833},{"name":"tokenizer_config.json","sha256":"5186f0defcd7f232382c7f0aebcd2252d073bb921ab240e407b7ae8745d2b29b","sizeBytes":16718}],"approxSizeBytes":475150731,"residentBytes":1710470999}},"availableVersions":["1.0.3","1.0.2","1.0.1","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"qwen3.8-27b-iq1-s","name":"Qwen 3.8 (27B, IQ1_S)","description":"Alibaba's Qwen 3.8 at 27B parameters: a dense, multimodal agentic model with native text, image, and video understanding, 262K context, flexible reasoning effort, MTP, and native tool calling. Unsloth's dynamic UD-IQ1_S is an extreme-compression build at just over 6GB, making the 27B accessible on machines with 16GB usable memory while trading more fidelity than the Q2 build for the smaller footprint.","tags":["alibaba","agentic","coding","multimodal","vision","video","tools","reasoning","long-context","low-memory"],"maintainer":{"name":"Alibaba","url":"https://huggingface.co/Qwen/Qwen3.8-27B"},"license":"Apache-2.0","licenseClass":"open","licenseShortName":"Apache 2.0","recoScore":20,"version":"1.0.0","releasedAt":"2026-08-23T00:00:00Z","parameterSize":"27B","approxSizeBytes":6192222208,"supportsTools":true,"contextWindow":262144,"upstream":"https://huggingface.co/Qwen/Qwen3.8-27B","category":"general","style":{"family":"qwen","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","provider.merge-system-messages","mcp.compact-tool-schemas","provider.compact-write-transcript","fabrication.detect-past-tense-no-tools","turn.ollama-num-predict-bumped","turn.preamble-folding","turn.ramble-detection","tools.mlx-grammar","prompt.retrieval-first","prompt.workspace-gestalt","prompt.derive-by-execution"],"tuning":{"sampling":{"temperature":1,"topP":0.95,"topK":20,"minP":0,"maxTokens":12288,"repetitionPenalty":1,"presencePenalty":0},"samplingWhenThinking":{"temperature":1,"topP":0.95},"reasoning":{"thinkingBudget":4096,"enableThinking":true,"templateKwargs":{"reasoning_effort":"medium"}},"promptTags":{"enableThinkingTag":"/think","disableThinkingTag":"/no_think"},"engine":{"llamaCpp":{"spec":{"mtp":true,"nMax":4}}},"profiles":{"thinking-general":{"sampling":{"temperature":1,"topP":0.95,"topK":20,"minP":0,"maxTokens":12288,"repetitionPenalty":1,"presencePenalty":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true,"templateKwargs":{"reasoning_effort":"medium"}}},"thinking-deep":{"reasoning":{"thinkingBudget":4096,"enableThinking":true,"templateKwargs":{"reasoning_effort":"xhigh"}}},"thinking-coding":{"sampling":{"temperature":1,"topP":0.95,"topK":20,"minP":0,"maxTokens":16384,"repetitionPenalty":1,"presencePenalty":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true,"templateKwargs":{"reasoning_effort":"medium"}}},"thinking-precise":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":6144,"seed":0,"repetitionPenalty":1,"presencePenalty":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true,"templateKwargs":{"reasoning_effort":"medium"}}},"instruct":{"sampling":{"temperature":0.7,"topP":0.8,"topK":20,"minP":0,"maxTokens":4096,"repetitionPenalty":1,"presencePenalty":1.5},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1,"topP":0.95,"topK":40,"minP":0,"maxTokens":8192,"repetitionPenalty":1,"presencePenalty":1.5},"reasoning":{"enableThinking":false}}}},"llamaCpp":{"huggingfaceRepo":"unsloth/Qwen3.8-27B-GGUF","revision":"4ca720788d1e01f1bff70c033e0d0028fd02e502","filename":"Qwen3.8-27B-UD-IQ1_S.gguf","sha256":"3895b6eaa91e705c06ad1938d16c22e86f073c6a67df86260a1da79be3d1f887","approxSizeBytes":6192222208,"quantization":"UD-IQ1_S","mmproj":{"filename":"mmproj-F16.gguf","sha256":"cbb841a9ee0636b2ec172f5bb8df2ea8dfeb01e90fe7c6126581d662a0b4e43e","sizeBytes":927607488}},"availableVersions":["1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"qwen3.8-27b-q2","name":"Qwen 3.8 (27B, Q2)","description":"Alibaba's Qwen 3.8 at 27B parameters: a dense, multimodal agentic model with native text, image, and video understanding, 262K context, flexible reasoning effort, MTP, and native tool calling. Unsloth's dynamic UD-Q2_K_XL brings the 27B within reach of machines with 16GB+ usable memory while retaining more fidelity than the extreme IQ1_S build.","tags":["alibaba","agentic","coding","multimodal","vision","video","tools","reasoning","long-context"],"maintainer":{"name":"Alibaba","url":"https://huggingface.co/Qwen/Qwen3.8-27B"},"license":"Apache-2.0","licenseClass":"open","licenseShortName":"Apache 2.0","recoScore":20,"version":"1.0.0","releasedAt":"2026-08-23T00:00:00Z","parameterSize":"27B","approxSizeBytes":9828981664,"supportsTools":true,"contextWindow":262144,"upstream":"https://huggingface.co/Qwen/Qwen3.8-27B","category":"general","style":{"family":"qwen","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","provider.merge-system-messages","mcp.compact-tool-schemas","provider.compact-write-transcript","fabrication.detect-past-tense-no-tools","turn.ollama-num-predict-bumped","turn.preamble-folding","turn.ramble-detection","tools.mlx-grammar","prompt.retrieval-first","prompt.workspace-gestalt","prompt.derive-by-execution"],"tuning":{"sampling":{"temperature":1,"topP":0.95,"topK":20,"minP":0,"maxTokens":12288,"repetitionPenalty":1,"presencePenalty":0},"samplingWhenThinking":{"temperature":1,"topP":0.95},"reasoning":{"thinkingBudget":4096,"enableThinking":true,"templateKwargs":{"reasoning_effort":"medium"}},"promptTags":{"enableThinkingTag":"/think","disableThinkingTag":"/no_think"},"engine":{"llamaCpp":{"spec":{"mtp":true,"nMax":4}}},"profiles":{"thinking-general":{"sampling":{"temperature":1,"topP":0.95,"topK":20,"minP":0,"maxTokens":12288,"repetitionPenalty":1,"presencePenalty":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true,"templateKwargs":{"reasoning_effort":"medium"}}},"thinking-deep":{"reasoning":{"thinkingBudget":4096,"enableThinking":true,"templateKwargs":{"reasoning_effort":"xhigh"}}},"thinking-coding":{"sampling":{"temperature":1,"topP":0.95,"topK":20,"minP":0,"maxTokens":16384,"repetitionPenalty":1,"presencePenalty":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true,"templateKwargs":{"reasoning_effort":"medium"}}},"thinking-precise":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":6144,"seed":0,"repetitionPenalty":1,"presencePenalty":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true,"templateKwargs":{"reasoning_effort":"medium"}}},"instruct":{"sampling":{"temperature":0.7,"topP":0.8,"topK":20,"minP":0,"maxTokens":4096,"repetitionPenalty":1,"presencePenalty":1.5},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1,"topP":0.95,"topK":40,"minP":0,"maxTokens":8192,"repetitionPenalty":1,"presencePenalty":1.5},"reasoning":{"enableThinking":false}}}},"llamaCpp":{"huggingfaceRepo":"unsloth/Qwen3.8-27B-GGUF","revision":"4ca720788d1e01f1bff70c033e0d0028fd02e502","filename":"Qwen3.8-27B-UD-Q2_K_XL.gguf","sha256":"fd4730dd8aad070517978752b63d530aeb1740d2283cab9fa24f1e404032ddb0","approxSizeBytes":9828981664,"quantization":"UD-Q2_K_XL","mmproj":{"filename":"mmproj-F16.gguf","sha256":"cbb841a9ee0636b2ec172f5bb8df2ea8dfeb01e90fe7c6126581d662a0b4e43e","sizeBytes":927607488}},"availableVersions":["1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"qwen3.8-27b-q3","name":"Qwen 3.8 (27B, Q3)","description":"Alibaba's Qwen 3.8 at 27B parameters: a dense, multimodal agentic model with native text, image, and video understanding, 262K context, flexible reasoning effort, MTP, and native tool calling. Unsloth's dynamic UD-Q3_K_XL is the smallest build in this line — smaller on disk than a plain Q3_K_M and better preserved at the same bit width — bringing the 27B within reach of machines with 20GB+ usable memory.","tags":["alibaba","agentic","coding","multimodal","vision","video","tools","reasoning","long-context"],"maintainer":{"name":"Alibaba","url":"https://huggingface.co/Qwen/Qwen3.8-27B"},"license":"Apache-2.0","licenseClass":"open","licenseShortName":"Apache 2.0","recoScore":20,"version":"1.0.1","releasedAt":"2026-08-19T00:00:00Z","parameterSize":"27B","approxSizeBytes":13146393504,"supportsTools":true,"contextWindow":262144,"upstream":"https://huggingface.co/Qwen/Qwen3.8-27B","category":"general","style":{"family":"qwen","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","provider.merge-system-messages","mcp.compact-tool-schemas","provider.compact-write-transcript","fabrication.detect-past-tense-no-tools","turn.ollama-num-predict-bumped","turn.preamble-folding","turn.ramble-detection","tools.mlx-grammar","prompt.retrieval-first","prompt.workspace-gestalt","prompt.derive-by-execution"],"tuning":{"sampling":{"temperature":1,"topP":0.95,"topK":20,"minP":0,"maxTokens":12288,"repetitionPenalty":1,"presencePenalty":0},"samplingWhenThinking":{"temperature":1,"topP":0.95},"reasoning":{"thinkingBudget":4096,"enableThinking":true,"templateKwargs":{"reasoning_effort":"medium"}},"promptTags":{"enableThinkingTag":"/think","disableThinkingTag":"/no_think"},"engine":{"llamaCpp":{"spec":{"mtp":true,"nMax":4}}},"profiles":{"thinking-general":{"sampling":{"temperature":1,"topP":0.95,"topK":20,"minP":0,"maxTokens":12288,"repetitionPenalty":1,"presencePenalty":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true,"templateKwargs":{"reasoning_effort":"medium"}}},"thinking-deep":{"reasoning":{"thinkingBudget":4096,"enableThinking":true,"templateKwargs":{"reasoning_effort":"xhigh"}}},"thinking-coding":{"sampling":{"temperature":1,"topP":0.95,"topK":20,"minP":0,"maxTokens":16384,"repetitionPenalty":1,"presencePenalty":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true,"templateKwargs":{"reasoning_effort":"medium"}}},"thinking-precise":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":6144,"seed":0,"repetitionPenalty":1,"presencePenalty":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true,"templateKwargs":{"reasoning_effort":"medium"}}},"instruct":{"sampling":{"temperature":0.7,"topP":0.8,"topK":20,"minP":0,"maxTokens":4096,"repetitionPenalty":1,"presencePenalty":1.5},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1,"topP":0.95,"topK":40,"minP":0,"maxTokens":8192,"repetitionPenalty":1,"presencePenalty":1.5},"reasoning":{"enableThinking":false}}}},"llamaCpp":{"huggingfaceRepo":"unsloth/Qwen3.8-27B-GGUF","revision":"27af057ecb382ddfea5d12837360a8980560e3ed","filename":"Qwen3.8-27B-UD-Q3_K_XL.gguf","sha256":"8c2a45ff85e7674ca185ec8eb6cdeab0e617ed9d8018caed0b64380eb2a67a5e","approxSizeBytes":13146393504,"quantization":"UD-Q3_K_XL","mmproj":{"filename":"mmproj-F16.gguf","sha256":"cbb841a9ee0636b2ec172f5bb8df2ea8dfeb01e90fe7c6126581d662a0b4e43e","sizeBytes":927607488}},"availableVersions":["1.0.1","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"qwen3.8-27b-q4","name":"Qwen 3.8 (27B, Q4)","description":"Alibaba's Qwen 3.8 at 27B parameters: a dense, multimodal agentic model with native text, image, and video understanding, 262K context, flexible reasoning effort, MTP, and native tool calling. Q4_K_M is the practical on-device build for machines with 24GB+ usable memory.","tags":["alibaba","agentic","coding","multimodal","vision","video","tools","reasoning","long-context"],"maintainer":{"name":"Alibaba","url":"https://huggingface.co/Qwen/Qwen3.8-27B"},"license":"Apache-2.0","licenseClass":"open","licenseShortName":"Apache 2.0","recoScore":20,"version":"1.0.4","releasedAt":"2026-08-29T00:00:00Z","parameterSize":"27B","approxSizeBytes":16464440224,"supportsTools":true,"contextWindow":262144,"upstream":"https://huggingface.co/Qwen/Qwen3.8-27B","category":"general","style":{"family":"qwen","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","provider.merge-system-messages","mcp.compact-tool-schemas","provider.compact-write-transcript","fabrication.detect-past-tense-no-tools","turn.ollama-num-predict-bumped","turn.preamble-folding","turn.ramble-detection","tools.mlx-grammar","prompt.retrieval-first","prompt.workspace-gestalt","prompt.derive-by-execution"],"tuning":{"sampling":{"temperature":1,"topP":0.95,"topK":20,"minP":0,"maxTokens":12288,"repetitionPenalty":1,"presencePenalty":0},"samplingWhenThinking":{"temperature":1,"topP":0.95},"reasoning":{"thinkingBudget":4096,"enableThinking":true,"templateKwargs":{"reasoning_effort":"medium"}},"promptTags":{"enableThinkingTag":"/think","disableThinkingTag":"/no_think"},"engine":{"llamaCpp":{"spec":{"mtp":true,"nMax":4}}},"profiles":{"thinking-general":{"sampling":{"temperature":1,"topP":0.95,"topK":20,"minP":0,"maxTokens":12288,"repetitionPenalty":1,"presencePenalty":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true,"templateKwargs":{"reasoning_effort":"medium"}}},"thinking-deep":{"reasoning":{"thinkingBudget":4096,"enableThinking":true,"templateKwargs":{"reasoning_effort":"xhigh"}}},"thinking-coding":{"sampling":{"temperature":1,"topP":0.95,"topK":20,"minP":0,"maxTokens":16384,"repetitionPenalty":1,"presencePenalty":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true,"templateKwargs":{"reasoning_effort":"medium"}}},"thinking-precise":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":6144,"seed":0,"repetitionPenalty":1,"presencePenalty":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true,"templateKwargs":{"reasoning_effort":"medium"}}},"instruct":{"sampling":{"temperature":0.7,"topP":0.8,"topK":20,"minP":0,"maxTokens":4096,"repetitionPenalty":1,"presencePenalty":1.5},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1,"topP":0.95,"topK":40,"minP":0,"maxTokens":8192,"repetitionPenalty":1,"presencePenalty":1.5},"reasoning":{"enableThinking":false}}}},"llamaCpp":{"huggingfaceRepo":"unsloth/Qwen3.8-27B-GGUF","revision":"27af057ecb382ddfea5d12837360a8980560e3ed","filename":"Qwen3.8-27B-UD-Q4_K_M.gguf","sha256":"322e194ff79741c7baa497c240f677f54b201b0efab44ca8e50f122b39123482","approxSizeBytes":16464440224,"quantization":"UD-Q4_K_M","mmproj":{"filename":"mmproj-F16.gguf","sha256":"cbb841a9ee0636b2ec172f5bb8df2ea8dfeb01e90fe7c6126581d662a0b4e43e","sizeBytes":927607488}},"mlx":{"huggingfaceRepo":"mlx-community/Qwen3.8-27B-4bit","revision":"3e6447f082e89cc7f0bc6e5441afd38dfce760ff","files":[{"name":"chat_template.jinja","sha256":"c3cf9e34abf4f9e36c2d72165aa9c132d3e2a725b6c2586aaa3a8af9d7a81041","sizeBytes":8952},{"name":"config.json","sha256":"14b65a0ee06517060a6bbd979bb1a8ff54e7b304b1a1f01d54344b88b8285e85","sizeBytes":4932},{"name":"generation_config.json","sha256":"e70c136c1b78ddc1fb0905bac8e733a4dc448d4f852a5dd75143fffc70be550e","sizeBytes":202},{"name":"model-00001-of-00003.safetensors","sha256":"6cc1508e96fb5d0865dfd5753a79f4ec60651bf3e2a82844a7e8ae9c60528c0d","sizeBytes":5343268662},{"name":"model-00002-of-00003.safetensors","sha256":"83f2a20ca8058f486a3634a27faf99587f4cd3c156a83dee34fb99e6ac178670","sizeBytes":5354185130},{"name":"model-00003-of-00003.safetensors","sha256":"31b8c91ef899f79efaaa69e3d2c096f6e2ebeb2ff20e29222abbd9ebc79e560a","sizeBytes":5357087557},{"name":"model.safetensors.index.json","sha256":"13b840162b4cb35c66fef7df072f7dbb4717908204364f5e5d9f9655a2758fa8","sizeBytes":218281},{"name":"preprocessor_config.json","sha256":"27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516","sizeBytes":390},{"name":"processor_config.json","sha256":"45fc17c8dd2474af6b493b52483c26c0584b0082d368c480f9fa611e73070040","sizeBytes":991},{"name":"tokenizer.json","sha256":"06b9509352d2af50381ab2247e083b80d32d5c0aba91c272ca9ff729b6a0e523","sizeBytes":19989325},{"name":"tokenizer_config.json","sha256":"792fa3f0cb88b111e54ef3134c873531008c4df471d108da17903426e308aa7b","sizeBytes":1165},{"name":"video_preprocessor_config.json","sha256":"7768af27c1fafa9cc9011c1dc20067e03f8915e03b63504550e11d5066986d13","sizeBytes":385},{"name":"vocab.json","sha256":"ce99b4cb2983d118806ce0a8b777a35b093e2000a503ebde25853284c9dfa003","sizeBytes":6722759}],"approxSizeBytes":16081488731,"quantization":"4bit","drafter":{"huggingfaceRepo":"mlx-community/Qwen3.8-27B-MTP-4bit","revision":"b643c01b6d3b094e325edb6ebd832e16c486c575","kind":"mtp","files":[{"name":"config.json","sha256":"16094efa6177985ab3725a9d6d61d6ab248b71e4b42a114efddcdb2aaddc0a55","sizeBytes":3804},{"name":"model.safetensors","sha256":"76663c101e7e8ea9c0ae17bcb95183cd7f733ce424c912b8b264a7b1c48e4cc6","sizeBytes":238934137},{"name":"tokenizer_config.json","sha256":"66e427c470fe580fe8c7b5725d857af23d8417e37fae62667ec698306a19987b","sizeBytes":1124}],"approxSizeBytes":238939065,"residentBytes":860162893}},"availableVersions":["1.0.4","1.0.3","1.0.2","1.0.1","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"qwen3.8-27b-q6","name":"Qwen 3.8 (27B, Q6)","description":"Alibaba's Qwen 3.8 at 27B parameters: a dense, multimodal agentic model with native text, image, and video understanding, 262K context, flexible reasoning effort, MTP, and native tool calling. Q6_K offers a higher-fidelity middle ground between the practical Q4 and larger Q8 builds, targeting machines with 32GB+ usable memory.","tags":["alibaba","agentic","coding","multimodal","vision","video","tools","reasoning","long-context"],"maintainer":{"name":"Alibaba","url":"https://huggingface.co/Qwen/Qwen3.8-27B"},"license":"Apache-2.0","licenseClass":"open","licenseShortName":"Apache 2.0","recoScore":20,"minGezelVersion":"1.26228","version":"1.0.3","releasedAt":"2026-08-29T00:00:00Z","parameterSize":"27B","approxSizeBytes":21983677344,"supportsTools":true,"contextWindow":262144,"upstream":"https://huggingface.co/Qwen/Qwen3.8-27B","category":"general","style":{"family":"qwen","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","provider.merge-system-messages","mcp.compact-tool-schemas","provider.compact-write-transcript","fabrication.detect-past-tense-no-tools","turn.ollama-num-predict-bumped","turn.preamble-folding","turn.ramble-detection","tools.mlx-grammar","prompt.retrieval-first","prompt.workspace-gestalt","prompt.derive-by-execution"],"tuning":{"sampling":{"temperature":1,"topP":0.95,"topK":20,"minP":0,"maxTokens":12288,"repetitionPenalty":1,"presencePenalty":0},"samplingWhenThinking":{"temperature":1,"topP":0.95},"reasoning":{"thinkingBudget":4096,"enableThinking":true,"templateKwargs":{"reasoning_effort":"medium"}},"promptTags":{"enableThinkingTag":"/think","disableThinkingTag":"/no_think"},"engine":{"llamaCpp":{"spec":{"mtp":true,"nMax":4}}},"profiles":{"thinking-general":{"sampling":{"temperature":1,"topP":0.95,"topK":20,"minP":0,"maxTokens":12288,"repetitionPenalty":1,"presencePenalty":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true,"templateKwargs":{"reasoning_effort":"medium"}}},"thinking-deep":{"reasoning":{"thinkingBudget":4096,"enableThinking":true,"templateKwargs":{"reasoning_effort":"xhigh"}}},"thinking-coding":{"sampling":{"temperature":1,"topP":0.95,"topK":20,"minP":0,"maxTokens":16384,"repetitionPenalty":1,"presencePenalty":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true,"templateKwargs":{"reasoning_effort":"medium"}}},"thinking-precise":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":6144,"seed":0,"repetitionPenalty":1,"presencePenalty":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true,"templateKwargs":{"reasoning_effort":"medium"}}},"instruct":{"sampling":{"temperature":0.7,"topP":0.8,"topK":20,"minP":0,"maxTokens":4096,"repetitionPenalty":1,"presencePenalty":1.5},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1,"topP":0.95,"topK":40,"minP":0,"maxTokens":8192,"repetitionPenalty":1,"presencePenalty":1.5},"reasoning":{"enableThinking":false}}}},"llamaCpp":{"huggingfaceRepo":"unsloth/Qwen3.8-27B-GGUF","revision":"27af057ecb382ddfea5d12837360a8980560e3ed","filename":"Qwen3.8-27B-UD-Q6_K.gguf","sha256":"c9c206812fbe4ac7b76a729e25928b63f2ae89d37f69da7a71c20aec763cd436","approxSizeBytes":21983677344,"quantization":"UD-Q6_K","mmproj":{"filename":"mmproj-F16.gguf","sha256":"cbb841a9ee0636b2ec172f5bb8df2ea8dfeb01e90fe7c6126581d662a0b4e43e","sizeBytes":927607488}},"mlx":{"huggingfaceRepo":"lmstudio-community/Qwen3.8-27B-MLX-6bit","revision":"05f38c1f39e2f39619653616fe8e96a5d676358e","files":[{"name":"chat_template.jinja","sha256":"c3cf9e34abf4f9e36c2d72165aa9c132d3e2a725b6c2586aaa3a8af9d7a81041","sizeBytes":8952},{"name":"config.json","sha256":"f2490d237e42fc8418ee62b7416e360785b7de308f43d8f794ccf4f185bdeec9","sizeBytes":4932},{"name":"generation_config.json","sha256":"e70c136c1b78ddc1fb0905bac8e733a4dc448d4f852a5dd75143fffc70be550e","sizeBytes":202},{"name":"model-00001-of-00005.safetensors","sha256":"39a48bfd79609b341f4ed420cdc92e3edce316cd3f5ef7db2dcd371f48c90588","sizeBytes":5362726126},{"name":"model-00002-of-00005.safetensors","sha256":"d9011deb397afa986754a8abe3872b87a21c2bd6d7f9ed50bd8cba3890b782f9","sizeBytes":5344281968},{"name":"model-00003-of-00005.safetensors","sha256":"760d392182ee77093df96328110596e230a9f4cab37febd70ae29173f7ff7e01","sizeBytes":5331479330},{"name":"model-00004-of-00005.safetensors","sha256":"513fbeb37662c2b6020ebe4d61e5e9192f7abb5970aef0cd291b7a55f445c23e","sizeBytes":5331479394},{"name":"model-00005-of-00005.safetensors","sha256":"6ed59540691cfb8f8adeaa186506d3fc44b0f0ce392c7caf59116bb6ae580c01","sizeBytes":1407912947},{"name":"model.safetensors.index.json","sha256":"dafc019bb8416ae2a289f24c598473b5531b14ca87a0cabfd9b0d6aec67bffc1","sizeBytes":218281},{"name":"preprocessor_config.json","sha256":"27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516","sizeBytes":390},{"name":"processor_config.json","sha256":"45fc17c8dd2474af6b493b52483c26c0584b0082d368c480f9fa611e73070040","sizeBytes":991},{"name":"tokenizer.json","sha256":"06b9509352d2af50381ab2247e083b80d32d5c0aba91c272ca9ff729b6a0e523","sizeBytes":19989325},{"name":"tokenizer_config.json","sha256":"47a7a8371379b07650b22f3c8a78c32fed85c4e35ea88e3da0c4b7a7611e8082","sizeBytes":10404},{"name":"video_preprocessor_config.json","sha256":"7768af27c1fafa9cc9011c1dc20067e03f8915e03b63504550e11d5066986d13","sizeBytes":385},{"name":"vocab.json","sha256":"ce99b4cb2983d118806ce0a8b777a35b093e2000a503ebde25853284c9dfa003","sizeBytes":6722759}],"approxSizeBytes":22804836386,"quantization":"6bit","drafter":{"huggingfaceRepo":"mlx-community/Qwen3.8-27B-MTP-4bit","revision":"b643c01b6d3b094e325edb6ebd832e16c486c575","kind":"mtp","files":[{"name":"config.json","sha256":"16094efa6177985ab3725a9d6d61d6ab248b71e4b42a114efddcdb2aaddc0a55","sizeBytes":3804},{"name":"model.safetensors","sha256":"76663c101e7e8ea9c0ae17bcb95183cd7f733ce424c912b8b264a7b1c48e4cc6","sizeBytes":238934137},{"name":"tokenizer_config.json","sha256":"66e427c470fe580fe8c7b5725d857af23d8417e37fae62667ec698306a19987b","sizeBytes":1124}],"approxSizeBytes":238939065,"residentBytes":860162893}},"availableVersions":["1.0.3","1.0.2","1.0.1","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"qwen3.8-27b-q8","name":"Qwen 3.8 (27B, Q8)","description":"Alibaba's Qwen 3.8 at 27B parameters: a dense, multimodal agentic model with native text, image, and video understanding, 262K context, flexible reasoning effort, MTP, and native tool calling. Q8_0 and 8-bit MLX preserve more fidelity than the Q4 build at roughly double the memory footprint; intended for machines with 40GB+ usable memory.","tags":["alibaba","agentic","coding","multimodal","vision","video","tools","reasoning","long-context"],"maintainer":{"name":"Alibaba","url":"https://huggingface.co/Qwen/Qwen3.8-27B"},"license":"Apache-2.0","licenseClass":"open","licenseShortName":"Apache 2.0","recoScore":20,"minGezelVersion":"1.26227","version":"1.0.2","releasedAt":"2026-08-29T00:00:00Z","parameterSize":"27B","approxSizeBytes":29047086048,"supportsTools":true,"contextWindow":262144,"upstream":"https://huggingface.co/Qwen/Qwen3.8-27B","category":"general","style":{"family":"qwen","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","provider.merge-system-messages","mcp.compact-tool-schemas","provider.compact-write-transcript","fabrication.detect-past-tense-no-tools","turn.ollama-num-predict-bumped","turn.preamble-folding","turn.ramble-detection","tools.mlx-grammar","prompt.retrieval-first","prompt.workspace-gestalt","prompt.derive-by-execution"],"tuning":{"sampling":{"temperature":1,"topP":0.95,"topK":20,"minP":0,"maxTokens":12288,"repetitionPenalty":1,"presencePenalty":0},"samplingWhenThinking":{"temperature":1,"topP":0.95},"reasoning":{"thinkingBudget":4096,"enableThinking":true,"templateKwargs":{"reasoning_effort":"xhigh"}},"promptTags":{"enableThinkingTag":"/think","disableThinkingTag":"/no_think"},"engine":{"llamaCpp":{"spec":{"mtp":true,"nMax":4}}},"profiles":{"thinking-general":{"sampling":{"temperature":1,"topP":0.95,"topK":20,"minP":0,"maxTokens":12288,"repetitionPenalty":1,"presencePenalty":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true,"templateKwargs":{"reasoning_effort":"xhigh"}}},"thinking-coding":{"sampling":{"temperature":1,"topP":0.95,"topK":20,"minP":0,"maxTokens":16384,"repetitionPenalty":1,"presencePenalty":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true,"templateKwargs":{"reasoning_effort":"xhigh"}}},"thinking-precise":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":6144,"seed":0,"repetitionPenalty":1,"presencePenalty":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true,"templateKwargs":{"reasoning_effort":"medium"}}},"instruct":{"sampling":{"temperature":0.7,"topP":0.8,"topK":20,"minP":0,"maxTokens":4096,"repetitionPenalty":1,"presencePenalty":1.5},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1,"topP":0.95,"topK":40,"minP":0,"maxTokens":8192,"repetitionPenalty":1,"presencePenalty":1.5},"reasoning":{"enableThinking":false}}}},"llamaCpp":{"huggingfaceRepo":"unsloth/Qwen3.8-27B-GGUF","revision":"f1bfb127c64f7072bdd2cad55f258b9c8b2910fe","filename":"Qwen3.8-27B-Q8_0.gguf","sha256":"a680f44a06920e5d689774823782006aa3acc8db95750323373b24139b67e348","approxSizeBytes":29047086048,"quantization":"Q8_0","mmproj":{"filename":"mmproj-F16.gguf","sha256":"cbb841a9ee0636b2ec172f5bb8df2ea8dfeb01e90fe7c6126581d662a0b4e43e","sizeBytes":927607488}},"mlx":{"huggingfaceRepo":"mlx-community/Qwen3.8-27B-8bit","revision":"815b83c0df8ffd1d1b5244cf75fd6ef14fca9ef9","files":[{"name":"chat_template.jinja","sha256":"c3cf9e34abf4f9e36c2d72165aa9c132d3e2a725b6c2586aaa3a8af9d7a81041","sizeBytes":8952},{"name":"config.json","sha256":"8f80874ac3ad8fa386d3f6dc0ea85377f703376e009a03dee0360e08e289a25d","sizeBytes":4932},{"name":"generation_config.json","sha256":"e70c136c1b78ddc1fb0905bac8e733a4dc448d4f852a5dd75143fffc70be550e","sizeBytes":202},{"name":"merges.txt","sha256":"a9d356d7bdf1ef4949e3e748e95b8e10ad9d4e2e838eddc38a0a7b6b94d1db8d","sizeBytes":3353259},{"name":"model-00001-of-00006.safetensors","sha256":"c7921fe72af5c961c3c4230ea25068ed6d1e502d5ecb2b4a53b7c9c213effa0c","sizeBytes":5317707581},{"name":"model-00002-of-00006.safetensors","sha256":"e9d93d15495354045da281f102649b99793e5b6ed0e05852c58f46e6616b54a0","sizeBytes":5354102610},{"name":"model-00003-of-00006.safetensors","sha256":"7015f40310c86a18230e28644832b624532333d5dfbf7584e6c62341dbd8975e","sizeBytes":5354184694},{"name":"model-00004-of-00006.safetensors","sha256":"7dc8ae53ed51d153e6b59499cdf004bf6ef15aab6757c7604ed4834774abc2c2","sizeBytes":5337309653},{"name":"model-00005-of-00006.safetensors","sha256":"8817c22c01aebdcde54eac315e9766f705eb512ba7ba84ac47501c663f930ac5","sizeBytes":5292848464},{"name":"model-00006-of-00006.safetensors","sha256":"fce51843fc07e1c67c5ec6d19edb46e4fa8d2b51a1cb6c8316b0a7cc069c0eb4","sizeBytes":2845065477},{"name":"model.safetensors.index.json","sha256":"4301ca600788afb2a45c0aa367140d6144ecf617d0a51a8187fc6755d65301f8","sizeBytes":218281},{"name":"preprocessor_config.json","sha256":"27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516","sizeBytes":390},{"name":"processor_config.json","sha256":"45fc17c8dd2474af6b493b52483c26c0584b0082d368c480f9fa611e73070040","sizeBytes":991},{"name":"tokenizer.json","sha256":"06b9509352d2af50381ab2247e083b80d32d5c0aba91c272ca9ff729b6a0e523","sizeBytes":19989325},{"name":"tokenizer_config.json","sha256":"792fa3f0cb88b111e54ef3134c873531008c4df471d108da17903426e308aa7b","sizeBytes":1165},{"name":"video_preprocessor_config.json","sha256":"7768af27c1fafa9cc9011c1dc20067e03f8915e03b63504550e11d5066986d13","sizeBytes":385},{"name":"vocab.json","sha256":"ce99b4cb2983d118806ce0a8b777a35b093e2000a503ebde25853284c9dfa003","sizeBytes":6722759}],"approxSizeBytes":29531519120,"quantization":"8bit","drafter":{"huggingfaceRepo":"mlx-community/Qwen3.8-27B-MTP-4bit","revision":"b643c01b6d3b094e325edb6ebd832e16c486c575","kind":"mtp","files":[{"name":"config.json","sha256":"16094efa6177985ab3725a9d6d61d6ab248b71e4b42a114efddcdb2aaddc0a55","sizeBytes":3804},{"name":"model.safetensors","sha256":"76663c101e7e8ea9c0ae17bcb95183cd7f733ce424c912b8b264a7b1c48e4cc6","sizeBytes":238934137},{"name":"tokenizer_config.json","sha256":"66e427c470fe580fe8c7b5725d857af23d8417e37fae62667ec698306a19987b","sizeBytes":1124}],"approxSizeBytes":238939065,"residentBytes":860162893}},"availableVersions":["1.0.2","1.0.1","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"talkie-1930-13b-q4","name":"Talkie 1930 (13B, Q4)","description":"A 13B instruct model trained solely on pre-1931 English-language text — it writes and converses in an authentic period voice, free of modern anachronisms. Best for creative writing, correspondence, and in-character chat rather than tool use or current-events questions. Runs a community GGUF that rescales talkie's out-of-range layer-14 ffn_down channel so K-quantization stays coherent. 2K context. Apache-2.0.","tags":["talkie-lm","creative","writing","vintage","english"],"maintainer":{"name":"talkie-lm","url":"https://huggingface.co/talkie-lm/talkie-1930-13b-it"},"license":"Apache-2.0","licenseClass":"open","licenseShortName":"Apache 2.0","minGezelVersion":"1.26227","version":"1.0.1","releasedAt":"2026-08-15T00:00:00Z","parameterSize":"13B","approxSizeBytes":8572111136,"supportsTools":false,"contextWindow":2048,"upstream":"https://huggingface.co/talkie-lm/talkie-1930-13b-it","category":"general","style":{"family":"other","reasoningFormat":"none","toolCallFormat":"function-call"},"behaviors":["prompt.minimal-context","turn.preamble-folding",{"id":"turn.ramble-detection","config":{"coldThreshold":4000,"postActionThreshold":1200}},"mcp.compact-tool-schemas"],"tuning":{"sampling":{"temperature":0.8,"topP":0.95,"topK":40,"maxTokens":1024,"repetitionPenalty":1.1,"repetitionContext":64},"reasoning":{"enableThinking":false},"profiles":{"creative":{"sampling":{"temperature":1,"topP":0.95,"topK":60,"maxTokens":1024,"repetitionPenalty":1.05,"repetitionContext":32}}}},"llamaCpp":{"huggingfaceRepo":"zakarth/talkie-1930-13b-it-vulkan-fixed-GGUF","revision":"031719224d71176d33a0434a4c8b041236739571","filename":"talkie-1930-13b-it.Q4_K_M.gguf","sha256":"01c7a43acaa12e602b08e1c785df9bfa9e562d40c7750597b700ef2fcc63e535","approxSizeBytes":8572111136,"quantization":"Q4_K_M"},"availableVersions":["1.0.1","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"chat-model","id":"ternary-bonsai-27b-q2","name":"Ternary Bonsai 27B (2-bit)","description":"PrismML's ternary 2-bit adaptation of Qwen 3.6 27B. Multimodal (text + image + video), 262K native context, thinking and tool-calling support, packaged for Apple Silicon in roughly 8.5GB. A promising 27B-class on-device option for Macs with 16GB+ unified memory; 24GB+ is recommended for useful context headroom.","tags":["prismml","qwen","ternary","2-bit","multimodal","vision","video","tools","reasoning","long-context"],"maintainer":{"name":"PrismML","url":"https://prismml.com"},"license":"Apache-2.0","licenseClass":"open","licenseShortName":"Apache 2.0","minGezelVersion":"1.26227","version":"1.0.1","releasedAt":"2026-08-15T00:00:00Z","parameterSize":"27B","approxSizeBytes":8521049516,"supportsTools":true,"contextWindow":262144,"upstream":"https://huggingface.co/prism-ml/Ternary-Bonsai-27B-mlx-2bit","category":"general","style":{"family":"qwen","reasoningFormat":"think","toolCallFormat":"function-call"},"behaviors":["reasoning.strip-think-tags","provider.merge-system-messages","mcp.compact-tool-schemas","provider.compact-write-transcript","fabrication.detect-past-tense-no-tools","turn.ollama-num-predict-bumped","turn.preamble-folding","turn.ramble-detection","tools.mlx-grammar","prompt.derive-by-execution"],"tuning":{"sampling":{"temperature":0.7,"topP":0.95,"topK":20,"minP":0,"maxTokens":8192},"samplingWhenThinking":{"temperature":0.7,"topP":0.95},"reasoning":{"thinkingBudget":4096,"enableThinking":true},"promptTags":{"enableThinkingTag":"/think","disableThinkingTag":"/no_think"},"profiles":{"thinking-general":{"sampling":{"temperature":0.7,"topP":0.95,"topK":20,"minP":0,"maxTokens":12288,"repetitionPenalty":1},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"thinking-coding":{"sampling":{"temperature":0.6,"topP":0.95,"topK":20,"minP":0,"maxTokens":16384,"repetitionPenalty":1},"reasoning":{"thinkingBudget":6144,"enableThinking":true}},"thinking-precise":{"sampling":{"temperature":0.4,"topP":0.9,"topK":20,"minP":0,"maxTokens":6144,"seed":0},"reasoning":{"thinkingBudget":4096,"enableThinking":true}},"instruct":{"sampling":{"temperature":0.7,"topP":0.8,"topK":20,"minP":0,"maxTokens":4096,"repetitionPenalty":1,"presencePenalty":1.5},"reasoning":{"enableThinking":false}},"creative":{"sampling":{"temperature":1.1,"topP":0.95,"topK":40,"maxTokens":8192},"reasoning":{"enableThinking":false}}}},"mlx":{"huggingfaceRepo":"prism-ml/Ternary-Bonsai-27B-mlx-2bit","revision":"70f75f3ad081ab840a42f3304c02c27e7f89bfb7","files":[{"name":"chat_template.jinja","sha256":"e84f32a23fdda27689f868aa4a1a5621f41133e51a48d7f3efcbea2839574259","sizeBytes":7764},{"name":"config.json","sha256":"4204f24e0c84754a59c5fbbc9af2458916916bf9301dbf14be31ef6db41f0f82","sizeBytes":3790},{"name":"merges.txt","sha256":"a9d356d7bdf1ef4949e3e748e95b8e10ad9d4e2e838eddc38a0a7b6b94d1db8d","sizeBytes":3353259},{"name":"model.safetensors","sha256":"8acd4597893ea7004e2d7336c3cf6e3157b8896592bbcf066db004021e45846b","sizeBytes":8490785104},{"name":"model.safetensors.index.json","sha256":"ea95a45cda323247258962e694606dea77881ffbc6565bba84bb9aa3d6031736","sizeBytes":185580},{"name":"preprocessor_config.json","sha256":"27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516","sizeBytes":390},{"name":"processor_config.json","sha256":"18c83d74295314cbc86099e83ad945d300cca54270d3ecc9f4ff8fe8cb89d911","sizeBytes":44},{"name":"tokenizer.json","sha256":"87a7830d63fcf43bf241c3c5242e96e62dd3fdc29224ca26fed8ea333db72de4","sizeBytes":19989343},{"name":"tokenizer_config.json","sha256":"83febe739ecefd99f984f546dfdc10149cedf293b9ee0291b99894341188b613","sizeBytes":1098},{"name":"video_preprocessor_config.json","sha256":"7768af27c1fafa9cc9011c1dc20067e03f8915e03b63504550e11d5066986d13","sizeBytes":385},{"name":"vocab.json","sha256":"ce99b4cb2983d118806ce0a8b777a35b093e2000a503ebde25853284c9dfa003","sizeBytes":6722759}],"approxSizeBytes":8521049516,"quantization":"2bit"},"availableVersions":["1.0.1","1.0.0"]}}]}
|