Releases: mudler/LocalAI
Release list
v4.7.1
What's Changed
Other Changes
- fix(config): only inject llama.cpp serving options on the llama.cpp path by @localai-bot in #10822
Full Changelog: v4.7.0...v4.7.1
v4.7.0
🎉 LocalAI 4.7.0 Release! 🚀
LocalAI 4.7.0 is out!
This release widens what LocalAI can generate and how you drive it: a UI-managed voice cloning library, local video and audio-driven avatar generation, and interleaved reasoning that travels with tool calls. It also lands new audio engines (one-pass diarized transcription, F5-TTS, true streaming TTS) and a batch of reliability fixes across auth, transcription, and the model gallery.
Highlights:
- 🎙️ Managed voice cloning - record or upload a consented reference in the UI, save it as a reusable profile, and reference it from any cloning-capable TTS backend with a stable
localai://voice-profiles/<id>URI. No more hand-edited YAML or copying audio into model folders. - 🎬 Local video & avatars - a new
longcat-videobackend brings text-to-video, image-to-video, and audio-driven talking-avatar generation, wired into the Studio UI with audio and reference-image controls. - 🧠 Interleaved thinking with tool calls - an assistant turn can now carry
reasoningandtool_callstogether and keep the reasoning across the tool-result loop, with areasoning_contentinbound alias and Anthropicthinkingblock support. - 🗣️ New audio engines - one-pass diarized transcription (
moss-transcribe-cpp), F5-TTS voice cloning in CrispASR, and true streaming TTS in vibevoice-cpp (time-to-first-audio 2.38s vs 39.96s on CPU). - 🎚️ Auto full context -
context_size: -1runs a model at its full trained context window, read from GGUF metadata per-model, with a VRAM-fit warning. - 🖥️ Sharper control - pick which GPUs llama.cpp offloads to (
devices:), and a new model-load cooldown stops a deterministically-failing model from respawning its backend on every poll and leaking VRAM.
Plus DFlash speculative-decoding gallery models, an OIDC fix for EC/PS/EdDSA-signed tokens, transcription language/translate settings that reach the backend, and the usual set of dependency updates.
📌 TL;DR
| Area | Summary |
|---|---|
| 🎙️ Voice Library | Admin-managed voice cloning profiles: record/upload consented reference audio in the UI, preview, and reference via localai://voice-profiles/<id>. New GET/POST/DELETE /api/voice-profiles, MCP tools (list/create/delete_voice_profile), and a typed tts.voice_cloning config. Cloning declared as a capability across 12+ TTS backends (self-discovered, no hardcoded backend names). |
| 🎬 LongCat video & avatars | New longcat-video Python backend: text-to-video, image-to-video, and LongCat-Video-Avatar 1.5 audio-driven avatars. Gallery entries longcat-video and longcat-video-avatar-1.5; new known_input_modalities/known_output_modalities config fields; /video endpoint extended with staged audio. CUDA 12/13 x86_64 + CUDA 13 ARM64 images. |
| 🧠 Interleaved thinking | Assistant turns carry reasoning + tool_calls together and preserve reasoning across the tool loop. reasoning_content accepted as an inbound alias; Anthropic Messages local path round-trips thinking blocks (gated on thinking: {type: "enabled"}). |
| 🗣️ moss-transcribe-cpp | New Go backend over the C++/ggml MOSS-Transcribe-Diarize port: joint multi-speaker transcription + diarization + timestamps in one pass. Gallery model moss-transcribe-cpp-0.9b. Offline; 1.6-2.2x faster than reference on CPU, bit-exact on CUDA. |
| ⚡ vibevoice streaming TTS | Real incremental streaming via vv_capi_tts_stream: TTFA 2.38s vs 39.96s batch (~17x) on CPU for VibeVoice-Realtime-0.5B. |
| 🎨 F5-TTS | F5-TTS linked into CrispASR + f5-tts-crispasr gallery model (24kHz, voice cloning via voice:/voice_text: options). |
| 🎚️ context_size: -1 | Negative context_size (or LOCALAI_CONTEXT_SIZE=-1) resolves to the model's n_ctx_train from GGUF metadata, with a GPU-only VRAM-fit warning and a safe clamp so no backend ever sees a negative window. |
| 🖥️ llama.cpp device selection | options: [devices:CUDA1,CUDA2] restricts offload to named GPUs (from --list-devices). |
| 🛡️ Model-load cooldown | A failed load enters a cooldown (default 10s, geometric growth capped at 5m) so polling clients get 503 + Retry-After instead of respawning a crashing backend and leaking GPU memory. |
| 🧠 Speculative decoding models | Four Qwen DFlash gallery entries (4B / 9B / 27B / 35B-A3B), each bundling target + drafter, spec_type:draft-dflash. |
🚀 New Features & Major Enhancements
🎙️ Managed voice cloning profiles (Voice Library)
Record or upload a consented reference, save it as a reusable profile, and reference it from any cloning-capable TTS backend.
Voice cloning becomes a first-class, UI-driven workflow. Record or upload consented reference audio in the React UI, normalize it to WAV, preview it, and save it as a named profile. Reference the profile from the TTS UI or /v1/audio/speech with a stable localai://voice-profiles/<id> URI, no YAML editing and no copying audio into model directories.
- New REST surface:
GET /api/voice-profiles,GET /api/voice-profiles/:id/audio,POST /api/voice-profiles(admin),DELETE /api/voice-profiles/:id(admin), surfaced in Swagger,/api/instructions, and the auth capability registry. MCP admin toolslist_voice_profiles,create_voice_profile,delete_voice_profile. - New typed config
tts.voice_cloning(bool) opts custom model names in or out of Voice Library compatibility;falsealso rejects saved profile references with HTTP 400. Request precedence isvoice->tts.voice->tts.audio_path; existing options still work with no breaking change. - Compatibility is server-discovered from backend capabilities (the frontend hardcodes no backend names) and offers gallery models to install when none are present. Cloning is declared in the capability registry for
vllm-omni,vibevoice-cpp,coqui,pocket-tts,qwen-tts,qwen3-tts-cpp,faster-qwen3-tts,fish-speech,neutts,chatterbox,voxcpm,omnivoice-cpp, and model-dependentcrispasr. - Cross-backend contract: reference WAV + exact transcript via
params.ref_text. E2E verified on qwen3-tts-cpp (4.47s reference produced a non-silent 3.44s 24kHz WAV).
🔗 PRs: #10799
🎬 LongCat video and avatar generation
A new longcat-video Python backend brings local video generation to LocalAI: text-to-video, image-to-video, and LongCat-Video-Avatar 1.5 for audio-driven talking avatars. It is wired into the React Studio UI with audio and reference-image controls.
- Gallery entries
longcat-video(text+image input, video output) andlongcat-video-avatar-1.5(text+image+audio input, video output). Backend images: CUDA 12 and CUDA 13 x86_64, plus CUDA 13 ARM64 (DGX Spark / NVIDIA ARM64 guidance included). - Introduces declarative capability metadata: new
known_input_modalities/known_output_modalitiesconfig fields so generic code discovers what a checkpoint accepts instead of branching on backend or checkpoint names. The HF importer emits matching self-describing recipe metadata. - The
/videoendpoint gains staged audio and video-generation parameters, with distributed audio staging (input bounded to 128 MiB). Avatar mode supports multi-segment generation, BF16 or optional INT8 quantization, and distillation settings, documented in a newfeatures/longcat-video.mdpage.
🔗 PRs: #10792
🧠 Interleaved thinking with tool calls
An assistant turn can now carry reasoning and tool_calls together, and the reasoning survives the tool-result loop across turns. This is uniform, tested, and documented behavior rather than a per-backend accident.
- OpenAI chat messages accept
reasoning_contentas an inbound alias for the canonicalreasoningfield (vLLM/DeepSeek/cogito-style clients emit it); emission is unchanged and the canonical field wins when both are present. - The Anthropic Messages local path round-trips
thinkingblocks: inboundthinkingblocks parse into the message reasoning, and athinkingblock is emitted beforetool_useon both non-streaming and streaming responses, gated on the request paramthinking: {type: "enabled"}. The cloud-proxy passthrough path is untouched. - Verified live:
lfm2.5-8b-a1bandgemma-4-e2breturnreasoningplus structuredtool_callsin a single turn. A newfeatures/interleaved-thinking.mddoc is cross-linked from the model-configuration, text-generation, and functions guides.
🔗 PRs: #10744
🗣️ New audio engines: diarized transcription, F5-TTS, and streaming TTS
Three additions widen the audio surface:
- moss-transcribe-cpp (#10756): a new Go backend that dlopens the C++/ggml MOSS-Transcribe-Diarize port to do joint multi-speaker transcription, diarization, and timestamps in a single offline pass. Gallery model
moss-transcribe-cpp-0.9b(defaultq5_kGGUF). The ggml port is byte-exact to the reference PyTorch and 1.6-2.2x faster on CPU, bit-exact on CUDA (verified on Blackwell / Jetson Thor). Builds across the full Linux matrix plus Darwin/Metal. - F5-TTS in CrispASR (#10753): links the F5-TTS static runtime into the CrispASR build (SWivid, MIT; a 22-layer DiT flow-matching model with a built-in Vocos vocoder) and ships an
f5-tts-crispasrgallery model. Produces 24kHz mono audio and auto-detects asf5-tts(nobackend:selector). Voice cloning via `options: [voice:...
v4.6.2
What's Changed
👒 Dependencies
- chore(deps): bump actions/cache from 4 to 6 by @dependabot[bot] in #10704
Other Changes
- refactor: use slices.Contains to simplify code by @weifanglab in #10702
- fix(ci): shard single-arch backend matrix under GitHub's 256-job limit by @localai-bot in #10703
- chore(model gallery): add MiniCPM series models by @ZMXJJ in #10699
New Contributors
- @weifanglab made their first contribution in #10702
- @ZMXJJ made their first contribution in #10699
Full Changelog: v4.6.1...v4.6.2
v4.6.1
What's Changed
Other Changes
- fix(auth): log the real cause of OIDC/OAuth user-info failures by @localai-bot in #10679
- feat(api): add GET /v1/models/capabilities endpoint by @localai-bot in #10687
- chore: ⬆️ Update CrispStrobe/CrispASR to
1109cb3fcae2e242c2b3d42ec0e3fd6e813f2ce7by @localai-bot in #10685 - chore: ⬆️ Update ggml-org/llama.cpp to
665892536dfb1b7532161e3182304bd35c33e768by @localai-bot in #10681 - chore(model-gallery): ⬆️ update checksum by @localai-bot in #10686
- chore: ⬆️ Update vllm-metal (darwin) to
v0.3.0.dev20260704102955by @localai-bot in #10668 - fix(ui): center the home empty-state wizard by @localai-bot in #10691
- docs: ⬆️ update docs version mudler/LocalAI by @localai-bot in #10680
- chore: ⬆️ Update CrispStrobe/CrispASR to
09df654e304947f7521e1f52992ceacccf03c300by @localai-bot in #10693 - chore: ⬆️ Update ServeurpersoCom/omnivoice.cpp to
daedb763fd442e0916eb130a479fdd74947291c0by @localai-bot in #10682 - chore: ⬆️ Update ServeurpersoCom/qwentts.cpp to
73fe0c67bbf0898ba2999535e0680a02a7f8537dby @localai-bot in #10683 - feat(agents): native Prometheus metrics for agent chat runs by @walcz-de in #10689
- chore: ⬆️ Update ggml-org/llama.cpp to
2da668617612d2df773f966e3b0ee22dc2beef7bby @localai-bot in #10694 - fix(reasoning): don't persist request-scoped reasoning_effort as an operator disable (#10622) by @Anai-Guo in #10623
- fix(startup): scope generated-content and upload dirs to the current user by @localai-bot in #10698
- fix(config): cap auto-derived context to fit VRAM by @localai-bot in #10696
- fix(llama-cpp): cap single-pass embedding batch to fit VRAM by @localai-bot in #10695
Full Changelog: v4.6.0...v4.6.1
v4.6.0
🎉 LocalAI 4.6.0 Release! 🚀
LocalAI 4.6.0 is out!
This is a reliability-focused release: AMD ROCm backends now run on-GPU at full speed, distributed model loads no longer wedge when a worker dies, and realtime sessions warm up predictably. It also brings conversation forking to the built-in chat UI, a Prometheus counter for PII/audit events, and an SSRF fix for the model gallery.
Highlights:
- 🔴 AMD ROCm runs correctly - ggml audio backends offload to the GPU, hipBLASLt kernel-tuning data is bundled (no more slow generic kernels),
rocm-vllminstalls the right wheel, and the ASIC ID table is found. - 🎙️ Predictable realtime - sessions eagerly warm the whole pipeline (VAD, ASR, LLM, TTS) up front, so the first turn no longer pays per-model cold-start stalls, plus a new
POST /backend/loadAPI and "Load into memory" UI button. - 🌿 Forking chat - retry any assistant answer, branch a new chat from any point, duplicate, or copy the whole conversation, directly in the built-in UI.
- 🛡️ Distributed hardening - a dead worker can no longer pin the model-load advisory lock (the ~15-minute wedge is gone), and orphaned backend workers self-terminate instead of holding VRAM.
- 📊 PII/audit metrics - PII detections/masks/blocks are exported as a Prometheus counter, so you can alert when the filter stops firing.
- 🔒 Gallery SSRF fix -
POST /models/applyconfig-URL fetches are validated against private/loopback/metadata addresses.
Plus idempotent backend installs, tool-calling and reasoning fixes across the vLLM and Python/MLX backends, cloud-proxy compatibility with the newest reasoning models, and the usual set of dependency updates.
📌 TL;DR
| Area | Summary |
|---|---|
| 🔴 AMD ROCm reliability | ggml audio backends now compile with -DGGML_HIP=ON and link HIP (real GPU offload); hipBLASLt TensileLibrary data bundled + HIPBLASLT_TENSILE_LIBPATH exported; rocm-vllm installs from the AMD wheel index on Python 3.12; amdgpu.ids symlinked so the ASIC table is found. |
| 🎙️ Realtime warm-up + load API | Sessions block-warm the full pipeline at start (errors surface up front); new POST /backend/load / POST /v1/backend/load, a "Load into memory" UI action, and a load_model MCP tool. Opt out per pipeline with disable_warmup: true. |
| 🌿 Forking chat | Regenerate any assistant answer (not just the last), branch a new chat from any turn, duplicate a chat, or copy it as Markdown - all client-side in the React UI. |
| 🛡️ Process & distributed lifecycle | A dead worker no longer pins the per-model PostgreSQL advisory lock (bounded load ceiling + context-scoped lock_timeout); backend workers self-terminate on parent death (LOCALAI_BACKEND_PARENT_WATCH); the watchdog stops logging optional Free() as an error. |
| ⚙️ Idempotent backend installs | POST /backends/apply and the LOCALAI_EXTERNAL_BACKENDS boot loop no longer re-pull an already-installed backend unless force: true. |
| 📊 PII/audit Prometheus counter | localai_pii_events_total{kind,origin,action,direction} on /metrics, complementing the /api/pii/events ring buffer. |
| 🔒 Gallery SSRF hardening | Gallery config URL fetches run through ValidateExternalURL, blocking private, loopback, link-local, and cloud-metadata addresses. |
| 🧩 Tool-calling & reasoning fixes | Non-streaming vLLM tool calls restored; MLX/Python backends decode tool-call arguments for chat templates and split closing-only </think> reasoning blocks. |
🚀 New Features & Major Enhancements
🔴 AMD ROCm backends run correctly on-GPU
Four coupled fixes make ROCm/hipBLAS backends actually run on AMD hardware, and at full speed, instead of silently falling back to CPU or slow generic kernels:
- GPU offload for ggml audio backends (#10667):
rocm-qwen3-tts-cpp,rocm-omnivoice-cpp,acestep-cpp, andvibevoice-cppwere building CPU-only because their Makefiles passed the no-op-DGGML_HIPBLAS=ON(upstream ggml only understands-DGGML_HIP=ON) and the CMake link loop omittedhip. They now use the same hipblas recipe as llama-cpp and link the HIP backend. - hipBLASLt kernel-tuning data (#10660, #10672): the packager bundled rocBLAS data but not the parallel hipBLASLt
TensileLibrary_lazy_gfx*.datfiles, so every arch silently used slow kernels and loggedCannot read "TensileLibrary_lazy_gfx*.dat". The data is now bundled andHIPBLASLT_TENSILE_LIBPATHis exported by thellama-cppandturboquantrun.sh. rocm-vllminstalls the right wheel (#10642, #10651): the backend was pulling the CUDA-only PyPIvllm(fatalModuleNotFoundError: No module named 'vllm'on AMD). It now pins CPython 3.12 and installs vLLM from the ROCm wheel index (https://wheels.vllm.ai/rocm/).- ASIC ID table found (#10624, #10627): the compute-only hipblas image lacks
/opt/amdgpu/share/libdrm/amdgpu.ids, so every model load warned. Ubuntu'slibdrm-commoncopy is now symlinked into place.
🎙️ Realtime: eager pipeline warm-up + a load-into-memory API
Realtime voice sessions now eagerly and blockingly warm the entire pipeline (VAD, transcription, LLM, TTS, sound detection, voice recognition) at session start instead of lazy-loading each sub-model on first use. The first turn no longer pays per-model cold-start stalls, and model-load errors surface up front at session start (as model_load_error) rather than mid-stream. Pipeline sub-models load concurrently, so a session warms in the time of its slowest stage, not the sum, and a failed stage names every broken model in a joined error.
This also adds a LocalAI-native POST /backend/load (and /v1/backend/load), the inverse of /backend/shutdown, exposed as a "Load into memory" UI action and a load_model MCP admin tool, so admins can pre-warm any model (including full pipelines) on demand. The --load-to-memory startup flag now routes through the same engine. Opt out per pipeline with disable_warmup: true.
🔗 PRs: #10662
🌿 Forking chat in the built-in UI
The React chat UI gains conversation-management tools: regenerate any assistant answer (not just the last), branch a new chat from any answer, duplicate a chat into an independent copy, or copy the whole conversation to the clipboard as Markdown. Retrying a mid-conversation answer correctly truncates the conversation before re-asking, both in the DOM and in the request payload (this also fixes a latent stale-closure bug where a mid-conversation retry sent the downstream turns back to the model). All client-side, no backend changes.
🔗 PRs: #10654
🛡️ Sturdier process and distributed lifecycle
- Dead-worker advisory-lock wedge (#10600): a distributed worker going mid-load could pin a per-model PostgreSQL advisory lock and fail every subsequent request to that model with
55P03for ~15 minutes. The detached load context is now bounded by a model-load ceiling, the install wait honors cancellation viasingleflight.DoChan, andlock_timeoutis scoped to the caller's context budget instead of a deployment-global GUC. - Parent-death safety net (#10639): if LocalAI is
SIGKILLed before teardown, spawned backend workers used to get reparented to init and linger, holding VRAM and their port. Each backend now polls its parent PID and self-terminates on reparenting. Configurable viaLOCALAI_BACKEND_PARENT_WATCH(default on, auto-off on Windows) andLOCALAI_BACKEND_PARENT_WATCH_INTERVAL(default2s). C++ coverage is llama-cpp for now; Python covers all backends. - Quieter watchdog (#10602, #10607): the optional
Free()RPC returns gRPCUnimplementedfor many backends and the federation proxy, so the watchdog no longer logs a misleadingError freeing GPU resourceson eviction. A newgrpcerrors.IsUnimplementedhelper distinguishes it from genuine failures. - Idempotent backend installs (#10643):
POST /backends/applyand theLOCALAI_EXTERNAL_BACKENDSboot loop no longer re-download and re-extract an already-installed backend on every apply/boot. Pass"force": true(the UI's install button still does, doubling as "Reinstall").
📊 PII/audit events as a Prometheus counter
The PII middleware / MITM audit pipeline now emits a single monotonic counter, localai_pii_events_total{kind, origin, action, direction}, on /metrics, instrumented at the EventStore.Record choke point. Labels are cardinality-bounded (no pattern or user IDs). This complements the capacity-bound /api/pii/events ring buffer and, crucially, makes silent filter failure alertable: rate() on the counter detects that the PII filter stopped firing after a deploy.
🔗 PRs: #10641
🔒 Gallery SSRF hardening
POST /models/apply with an empty id fetches the supplied url directly; in a default Docker setup (no API key) any reachable client could probe internal services or cloud-metadata (169.254.169.254) and exfiltrate a slice via the job error. Gallery config fetches now run through the existing ValidateExternalURL guard (the same one protecting the CORS proxy and media downloads), blocking private, loopback, link-local, unspecified, and metadata addresses. Only plain http(s):// is validated; huggingface://, github:, oci://, ollama://, and file:// are untouched.
🔗 PRs: #10673
🐛 Bug Fixes (recap)
v4.5.6
What's Changed
👒 Dependencies
- chore(deps): bump actions/cache from 4 to 6 by @dependabot[bot] in #10593
Other Changes
- docs: ⬆️ update docs version mudler/LocalAI by @localai-bot in #10560
- fix(distributed): missing agent NATS permission by @ALameLlama in #10549
- feat(distributed): SyncedMap component + migrate finetune/quant/agent-tasks to cross-replica state by @localai-bot in #10542
- chore(fish-speech): drop the darwin/metal build target by @localai-bot in #10561
- fix(config): fall back to DefaultContextSize for unparseable GGUFs; pin NVFP4 gallery context_size by @localai-bot in #10563
- ci(vibevoice): skip the ASR transcription e2e on release tag builds by @localai-bot in #10567
- fix(gallery): match mmproj/model quant as a whole token so F16 no longer selects BF16 (#10559) by @localai-bot in #10564
- fix(distributed): return empty backend list for agent nodes instead of failing backend.list (#10545) by @localai-bot in #10565
- feat(distributed): add LOCALAI_DISTRIBUTED_SHARED_MODELS to skip staging on shared volumes (#10556) by @localai-bot in #10566
- chore: ⬆️ Update leejet/stable-diffusion.cpp to
9956436c925a367daeab097598b1ea1f32d3503fby @localai-bot in #10533 - fix(openresponses): bound resume-stream buffer and enforce response ownership by @localai-bot in #10569
- chore: ⬆️ Update ggml-org/whisper.cpp to
0ae02cdb2c7317b50991367c165736ce42ed96acby @localai-bot in #10532 - chore: ⬆️ Update CrispStrobe/CrispASR to
6514c9da00b03a2f0f1b49a43fae4f3a01a41844by @localai-bot in #10535 - chore: ⬆️ Update ggml-org/llama.cpp to
0ed235ea2c17a19fc8238668653946721ed136fdby @localai-bot in #10536 - fix(ik-llama): port multimodal path to mtmd API and bump to f96eaddb (#10534) by @localai-bot in #10568
- feat(backends): add voice-detect + face-detect ggml backends (replace Python insightface/speaker-recognition) by @localai-bot in #10441
- fix(kokoro): add explicit click dep so spacy CLI works on intel build by @localai-bot in #10572
- fix(launcher): robust binary download/upgrade (resume, rate-limit, UX) by @localai-bot in #10575
- fix(distributed): missing agent NATS permissions by @ALameLlama in #10571
- fix(fish-speech): allow invalid_reference_casting so tokenizers builds on darwin by @localai-bot in #10573
- fix(oci): retry layer downloads on transient network errors by @localai-bot in #10579
- chore(model-gallery): ⬆️ update checksum by @localai-bot in #10585
- chore: ⬆️ Update leejet/stable-diffusion.cpp to
c1790754d31bec0731ed5fddc9d5b9ff22ee19cdby @localai-bot in #10584 - chore: ⬆️ Update CrispStrobe/CrispASR to
6b50f76e59700665358a1aabf5295597fa318e06by @localai-bot in #10583 - chore: ⬆️ Update ggml-org/llama.cpp to
dbdaece23de9ac63f2e7ca9e6bfcdc4fc156a3faby @localai-bot in #10582 - chore: ⬆️ Update mudler/voice-detect.cpp to
3d510772357538c5182808ac7de2278b84824e24by @localai-bot in #10581 - chore: ⬆️ Update mudler/face-detect.cpp to
06914b077d52f90d5421299138e7be6bdd06b5e8by @localai-bot in #10580 - chore: ⬆️ Update vllm-metal (darwin) to
v0.3.0.dev20260628073537by @localai-bot in #10562 - chore(recon): re-pin voice/face-detect to squashed release commits (+ graph-cache fix) by @localai-bot in #10591
- fix(sglang): parse tool_call function arguments before applying the chat template by @pos-ei-don in #10558
- feat(realtime): Semantic VAD EOU token by @richiejp in #10444
- fix(openai): stop max_tokens streaming retry loop on reasoning models (#9716) by @Dennisadira in #10448
- fix(import): derive model name from selected GGUF for repo-root URIs by @Dennisadira in #10589
- fix(functions): avoid quadratic-time debug logging in CleanupLLMResult / ParseFunctionCall by @pos-ei-don in #10592
- chore: ⬆️ Update leejet/stable-diffusion.cpp to
3b6c9ca97cfcda8e68e719e6670d06379fcbe943by @localai-bot in #10594 - chore: ⬆️ Update ggml-org/llama.cpp to
6f4f53f2b7da54fcdbbecaaa734337c337ad6176by @localai-bot in #10595 - chore: ⬆️ Update localai-org/privacy-filter.cpp to
595f59630c69d361b5196f2aba2c71c873d0c13cby @localai-bot in #10596 - chore: ⬆️ Update CrispStrobe/CrispASR to
3b93758f9725d400eca82976f895e4cec3f31260by @localai-bot in #10597 - chore: ⬆️ Update ikawrakow/ik_llama.cpp to
f74a6fb87b315b2c3154166e075360e15021a61dby @localai-bot in #10598 - fix(import): strip file:// scheme from model path for local imports by @Dennisadira in #10599
- fix(tests): align openresponses test model name with GGUF-derived naming (#10589) by @localai-bot in #10609
- fix(macos): staple the notarization ticket to the .app, not just the dmg by @localai-bot in #10606
- fix(watchdog): persist UI-saved Check Interval across restarts (#10601) by @localai-bot in #10605
- feat(config): default swa_full:true for sliding-window-attention models by @localai-bot in #10611
New Contributors
- @ALameLlama made their first contribution in #10549
Full Changelog: v4.5.5...v4.5.6
v4.5.5
What's Changed
Other Changes
- fix(backends): repair release CI build/test breaks (kokoros, fish-speech, llama-cpp-quantization, sglang) by @localai-bot in #10547
- chore(model gallery): 🤖 add 1 new models via gallery agent by @localai-bot in #10544
- fix(backends): whisper darwin run.sh loads whichever fallback lib exists (.so/.dylib) by @localai-bot in #10553
Full Changelog: v4.5.4...v4.5.5
v4.5.4
What's Changed
Other Changes
- fix(backends): derive darwin RUN_BINARY from the exec line only by @localai-bot in #10541
Full Changelog: v4.5.3...v4.5.4
v4.5.3
What's Changed
Other Changes
- feat(macos): sign and notarize the DMG, app, and server binary by @localai-bot in #10510
- fix(backends): set rpath on the piper darwin binary so it can load its bundled libs by @localai-bot in #10525
- fix(backends): darwin packaging for silero-vad (last Linux-only Go backend) by @localai-bot in #10528
- chore(model gallery): 🤖 add 1 new models via gallery agent by @localai-bot in #10526
- fix(nodes): show a node's existing labels on the detail view by @localai-bot in #10529
- docs: ⬆️ update docs version mudler/LocalAI by @localai-bot in #10531
- chore: ⬆️ Update mudler/parakeet.cpp to
f469a57270a1cc4554acb15febf60e56619673b9by @localai-bot in #10530 - fix(gpu-libs): bundle transitive deps of GPU runtime libs (#10537) by @localai-bot in #10539
- fix(distributed): broadcast admin model-config changes across replicas by @localai-bot in #10540
- fix(llama-cpp): stop reinterpreting plain-string message content as JSON (#10524) by @localai-bot in #10538
Full Changelog: v4.5.2...v4.5.3
v4.5.2
What's Changed
Other Changes
- fix(backends): make the opus backend build and package on macOS/Darwin by @localai-bot in #10523
Full Changelog: v4.5.1...v4.5.2

