common : end reasoning budget forcing on an end tag from the prompt (#31374) Website: link Attestations: link macOS/iOS: macOS Apple Silicon (arm64) macOS Apple Silicon (arm64, KleidiAI enabled) DISABLED macOS Intel (x64) iOS XCFramework Linux: Ubuntu x64 (CPU) Ubuntu arm64 (CPU) Ubuntu s390x (CPU) Ubuntu 26.04 s390x (CPU) Ubuntu 26.04 s390x (zDNN) Ubuntu x6
common : end reasoning budget forcing on an end tag from the prompt (#31374) Website: link Attestations: link macOS/iOS: macOS Apple Silicon (arm64) macOS Apple Silicon (arm64, KleidiAI enabled) DISABLED macOS Intel (x64) iOS XCFramework Linux: Ubuntu x64 (CPU) Ubuntu arm64 (CPU) Ubuntu s390x (CPU) Ubuntu 26.04 s390x (CPU) Ubuntu 26.04 s390x (zDNN) Ubuntu x6
ROCm/HIP: add RDNA4M family for gfx1170/gfx1171 (#31373) gfx117X is more like RDNA4, with 128b WMMA. But they're not identical. Adjust the defines accordingly to have a new RDNA4M and use it where it makes sense. Assisted-by: Codex Assisted-by: GitHub Copilot Co-authored-by: Mario Limonciello Website: link Attestations: link macOS/iOS: macOS Apple Silicon (a
Quant: OCP FP8 E4M3 support (#27512) WIP OCP FP8 E4M3 support Fix python type-checker Materialize inputscales also for FP8 when converting Fix conversion of link Per row FP8 wrongly fell to NVFP4 conversion, as NVFP4 checked on dims alone. Also check on dtype for FP8 Need to reshape FP8 QKV projections scales in the same way that weights are reshaped Allow r
model : Support Limite 1B - Violetto (#29433) gguf-py : add Limite arch Assisted-by: Claude Opus 5.5 Signed-off-by: Giuseppe Scrivano convert : add Limite support Assisted-by: Claude Opus 5.5 Signed-off-by: Giuseppe Scrivano llama : add Limite support Assisted-by: Claude Opus 5.5 Signed-off-by: Giuseppe Scrivano Signed-off-by: Giuseppe Scrivano Website: link
opencl: initial support for iq2 (#31267) opencl: add iq2s AOS mv opencl: add iq2s SOA mv and tiled mm opencl: add iq2s noshuffle gemm/gemv for adreno opencl: add iq2s dp4a for adreno opencl: optimize iq2s adreno decode and narrow batches Co-authored-by: Hongqiang Wang opencl: add iq2xs AOS mv opencl: add iq2xs SOA mv and tiled mm opencl: add iq2xs noshuffle
metal : faster MXFP4 mat-vec, full threadgroups for unary/binary/GLU (#31075) metal : faster MXFP4 mat-vec kernel Decode the fp4 values with the fp16 bit trick instead of a threadgroup lookup table, and load the packed nibbles as aligned 32-bit words. The kernel no longer uses threadgroup memory. metal : launch contiguous unary and binary ops with full threa
New Models Mistral Large 4 (Le Chonk) Mistral Large 4 is Mistral's largest and most capable model to date: a 1 trillion-parameter natively multimodal Mixture-of-Experts model with 49 billion active parameters per token (52 billion including embeddings and output layers), trained from scratch on 3,800 NVIDIA Grace Blackwell GPUs in Mistral's own datacenters i
hexagon: support for UPSCALE op (#31331) hex-upscale: basic upscale ops (not fully vectorized) hex-upscale: optimize nearest 2x, 4x and bilinear 4x hex-upscale: add support for non-contig rows and dims collapsing hex-upscale: use vgather instead of scalar staging hex-upscale: move all kernel select logic to the host, review comments and cleanups tests: add p
hexagon: improve DDR bw utilization in transposed CONCAT (#31277) hex-concat: double row block size for transposed CONCAT hex-concat: double buffer scratchpads hex-concat: chunked src1 rows in transposed concat hex-concat: pad src1 VTCM stride to spread gather lanes hex-vgather: apply similar vgather opts to SSMCONV and GDN Co-authored-by: Max Krasnyansky We
[SYCL] add DPAS flash attention kernel for quantized KV cache (#31125) sycl : add DPAS flash attention kernel for quantized KV cache Decode and small batches (1 to 31 query tokens) now run flash attention straight on q40 and q80 KV blocks, instead of scalar dequant or converting the whole cache to f16 per call. Q.K uses s8 x s4 and s8 x s8 DPAS on XMX, V.P s
sycl : vectorize reordered-layout dequantization stores (Q40, K-quants, IQ3, MXFP4) (#30976) sycl : widen reordered q40 dequantization stores The reordered-layout Q40 conversion kernel processed one qs byte per work-item with two scalar stores, strided 16 elements apart. Give it the same treatment the Q80 kernel got in #30775: a flat sycl::range<1> launch wi
ggml-openvino: slice view inputs of SCALE (#31334) SCALE now accepts a src0 view with arbitrary row strides. translatescale used the raw input, and on the dynamic path a VIEW translates to its whole source tensor, so a strided view input scaled the entire source. The model output then had the source's size, and copying it back overran the result buffer, whic
Hexagon: IM2COL improvement - block based HVX parallelization (#31050) hexagon: IM2COL over multiple threads with output-col blocks Assisted-by: Claude Opus 5.5 hex-im2col: fix padding handling hex-im2col: loop unroll common cases Co-authored-by: Max Krasnyansky Website: link Attestations: link macOS/iOS: macOS Apple Silicon (arm64) macOS Apple Silicon (arm6
common, mtmd: bound control vector layer indices and M-RoPE position loops (#31336) common: bound control vector layer indices by the model layer count A direction tensor layer index is parsed from the tensor name with no upper bound, and the buffer size and write offset are computed in int. A large index overflows both, so the accumulation writes before the
opencl: add tiled q4k GEMM for adreno (#30412) opencl: run the tiled q4K lmhead through a tiled GEMM at batch > 1 opencl: split tiled dp4a q4k gemm into its own file and test for dp4a Assisted-by: Codex Co-authored-by: Li He Website: link Attestations: link macOS/iOS: macOS Apple Silicon (arm64) macOS Apple Silicon (arm64, KleidiAI enabled) DISABLED macOS In
hexagon: add conv2d support (#30995) hexagon: add conv2d op hex-conv2d: add double-buffered staging hex-conv2d: full 64-wide activation block transpose straight from staged buffer hex-conv2d: implicit gemm hex-conv2d: remove scalar path and kernel hex-conv2d: unify conv2d kernel params for all paths hex-conv2d: scale HMX result before f16 storage and then re
LFM3 on Linux and Windows Liquid AI's LFM3 models, including text-to-speech in lfm3-audio and lfm3-omni, now run on Linux and Windows as well as Apple silicon. Full Changelog: link
ggml-cpu: SVE 256 bit implementation of gemmq6K8x8q8K kernel (#27472) q6k GEMM working cleanup review comments review comment addressed - removed pg168 incorporated the review comments - replaced switch with if and other points marking q8kblocklen UNUSEDto disable warning for non-i8mm cases Website: link Attestations: link macOS/iOS: macOS Apple Silicon (arm
sycl: work-group argmax for short TOPK rows (#31110) sycl: work-group argmax for short TOPK rows Used angelX to optimize SYCL/drama 3 coordination, results are as follows Rows with ncols <= max work-group size: one work-item per column, k rounds of work-group argmax. Ties take the lower column, NaN is never picked. Longer rows keep the existing paths. Arc Pr
OpenAI uses layered monitoring to detect frontier model misalignment and unauthorized agent behavior so responders can intervene before incidents escalate.
Ropes & Gray is developing AI for transactional diligence with OpenAI. Lawyers review grouped documents, summaries, and reports before advising clients.
OpenAI explains how we strengthened containment for frontier model training and evaluation, including offline environments and high-compute red-teaming.
Overview This release adds the LiquidAI LFM3 family (text, vision, audio and omni) together with a new experimental streaming-audio API in mtmd, and wires realtime audio in and out of the server through the new /v1/realtime and /tts endpoints. A batch of new architectures landed: DeepSeek V4.1 Flash, SenseNova U1, Beam, Kolibri-1, Flint, Muse Spark, Granite
chat : stop qwen3-coder reasoning and content before template separators (#30557) chat : strip trailing whitespace from parsed reasoning and content Assisted-by: Claude Fable 5.1 chat : stop qwen3-coder reasoning and content before template separators Assisted-by: Claude tests : remove the Qwen parser case from the chat session tests Assisted-by: Claude comm
server : add realtime conversation and transcription on /v1/realtime (#31269) server : add realtime conversation and transcription on /v1/realtime Co-authored-by: Xuan Son Nguyen Assisted-by: Claude Opus 5.5 examples : default the realtime client to the server port 9931 Assisted-by: Claude Opus 5.5 server : sample realtime responses right after their own dec
model : add LiquidAI/d1-2B and LiquidAI/d1-omni-2B (#31275) model : add LiquidAI/d1-2B and LiquidAI/d1-omni-2B Assisted-by: Claude Opus 5.5 convert : keep the speech task templates out of the d1 GGUFs Assisted-by: Claude Opus 5.5 small refactoring: nobatching Co-authored-by: Xuan Son Nguyen Website: link Attestations: link macOS/iOS: macOS Apple Silicon (arm
server: expose the reasoning effort levels of the chat template (#31271) server: expose the reasoning effort levels of the chat template The capability probe renders a user turn for each candidate level (minimal, low, medium, high, xhigh, max) and for an unknown level. A level is honored when it renders without raising and differently from the unknown level,
model : add LiquidAI/LFM3-Audio-2B and LiquidAI/LFM3-Omni-2B (#31257) model : add LiquidAI/LFM3-Audio-2B and LiquidAI/LFM3-Omni-2B Co-authored-by: Xuan Son Nguyen Assisted-by: Claude Opus 5.5 convert : read the LFM3-Audio config.json as released A transformers that knows lfm3audio rewrites the config into another layout (no lfm/encoder keys). Assisted-by: Cl
common : support deferred tools and toolreference content parts (#31256) common : support deferred tools and toolreference content parts Assisted-by: Claude Opus 5.5 common : credit the deferred tools co-author Co-authored-by: Aldehir Rojas <765227+aldehir@users.noreply.github.com> Assisted-by: Claude Opus 5.5 tests : fix the type check of the deferred tools
model : add LiquidAI/LFM3-1.7B and LiquidAI/LFM3-VL-2B (#31252) model : add LiquidAI/LFM3-1.7B and LiquidAI/LFM3-VL-2B Co-authored-by: Sigbjørn Skjæret Co-authored-by: Xuan-Son Nguyen Assisted-by: Claude Opus 5.5 tests : set the SWA rope base of the LFM3 test model Assisted-by: Claude Opus 5.5 llama : enable recurrent state rollback for LFM3 Assisted-by: Cla
llama : build the k-pool sparse selection independently of the kqmask shape (#31243) llama : build the k-pool sparse selection independently of the kqmask shape qwen4exp (QSA) and glm5-next pick cache cells by index and no longer read the kqmask values, but they still shaped the selection like the dense kqmask. Build the selection as [nkv, ntokens] over the
tests : speed up tensor data generation and model saving (#31145) tests : speed up tensor data generation and model saving Refactor savemodels to create only the model, not a llamacontext, which is not needed for saving. Replace the slow std::normaldistribution draw with a splitmix64 + box-muller normal generator. Assisted-by: dsh:llama.cpp/ggml-org/DeepSeek
vulkan: fix CI llvmpipe by allowing dim 3 broadcast in MULMAT (#31239) vulkan: allow dim 3 broadcast in MULMAT supportsop rejected every MULMAT whose src0 and src1 differ in ne3, although mulmm, mulmmq and mulmatvec already broadcast src0 over dim 3 through broadcast3. Such a matmul then ran on the CPU with a copy of the weight, and the split layout changed
server: add router device memory margin parameter for dynamic unloading (#21231) server: add --models-memory-max parameter to allow dynamically unloading models when they exceed a memory size threshold estimate with to-be-loaded model size included use noalloc to get memory requirements for model load only set model memorymb if not previously calculated use
model: Add MiniCPM-OCR-Jev (#30980) model : add MiniCPM-OCR-Jev support The model is a Qwen3.5-VL trunk with a value head read at the last token: it scores an OCR text against an image rendered from it, it does not generate. Add the openbmb-minicpm-ocr-jev decision type, served by POST /v1/systemone. The class scores are the pooled output of the sequence, re
metal : add GGMLOPTOPKMASK (#31230) metal : add GGMLOPTOPKMASK Port the fused top-k mask from the CUDA backend: a grid-stride kernel fills the output with -inf, then one threadgroup per row copies the mask values of the kept cells over it. Function constants drop the score, blocks and extra paths that a given graph does not use. Assisted-by: dsh:llama.cpp/gg
ggml : relax scale to non-contiguous views (#31146) ggml : relax scale to non-contiguous views SCALE requires src0 to be 1D-contiguous. Relax this to dim-0 contiguity with arbitrary row strides (ggmliscontiguousrows), same as the unary ops in the Metal backend. ggml: relax the assert in ggmlscaleimpl cpu: address src0 rows through their byte strides (f32, bf
tests : fix multi-seq split replay and partial-state cases for trained models (#31216) tests : fix multi-seq split replay against trained models The rollback snapshot is captured by the graph that decoded the rolled-back tail, while the reference context decodes the same prefix with different batch shapes. The two states differ in the last bits and trained m
llama : remove obsolete npad from memory instances (#31200) Every caller passes npad = 1 and the only two users clamp it to 256. Drop the parameter, the members and the trivially true kvsize assert. Assisted-by: dsh:llama.cpp/ggml-org/Qwen3.8-Flash-Next-GGUF (MacBook, M5 Max, 128GB) Website: link Attestations: link macOS/iOS: macOS Apple Silicon (arm64) macO
opencl: initial support for q3k (#31172) opencl: add q3k AOS mv opencl: add q3k SOA mv and tiled mm opencl: add q3k noshuffle gemm/gemv for adreno opencl: add q3k dp4a gemm for adreno Co-authored-by: Hongqiang Wang opencl: tune q3k kernels for adreno Co-authored-by: Hongqiang Wang Co-authored-by: Hongqiang Wang Website: link Attestations: link macOS/iOS: mac
hexagon: add GGMLHEXAGONVTCMSIZE (#31221) hexagon: add GGMLHEXAGONVTCMMB and GGMLHEXAGONNTHREADS caps Change-Id: Idffe1613c8db6f96aa842d43d1b2efaed45462a8 hexagon: rename VTCM cap to GGMLHEXAGONVTCMSIZE, drop NTHREADS cap Change-Id: If4c5b9ce9fd6b725c3561421c2295d40599d012d hexagon: make GGMLHEXAGONVTCMSIZE an override, accept K/M/G suffixes Change-Id: Ib8ee
Liquid AI LFM3 LFM3 is Liquid AI's new family of small models built for local agents, tool calling, and structured output, on Liquid's new tri-hybrid architecture. The family includes: lfm3: a 1.7B text model with a 256K-token context window lfm3-vl: adds image understanding lfm3-audio: speech recognition, translation, and text-to-speech in 18 languages lfm3
models : replace ggmltensor out-params with output structs (#31142) The hyper-connection and DSA graph builders wrote their extra outputs (post / comb gates, carried top-k selections, inject gates) through ggmltensor out-params. Return them in a small struct next to the primary output instead. Assisted-by: dsh:llama.cpp/ggml-org/Qwen3.8-Flash-Next-GGUF (MacB
ggml-cpu : rewrite concat as one row kernel for all types (#31179) Every dst row comes from src0 or src1, or for dim 0 from the row of src0 followed by the row of src1, so a single kernel covers every type: a dense source row is one memcpy, quantized types included, and a strided source is copied element by element with the element size known at compile time
common: pin model resolution on real HF repo layouts (#30548) tests: pin model resolution on real repo listings Extend test-model-resolution with 63 repo listings captured verbatim from the HF API, chosen to cover every file naming pattern found across 1237 GGUF repos of the major publishers and pruned to whole quant groups. Each repo pins its resolved plans
tests : refactor test-llama-archs to not link internal libllama symbols (#30880) test-llama-archs included src/llama-arch.h and src/llama-model-saver.h, which prevented building on Windows with shared libraries since the used symbols are not exported from the DLL. declare llamaarch wrappers around the internal llm arch query functions in the llama-ext.h stag
metal : stop overflow from happening in large matrix output offsets (#30072) Metal : stop overflow from happening in large matrix output offsets Assisted-by: Codex metal : widen batch offsets and MULMATID token indices Assisted-by: Codex Co-authored-by: feni6 <270037094+feni6@users.noreply.github.com> Website: link Attestations: link macOS/iOS: macOS Apple S
deepseekv4.1: follow-up review fixes (#31137) kv-cache : use ggmlbackendtensorcopy to refill the DSV4 K mirrors llama : move the Engram pad id to llamahparams and the token map to llamamodel The saver no longer needs the deepseek41 model class. deepseek41 : drop the F32 src1 request on the HC mixes matmul ggml : add softplus TODOs in the backends that still
cuda : use std::string instead of VLA for archName (#30463) cuda : use std::string instead of VLA for archName Modernize the code (old C style) and fix the following warnings: ggml/src/ggml-cuda/ggml-cuda.cu:180:19: warning: variable length arrays in C++ are a Clang extension [-Wvla-cxx-extension] 180 | char archName[archLen + 1]; | ^ ggml/src/ggml-cuda/ggml
common, grammar: add recursive depth limit, make it a requirement (#31153) common, grammar: add recursive depth limit, make it a requirement catch more recursive functions common : tidy up peg parser changes grammar : reject candidates in a loop, without a depth limit The depth limit in llamagrammarrejectcandidatesforstack counted the code points of a vocab
llama-quant : fix 4D tensor quantization using ggmlnrows() and name-based expert detection (#30820) llama-quant : fix quantizing 4D tensors nrowstotal was ne[1]ne[2], so for a 4D tensor only the first ne[2] slices were quantized and the rest of the rows were dropped. Use ggmlnrows(tensor) to count all rows, including ne[3]. Fixes #29916 llama-quant : detect
CUDA: fuse FFN gate/up matmuls and GLU in MMQ with interleaved gate/up rows (#29948) cuda: fuse FFN gate/up and GLU in MMQ with interleaved gate/up rows For prompt processing, run the gate and up matmuls of a dense FFN as one mulmatq launch and apply the GLU in the write-back. The loaders take the gate weights as a second pointer and fill the weight tile wit
vulkan: Add a larger tile size for conv3d (coopmat2 only) (#29920) vulkan: Add a larger tile size for conv3d (coopmat2 only) This adds a larger tile size, in practice it is only for coopmat2 where we don't need shared memory to store the output (would use more than 64KB). Add some additional representative backend tests. At least, this is what codex came up
vulkan : one warp tile per subgroup in the small matmul tiles (#30106) WM of the small tiles was 32, or 8 for 8-wide subgroups, whatever the tile's BLOCKSIZE and WARP. With 16-wide subgroups (Mali) the second subgroup of a workgroup wrote into the next tile's columns. With 8-wide subgroups some id tiles left rows uncomputed. Derive WM so there is one warp ti
hexagon: generic dims collapse/reshape for unary, binary and matmul ops (#31071) hex-tools: support for --compare option in the profile.py hex-unary: improve collapse logic to also do splits if nrows is small hex-colapse: handle all colapsing at the host and make it generic hex-colapse: remove leftover unary helper Website: link Attestations: link macOS/iOS:
opencl: add initial q2k support (#30999) opencl: add mulmvq2kf32 opencl: add q2k SOA mv and tiled mm opencl: add q2k noshuffle gemm/gemv for adreno opencl: add q2k dp4a gemm for adreno Co-authored-by: Hongqiang Wang opencl: tune q2k kernels for adreno Co-authored-by: Hongqiang Wang Website: link Attestations: link macOS/iOS: macOS Apple Silicon (arm64) macOS
chat : reject JSON nested more than 128 levels before walking it (#30242) chat : reject JSON nested more than 128 levels before walking it The schema builder, the jinja engine and the decision code walk request JSON with recursion. A request nested deep enough overflows the stack of the HTTP thread and llama-server dies (SIGBUS on macOS, SIGSEGV on Linux): f
model: DSV4.1 flash (#31086) model : add DeepSeek-V4.1-Flash (deepseek41) deepseek41 : remove MXFP8, convert the Engram table to BF16 deepseek41 : compute the compressed-KV read layers once in the cache deepseek41 : use getcells() for the shared-history check, drop llamakvcache::seqpostokle deepseek41 : gather the Engram rows in-graph like qwen4exp, drop the
hexagon: KV-head team split for multicore HMX flash attention (#31055) hexagon: KV-head team split for HMX flash attention in multicore hexagon: merge FAHEADSPLIT and FASPLIT into single GGMLHEXAGONFASPLIT flag 0 = off (token-split only); 1 = head-split, plus team-split when nkvheads < Ncores so stranded cores still participate (e.g. gemma-4 with 2 KV heads
metal : remove mulmmid amax rescaling (#30924) The src1 power-of-two rescale in kernelmulmmid is superseded by the per expert-token amax scaling done in the compute graph (ref: link), which keeps the MoE down-projection activations within f16 range before the op runs. Drop the two-stage reduction kernels, their scratch buffer and the GGMLPRECF32 dispatch add
minimax-m3 : forward quant scales to the graph (fixes #31063) (#31097) The generic scale pass in llama-model.cpp loads the per-expert NVFP4 scale2 tensors (ffn{up,gate,down}expss) and the per-tensor MXFP8 scales for the dense FFN and the shared expert, but minimax-m3.cpp never forwarded any of them to the graph. buildmoeffn() defaults these to nullptr, so bu
llama : deny -sm tensor for arches with moe amax rescaling (#31081) The amax POOL1D reduction spans the whole matmul row, so a device cannot compute it from an axis-0 split. The Meta split-state case reported MIRRORED, which gives each device a partial max of its own slice. Drop that case and deny -sm tensor for the arches which build the amax graph, see [TA
ggml : allow MULMATID -1 index to skip the computation (#26631) ggml : allow MULMATID -1 index to skip the computation nits update vulkan code ggml-webgpu: ensure all threads reach workgroup barriers in mulmatidvec (cherry picked from commit d8a4b9efb6e2b9abf3a866e847756b7e6bbc6b69) fix cuda openvino exclude CUDA from this PR add TODO tag Co-authored-by: yom
tests : add speculative rejection draft sampling test (#30213) tests : add speculative rejection draft sampling test This commit adds a test for speculative rejection sampling test that excercises the speculative rejection sampling mechanism in common/speculative.cpp. The motivation for this is have a test that verifies that the speculative draft models emit
HIP: add byte permute fallback when builtinamdgcnperm is unavailable (#30915) HIP: add byte permute fallback when builtinamdgcnperm is unavailable amdgcnspirv rejects target-specific builtins unless they are guarded by builtinamdgcnisinvocable, so 66 of 145 HIP files failed to build Wrap the perm calls in a helper that keeps vpermb32 when the target has it a
mtmd : lfm2 resize matches torchvision (#30943) mtmd : lfm2 bilinear resize matches torchvision Lfm2VlImageProcessor and d1-omni vision.py resize uint8 images with torchvision (antialias=True). That is Pillow's algorithm, except that the weights are int16 with as many fractional bits as the largest weight allows, where Pillow uses 22 bits. The Pillow port wa
mtmd : add Soprano TTS support (#28607) Add Soprano-80M and Soprano-1.1-80M (link) as an audio generation model: a Qwen3 backbone plus a Vocos decoder that runs as a gen-only mmproj. convert: detect Soprano checkpoints and export the backbone as qwen3 and the decoder.pth Vocos weights as the mmproj vocab: add the soprano pre-tokenizer (lowercase, whitespace
hexagon: add SGN op (#30346) hexagon : add SGN support Assisted-by: OpenCode hexagon : optimize SGN with sign bit Assisted-by: OpenCode hex-sgn: add f16 hex-unary: update SGN to use generic unarycolapse and relax colapse checks to apply to more conditions hex-unary: improve dims colapsing and run it in the host-side solver Co-authored-by: Max Krasnyansky Web
hip: fix bf16 WMMA operand vector type for gfx11/gfx12 (#30885) The builtinamdgcnwmmaf3216x16x16bf16w32 (and gfx12) builtins take their A/B operands as vectors of short (ExtVector<16, short> / ExtVector<8, short>), not bf16. Declaring the fragments as extvectortype(N) bf16 fails to compile: error: cannot initialize a parameter of type 'short attribute((extve
Speech Ollama can now generate speech on macOS. ollama run plays text or a chat model's reply aloud as the audio is generated, and apps can stream audio through the OpenAI-compatible /v1/audio/speech endpoint. ollama run phonon "Hello from Ollama." d3 decision models d3 brings vLLM Semantic Router's decision models to Ollama. Give a model text, structured st
NVIDIA Nemotron 3.5 Bolt E4B Nemotron 3.5 Bolt E4B is NVIDIA’s smaller, Gemma 4-based vision-language model for fast local conversations, image understanding, and tool use. It supports a 128K-token context window. The model includes a DFlash draft for speculative decoding. ollama run nemotron-3.5-bolt:e4b Full Changelog: link
Added 🧭 Analytics session explorer. Administrators can now open a Sessions tab in Admin Analytics that lists each chat with its tokens, responses, errors and time span, filters them by search, model, token range or sub-agents, and shows a chat's saved replies and tool calls with their timing and outcome, as long as "ENABLEADMINCHATACCESS" is on. Commit 📑 Pag
Python package version The Python wheels for this release are published as 1.4.0rc2.post1. Container images and documentation remain at 1.4.0rc2. Use 1.4.0rc2.post1 when installing the Python package. The wheel-only patch removes a direct Git dependency that prevented PyPI publication (#21128) and updates the Boost download mirror used during builds (#21133)
server: realtime API: send complete after committed audio drains (#30994) server: realtime API: send complete after committed audio drains server: realtime API: complete a commit at its end row Completion is triggered when the stream runs dry, which is a timing proxy: audio appended while the tail drains leaks into the committed item, a final commit before t
opencl: add depthwise conv2d (#30900) opencl: add Adreno depthwise conv2d Assisted-by: OpenCode opencl: use local program for depthwise conv2d Assisted-by: OpenCode opencl: use singed type for args Co-authored-by: Li He Website: link Attestations: link macOS/iOS: macOS Apple Silicon (arm64) macOS Apple Silicon (arm64, KleidiAI enabled) DISABLED macOS Intel (
model : fix qwen4exp layer inputs for DFlash drafters (#30927) qwen4exp published the hc-wide residual [nembd, hc, ntokens] as tlayerinp, but the drafter reads layer inputs as [nembd, ntokens] rows: llamacontext sizes each embdlayerinp buffer as nembd nbatch and the DFlash encoder input is nextract nembd wide. Evaluating a DFlash draft over a qwen4exp target
Multi-column on Intel XMX matrix engines refactored (#29864) Multi-column on Intel XMX matrix engines refactored Multi-column (2 to 80 activation columns) mulmatvecq for reordered K-quant and Q80 weights on the Intel XMX matrix engines (int8 DPAS, ESIMD), for the SYCL backend. It targets speculative decoding verification (2 to 8 tokens per step) and short pr
nemotron : support non-standard GQA, BPE tokenizer and domyn-small pre-type (#23343) nemotron : support non-standard GQA, BPE tokenizer and domyn-small pre-type gguf-py : write Metaspace prependscheme as GGUF metadata vocab : parse metaspace prependscheme into enum, rename key vocab : use metaspace prependscheme in detokenize, add TODOs for other tokenizers
server : support typed content input for RERANK endpoint (#29625) server : support typed content input for rerank endpoint Assisted-by: Opencode/Qwen3.8 27B server : address rerank multimodal review findings reject multimodal rerank input when the model has no rerank chat template (images were silently dropped) translate handlemedia download/base64 failures
sycl: fix CONV2D wrong results for non-contiguous input (#30363) sycl: fix CONV2D wrong results for non-contiguous input The kernel indexes the input as a contiguous [W, H, C, N] tensor, but supportsop claimed the op for any layout. A non-contiguous (e.g. CWHN permuted) input was read with the wrong element offsets, silently producing wrong results. Gate the
Flint on Linux and Windows Flint now runs on Linux and Windows as well as macOS. Other improvements Streaming OpenAI Responses and Anthropic Messages requests now report generation failures instead of ending silently after partial output. ollama launch now passes cloud models' context lengths and capabilities to coding tools, fixing incorrect context and com
opencl: add F32-to-I32 ARGMAX (#30897) opencl: add F32-to-I32 ARGMAX Assisted-by: OpenCode opencl: init to 0 to be consistent with cpu Co-authored-by: Li He Website: link Attestations: link macOS/iOS: macOS Apple Silicon (arm64) macOS Apple Silicon (arm64, KleidiAI enabled) DISABLED macOS Intel (x64) iOS XCFramework Linux: Ubuntu x64 (CPU) Ubuntu arm64 (CPU)
model: Add support for SenseNova U1 model (#28919) model : add SenseNova U1 understanding support Add support for the dense SenseNova U1 understanding branch, including the U1.5-8B-MoT model. Add HF-to-GGUF conversion for NEOChatModel, excluding MoT generation tensors and concatenating temporal and spatial Q/K normalization weights. Register the sensenovau1
llama: create new fused op for QSA mask (#30640) llama: create new fused op for QSA scoring enroll glm5.3-next too tests : initialize the remaining tensors in testkpoolmask The harness sentinels were left uninitialized, so leftover memory could read as NaN and fail the NaN check. ggml: generalize the k-pool mask op into ggmltopkmask The k-pool mask op only c
Recursive Flint Flint brings Recursive's coding model to Ollama. It is designed for the work coding agents do across a repository: understanding unfamiliar code, tracing bugs, implementing features, and adding tests. Reasoning, multi-turn tool use, and a 262K-token context window support longer tasks across files and tool interactions. Flint is an Apache 2.0
ggml-opencl : add IM2COL3D support (#30895) ggml-opencl : add IM2COL3D support Assisted-by: OpenCode opencl: use same type for kernel and host opencl: fix for older adreno Co-authored-by: Li He Website: link Attestations: link macOS/iOS: macOS Apple Silicon (arm64) macOS Apple Silicon (arm64, KleidiAI enabled) DISABLED macOS Intel (x64) iOS XCFramework Linux
server : forward llama.cpp sampling params on /v1/messages (#30856) server : forward llama.cpp sampling params on /v1/messages server : pass the request through on /v1/messages instead of copying listed keys NIT: Change comment from multiline to single line server : accept llama.cpp params under extraparams on /v1/messages server : remove test case for trivi
llama : place d2t by its setrows use so it can stay on the GPU (#30912) Website: link Attestations: link macOS/iOS: macOS Apple Silicon (arm64) macOS Apple Silicon (arm64, KleidiAI enabled) DISABLED macOS Intel (x64) iOS XCFramework Linux: Ubuntu x64 (CPU) Ubuntu arm64 (CPU) Ubuntu s390x (CPU) Ubuntu x64 (Vulkan) Ubuntu arm64 (Vulkan) Ubuntu x64 (CUDA 12) -
hexagon: neon-vectorized and threaded repack (tiling) (#30901) add vectorized q40 repack apply to more types hex-repack: neon-vectorize the rest of the types q1/q2/f16/... hex-repack: add simple chunking / threading Co-authored-by: hubezhou Website: link Attestations: link macOS/iOS: macOS Apple Silicon (arm64) macOS Apple Silicon (arm64, KleidiAI enabled) D
ggml-cpu : compute f32 geluquick and gegluquick without the fp16 table (#30737) ggml-cpu : compute f32 geluquick and gegluquick without the fp16 table ggml-cpu : keep the GGMLGELUQUICKFP16 table path ggml-cpu : add the VXE geluquick path tests : add test-gelu-quick for the f32 CPU kernels tests : drop inf/nan inputs from test-gelu-quick Website: link Attesta
llama : scale moe down projection per expert token (#30861) llama : scale moe down projection per expert token Replace the global amax rescaling for the MoE down projection with a per-expert-token factor computed by a POOL1D max reduction along the intermediate dimension. Undo the scale on the output with the same exact power-of-two factor. Handle POOL1D in
server : add POST /tts endpoint for TTS models (#26603) mtmd: add audio out stream api add /tts endpoint add docs wire up mtmdhelpermodelcanchat upload speakerref via form-data expose seed to api fix header for pcm wip fix penaltylastn fix serveroutputlimits fix pocket-tts stream wip add serverschema for tts add server routing server: coerce seed and stream
server: add realtime transcription API (#30636) server: add realtime transcription API drop transcriptionsessions proxy ws add docs server: let the API key middleware guard the websocket httplib runs the pre-routing handler before the websocket upgrade, so the API key middleware answers 401 at handshake like any other route. This covers the router proxy, who
qwen: reshape output to 2d instead of 3d (#30823) qwen: reshape output to 2d instead of 3d remove final reshape, fix comments Website: link Attestations: link macOS/iOS: macOS Apple Silicon (arm64) macOS Apple Silicon (arm64, KleidiAI enabled) DISABLED macOS Intel (x64) iOS XCFramework Linux: Ubuntu x64 (CPU) Ubuntu arm64 (CPU) Ubuntu s390x (CPU) Ubuntu x64
server: Support logprobs with speculative decoding (#27196) return logprobs in spec path server: add regression test for logprobs with speculative decoding Asserts accepted draft tokens report the target model's logprobs, comparing a draft-enabled run against a no-draft baseline (#24271). Fails on master (toplogprobs empty, logprob 0.0), passes with the fix
mtmd : lfm2 tiles and layout match transformers (#30261) mtmd : lfm2 tiles stretch the image to the grid Lfm2VlImageProcessor.cropimagetopatches resizes the image straight to (512 rows, 512 cols) before it cuts the tiles. llama.cpp kept the aspect ratio and added black bars for LFM2 (only d1-omni stretched), so the tiles of d1-3B and every LFM2-VL / LFM2.5-V
model : add H2O-Lightning-4B decision model (#30361) model : add H2O-Lightning-4B decision model Adds the h2o-lightning decision type for h2oai/h2o-lightning-4b (Qwen3.5-4B with a merged decision LoRA). None of the existing types match this model. It answers with " A" rather than "A", uses up to 255 labels, and was trained on Python json.dumps text, so float
server: Router wasn't propagating the client disconnects fully to the child, the response wait could cause a delayed cancellation (#29707) Router wasn't propagating the client disconnects fully to the child, the response wait could cause a delayed cancellation tests: satisfy router disconnect type check server : remove timing-sensitive router cancellation te
server: fix missing outputindex in Responses API SSE events for compatibility (#30863) server: include outputindex in Responses API SSE events server: reuse Anthropic streaming code for fix outputindex server: remove unnecessary generatedtoolcallids and oairesptoolcallsstarted Website: link Attestations: link macOS/iOS: macOS Apple Silicon (arm64) macOS Appl
mtmd : read LFM2 tiling params from GGUF metadata (#30840) mtmd : read LFM2 tiling params from GGUF metadata Write mintiles, maxtiles, tilesize and maxpixelstolerance from processorconfig.json when converting LFM2-VL mmproj, read them in clip.cpp with the previous constants as defaults. doimagesplitting=false maps to mintiles=maxtiles=1 (no tiling). Rebased
model : drop the redundant precision overrides in the Kolibri-1 router (#30865) model : drop the redundant precision overrides in the Kolibri-1 router Follow-up to the review in #30673: the router matmul works with the default precision, so both ggmlprecset calls can go away. Assisted-by: pi:llama.cpp/ggml-org/Qwen3.8-Flash-Next-GGUF (MacBook, M5 Max, 128GB)
opencl: add several gemm variants for small batches and some fixes (#30850) opencl: fix OOB read in mulmvmxfp4f32flat opencl: remove large-N guard that forces CPU weight placement this condition claims that large batch produces incorrect results on adreno and cannot be reproduced model loader uses N512 to probe op support, resulting in cpu fallback thus this
ggml-cpu : select the NEON fp32->fp16 conversion (#30505) The ARMNEON branch defines both GGMLCPUCOMPUTE macros but selects only FP16TOFP32, so FP32TOFP16 falls through to the portable software conversion while neoncomputefp32tofp16, a single fcvt, stays defined and referenced by nothing. POWER9VECTOR and riscvzfhmin select both. Add an #error pair that refu
server : pass idslot through the Anthropic /v1/messages conversion (#28554) server : pass idslot through the Anthropic /v1/messages conversion serverchatconvertanthropictooai copies a small whitelist of common params from the Anthropic request into the internal OAI-style body and left idslot out. Every other completion endpoint honours idslot; a proxy that p