Original release notes
LocalAI 4.2.0 Release!
LocalAI 4.2.0 is out!
This release teaches LocalAI to see and hear. New /v1/voice/* and /v1/audio/diarization endpoints, a full face-recognition pipeline with antispoofing, word-level timestamps for faster-whisper, and a client-cancellable Whisper. There is also a drop-in Ollama API, video generation in stable-diffusion.ggml, a redesigned chat with i18n and admin-configurable branding, eleven new backends, an interactive model config editor with autocomplete, and a hardened distributed mode v2. vLLM finally hits feature parity with llama.cpp and gets tensor-parallel distributed workers.
---
TL;DR
| Feature | Summary | |---------|---------| | Voice Recognition | New /v1/voice/*. Verify, identify, embed and analyze speakers. | | Face Recognition + Liveness | 1:1 verify, 1:N identify, detect, analyze, embed, and reject spoofed photos. | | Diarization | New /v1/audio/diarization endpoint, "who spoke when?" via sherpa-onnx + vibevoice.cpp. | | Better Transcriptions | Word-level timestamps, client-cancellable Whisper, segments + duration + language on the stream-done event. | | Ollama API | Drop-in compatibility. Point your ollama client straight at LocalAI. | | Video Generation | stable-diffusion.ggml now generates video (i2v, first-last-frame). | | Redesigned UI | Chat redesign, Nord palette, i18n (5 languages), admin-configurable branding. | | Interactive Model Editor | Autocomplete-driven config editor in the UI. | | Universal Importer | Imports across most backends, not just llama.cpp. | | Concurrency Groups | Per-model exclusive groups for safe backend loading. | | 11 New Backends | sglang, ik-llama-cpp, TurboQuant, sam.cpp, Kokoros, qwen3tts.cpp, tinygrad-multimodal, LocalVQE, vibevoice-cpp, insightface (liveness), voice-rec. | | vLLM @ parity | Feature parity with llama.cpp + tensor-parallel distributed workers + full engine_args. | | Distributed v2 | Hardened orchestrator, round-robin replicas, scoped Upgrade All, NATS install/upgrade split. |
---
New Features & Major Enhancements
Voice Recognition
LocalAI is now ears-on. New /v1/voice/* endpoints let you verify, identify, analyze and embed speakers, powered by a SpeechBrain + ONNX Python backend.
- 1:1 Verify, "is this the same speaker?"
- 1:N Identify, "who is talking, out of my enrolled users?"
- Embeddings, voice fingerprints for your own pipelines
- Analyze, age, gender, emotion attributes per segment
Pairs naturally with the new diarization endpoint for full speaker pipelines.
---
Face Recognition & Antispoofing
A complete face-biometrics pipeline, built on InsightFace + ONNX.
- 1:1 Verify, match two faces
- 1:N Identify, resolve a face against an enrolled set
- Detection & Analysis, find faces, extract attributes (age, gender, emotion, race)
- Embeddings, facial fingerprints for your own stack
- Antispoofing (liveness), reject spoofed photos and videos
Samples never leave your machine. They go only to the running backend.
---
Diarization & a smarter audio pipeline
Audio is a first-class citizen now.
/v1/audio/diarization, segments speech by speaker turn (sherpa-onnx + vibevoice.cpp)- Word-level timestamps for faster-whisper
- Client cancellation for Whisper via the ggml
abort_callback. Stop a transcription mid-flight and free the GPU. - Stream-done metadata on
/v1/audio/transcriptions.segments,durationandlanguageon the final event. - Audio transformations UI (LocalVQE), explore audio FX directly from the React UI
- Transcription error visibility, handler errors land in the access log and on the client
---
Ollama drop-in API
Point your existing Ollama client at LocalAI. Everything keeps working. Another front door, same engine.
OLLAMA_HOST=http://localhost:8080 ollama run qwen3
---
Video Generation
The stable-diffusion.ggml backend now generates video, with curated gallery entries for Wan 2.1 FLF2V 14B 720P and Wan i2v 720p, plus a new stablediffusion-ggml-development meta backend to track the cutting edge.
---
React UI: total refresh
A massive UI cycle landed in 4.2:
- Chat redesign, cleaner layout, faster perceived latency, better message density
- Editorial refresh with the Nord palette, calmer, more focused, dark-mode-first
- Multilingual / i18n, English, Italiano, Espanol, Deutsch,
- Brandable instance, admin-configurable name, tagline, and assets (logo, favicon)
- Interactive model config editor, autocomplete over known fields, live validation, automatic file-renaming on save
- Backend management UX, revamped backend list with concrete versions
- Better error UX, distributed backend management errors surface cleanly
Self-host with your branding. The login page, sidebar, footer, and browser tab all pick up the instance name and logo.
---
Backend & model lifecycle
- Backend versioning with automatic upgrade detection
- Pin models so they survive the reaper
- On-demand toggle per model to control auto-load
- Concurrency groups, per-model exclusive groups so heavy backends won't trample each other
- Universal importer, single flow that imports across most backends, with clean multi-shard GGUF handling and dedicated importers for vibevoice-cpp and whisper.cpp HF repos
---
New Backends!
| Backend | What it brings | |---|---| | sglang | High-throughput LLM serving + speculative decoding (EAGLE/EAGLE3/DFLASH/MTP) | | ik-llama.cpp | ikawrakow's llama.cpp fork | | TurboQuant | Quant-focused llama.cpp fork | | sam.cpp | Segment Anything detection | | Kokoros | Rust-native Kokoro TTS | | qwen3tts.cpp | Qwen3 TTS | | tinygrad-multimodal *(experimental)* | tinygrad-powered multimodal | | vibevoice.cpp | Diarization-grade speech | | LocalVQE | Audio transformations / FX | | insightface | Face antispoofing | | voice-rec | Speaker recognition / embeddings |
---
vLLM at parity (and beyond)
- vLLM parity with llama.cpp, same feature surface, same ergonomics
- vLLM
engine_args, the fullAsyncEngineArgsexposed via a generic YAML map - Tensor-parallel distributed workers, fan a single model across nodes
- CUDA 13 builds for vLLM, vLLM-omni and sglang
- L4T arm64 (CUDA 13), vLLM/vLLM-omni/sglang variants for Jetson-class arm64
- MLX backend refactored, shared helpers and enhanced functionality
- llama.cpp
split_modefor explicit multi-GPU placement - Speculative decoding wired through for llama.cpp, Gemma 4 thinking support added
- Vision / mtmd marker propagated from the backend via
ModelMetadata
---
Distributed Mode v2
Distributed mode keeps maturing. This release was a hardening pass across the orchestration loop:
- Orchestrator resilience, auto-upgrade routing, worker bind-wait, RAG-init crash, log-spam fixes
- Round-robin across replicas of the same model
- Upgrade All scoped to nodes that actually have the backend installed
- NATS install / upgrade split,
backend.upgradeno longer piggybacks on install - Cached-replica lookup honors NodeSelector, the reconciler no longer scales up empty backends
- VRAM/RAM reporting correct on NVIDIA unified-memory hosts
- Agent nodes, queue loops stop on teardown, dead-letter cap added
- Autoscaling, load-model extracted from
Route()and applied during autoscale
---
Auth & Security
- Settings API, env-supplied
ApiKeysare stripped before persisting (no accidental leaks) - grpc-server hardening, removed unsafe
sprintf()in the C++ grpc server - OIDC, bumped
go-oidc/v3to 3.18.0 - Security hardening pass across the codebase
- AI coding assistants policy, LocalAI now follows the Linux kernel's DCO/attribution guidelines (
Assisted-by:trailer, no AI co-authors)
---
Hardware & deployment
- CUDA 13 for vLLM, vLLM-omni, and sglang
- NVIDIA L4T arm64 (CUDA 13) for Jetson-class boards
- ROCm 7.x bumped to latest
- gfx1151 (Strix Halo / Ryzen AI MAX) support,
AMDGPU_TARGETSexposed as a build-arg - Intel GPU, latest oneapi-basekit (b70 support) across Intel images
- arm64 CI, cpu-whisperx and cpu-faster-whisper now ship arm64 images
- whisperx, ROCm/HIPBLAS target dropped (pinned to rocm6.4 wheels)
---
Under the Hood
- Better CLI errors with actionable guidance
- golangci-lint baseline (
new-from-merge-base) keeps drift in check - Coding-agent discoverability, new APIs let coding agents introspect and configure LocalAI
- Autoparser, prefers backend-emitted chat deltas, correct logprob passthrough, strips partial reasoning tags during warm-up
- Reasoning + tools, no more empty content from thinking models in retry loops
- Streaming hygiene, deduped content, deduped tool calls, recovered reasoning, unique
tool_callIDs in deferred flushes - HTTP, handler-error status now visible in the access log + transcription error surface
- Backend monitor accepts
modelas a query parameter - Config loader, YAML backup files are ignored
- GGUF thinking probe respects explicit
reasoningconfig - Inference defaults refreshed from Unsloth
- Embeddings on collection upload, dim changes handled gracefully
- Python backends, JIT subprocesses use
tempfile.gettempdir()instead of hardcoded/tmp - Draft model paths, relative paths now resolve against the models dir
- whisper-cpp: implement streaming transcription and context cancellation
---
Notable fixes
- Cascading user deletion on PostgreSQL, deleting a user removes all owned data
- Importer emits all shards for multi-part GGUF models
- Open Responses parses OpenAI-spec nested
tool_choiceand uses the correct setter - llama-cpp:
server-chat.cppincluded in grpc-server TU,common -> llama-commonrename, turboquantcommon.hdetection - ik-llama-cpp: adapted to
common_grammarinsampling.h, patchedclip.cppfor the newggml_quantize_chunksignature - Kokoros: trait stubs (
face_verify,face_analyze,audio_transcription_stream), CI publish - stable-diffusion.ggml: MP4 container forced in ffmpeg mux, new i2v options
- Gallery: orphaned meta-backend uninstall, gemma-4 URIs, flux-kontext param overrides, Wan dedup, z-image-turbo load, Qwen3.5 typo override, tag-casing normalization
- Streaming: content + tool-call dedup, reasoning recovery, unique tool-call IDs in deferred flush
- Realtime: consume ChatDeltas when the C++ autoparser clears
Response - Tool-calls: use
SetFunctionCallNameStringwhen forcing a specific tool - Faster-whisper: cast segment timestamps to int after multiplication
- mlx-vlm: pinned to v0.4.4 to unblock CUDA builds
- vLLM: dropped flash-attn wheel to avoid torch 2.10 ABI mismatch
- Downloader: list supported URL schemes in
DownloadFileerrors - Backend: resolve relative
draft_modelpaths against the models dir - CI: wire
AMDGPU_TARGETSthrough the backend workflow, switch gallery-agent tosigs.k8s.io/yaml, recover rerankers + vllm-omni on aarch64, unbreak master CI for docs/kokoros/vibevoice-cpp ABI
---
Gallery additions
- Wan 2.1 FLF2V 14B 720P (video)
- Wan i2v 720p (image-to-video)
- stablediffusion-ggml-development meta backend
- chroma1-hd (diffusers)
- Gemma 4 (+ mmproj)
- EmbeddingGemma
- Qwen 3.5, Qwen-ASR, OCR entries for llama.cpp
- Qwen3-VL Reranker, Qwen3-VL Embedding (tagged)
- A steady stream of automated gallery-agent model additions throughout the cycle
---
The Complete Local Stack for Privacy-First AI
The free, Open Source OpenAI alternative. Drop-in REST API compatible with OpenAI specs for local AI inferencing. No GPU required.
Link: https://github.com/mudler/LocalAI
Local AI agent management platform. Drop-in for OpenAI's Responses API, with advanced agentic capabilities and a no-code UI.
Link: https://github.com/mudler/LocalAGI
RESTful API and knowledge-base management providing persistent memory and storage for AI agents. Pairs with LocalAI and LocalAGI.
Link: https://github.com/mudler/LocalRecall
---
Thank You
LocalAI is a true FOSS movement, built by contributors, powered by community.
If you believe in privacy-first, self-hosted AI:
- Star the repo
- Contribute code, docs, translations or feedback
- Share with others
Your support keeps this stack alive.
---
Full Changelog
Click to expand full changelog
What's Changed
Bug fixes :bug
- fix(autoscaling): extract load model from Route() and use as well when doing autoscale by @mudler in https://github.com/mudler/LocalAI/pull/9270
- fix(nodes): better detection if nodes goes down or model is not available by @mudler in https://github.com/mudler/LocalAI/pull/9274
- fix: try to add whisperx and faster-whisper for more variants by @mudler in https://github.com/mudler/LocalAI/pull/9278
- fix: thinking models with tools returning empty content (reasoning-only retry loop) by @mudler in https://github.com/mudler/LocalAI/pull/9290
- fix(streaming): deduplicate tool call emissions during streaming by @mudler in https://github.com/mudler/LocalAI/pull/9292
- fix(streaming): skip chat deltas for role-init elements to prevent first token duplication by @mudler in https://github.com/mudler/LocalAI/pull/9299
- Fix load of z-image-turbo by @thelittlefireman in https://github.com/mudler/LocalAI/pull/9264
- fix(agents): handle embedding model dim changes on collection upload by @mudler in https://github.com/mudler/LocalAI/pull/9365
- fix(gallery): correct gemma-4 model URIs returning 404 by @mvanhorn in https://github.com/mudler/LocalAI/pull/9379

