Add the Tables entry to gallery/addons/index.yaml next to the six
existing ones. It comes from addonpkg catalog over a locally built
linux/amd64 package, so the digest pins that image. The official index
test now expects seven add-ons.
Assisted-by: Claude Code:claude-sonnet-5-5 go node
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
Add the Studio and Talk entries to gallery/addons/index.yaml next to
the four existing ones. They come from addonpkg catalog over locally
built linux/amd64 packages, so the digests pin those images.
Assisted-by: Claude Code:claude-sonnet-5-5 go node
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
Add gallery/addons/index.yaml, a YAML index of the four first-party
add-ons (fine-tuning, quantization, voice, face) in the library format.
The entries come from addonpkg catalog over locally built linux/amd64
packages, so the digests pin those images.
On the first start, when the owner has no sources.json, register the
raw GitHub URL of that index on master as the "official" library and
write the file. The file is then the record: a library the admin
removes stays removed, and an existing file is never changed.
--addons-official-library=false skips the default.
Assisted-by: Claude Code:claude-sonnet-5-5 go node
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
Studio and Talk were compiled into the web bundle and always listed in
the Add-ons drawer. They are add-ons now, like Voice, Face, fine-tuning
and quantization: a person installs and removes them, the drawer lists
them only while they are installed, and they are packaged the same way.
Move the pages, their components, hooks and helpers into addons/studio
and addons/talk. Each has a manifest, a UI bundle, a release platform
matrix and a catalog template, and is built by the compat mode of the
shared builder. The core API stays where it is: the pages call it with
the signed-in person's session. The history keeps its browser storage
keys. The unit tests of the moved helpers move with them.
In the core, drop the two pages, the Create group of the sidebar (Chat
joins Home and Models in the old layout), the built-in catalog entries
(the catalog is empty) and the talk locale namespace. The old addresses
(/app/studio, /app/talk and the generator links) redirect to the add-on
pages, with the model as ?model=. The Home /studio command is offered
only while the Studio add-on is installed and opens it.
The release workflow and its tests now list seven add-ons.
Assisted-by: Claude Code:claude-sonnet-5-5 go node
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
Add the add-on runtime to LocalAI: manifests, the host operation broker,
admin gating by account role, the add-on UI bundle builder and the SDK
for add-on pages. Move the navigation to Chat, Models, Add-ons and
Settings, with pinned add-ons in the sidebar and an Add-ons drawer.
Ship the first-party add-ons (voice, face, fine-tuning, quantization) as
packages for linux/amd64, linux/arm64 and darwin/arm64. Intel macOS
(darwin/amd64) is enabled in the platform files.
Squashed from the review branch. The tree is unchanged; the pre-squash
history is kept on a local backup branch.
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
Offer the community GGUF with Q4 experts and a Q8 backbone through
existing audio-cpp routing. Document cloning inputs, memory needs, and
the Fish Audio Community License.
Keep automatic task selection for voice cloning. The existing audio.cpp
pin defaults to top_k 4097, so no sampling override or backend bump is
needed.
Assisted-by: Codex:gpt-5
Co-authored-by: Ettore Di Giacinto <mudler@localai.io>
Pocket TTS ships one model per language, but LoadModel called
TTSModel.load_model() with no arguments, so the library always fell back
to its English model whatever the model config said. Read a `language`
option and pass it to load_model, keeping the library default when it is
not set. Document the option and add unit tests that mock the loader.
Fixes#12759
Assisted-by: Claude:claude-opus-5-5
* feat(tts): stream Qwen text through audio pipelines
Feed cleaned LLM deltas into one persistent Qwen synthesis session.
Return audio before input ends and preserve the live RPC through model
cache, staging and in-flight wrappers. Stop generation on sink failures
or cancellation without replaying speech through a fallback.
Pin the incremental native fork and verify early audio, late text,
finalization and cancellation with lifecycle and real-model checks.
Assisted-by: Codex:gpt-6.1-sol
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
* build(tts): use the organization Qwen fork
Fetch the reviewed incremental synthesis commit from localai-org so
backend builds use the organization-maintained fork.
Assisted-by: Codex:gpt-6.1-sol
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
* feat(gallery): add a Qwen streaming assistant preset
Expose an English pipeline using existing VAD, ASR, LLM and named-voice
TTS models. Enable incremental text and audio delivery, and document
separate component installs because the gallery has no dependency
installer.
Assisted-by: Codex:gpt-6.1-sol
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
* fix(gallery): use Parakeet TDT v3 for the assistant
Select the existing Parakeet TDT 0.6B v3 transcription entry and update
its prerequisite install command. Keep the preset's English voice and
incremental Qwen synthesis configuration.
Assisted-by: Codex:gpt-6.1-sol
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
* fix(kokoros): reject unsupported backend RPCs
Implement the MotionStream and SlotCache methods required by the shared
protobuf service. Return Unimplemented so Kokoros compiles without
advertising support for either operation.
Assisted-by: Codex:gpt-6.1-sol
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
* fix(tts): mark cleanup and logging results ignored
Explicitly ignore connection shutdown, test server shutdown and
Ginkgo diagnostic writer errors. These operations do not replace the
stream's inference or sink errors, and errcheck requires their return
values to be acknowledged.
Assisted-by: Codex:gpt-6.1-sol
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
* feat(tts): stream buffered clauses in realtime pipelines
Start clause synthesis while LLM text is still arriving when both streaming flags are enabled. Keep explicit clause opt-out and native Qwen sessions, bound automatic queued work, and choose streaming support on resolved failover targets.
Assisted-by: Codex:gpt-6.1-sol
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
* test(tts): bound synthetic voice clone generation
The sine-wave reference checks speaker conditioning and WAV output, but does not provide a meaningful speech EOS target. Limit that smoke request to 128 frames and verify the request limit reaches native synthesis. Leave production sampling defaults unchanged.
Assisted-by: Codex:gpt-6.1-sol
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
* fix(tts): require explicit clause buffering opt-in
Keep whole-reply synthesis for nonnative engines when clause_chunking is unset or false. Use the bounded cancellable worker when explicitly enabled, with unary clauses when TTS streaming is disabled. Preserve native Qwen precedence for every clause setting.
Assisted-by: Codex:gpt-6.1-sol
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
* feat(gallery): add VITS and Piper streaming assistants
Provide comparable full pipeline configurations with shared VAD, Parakeet transcription, and Qwen chat components. Enable clause buffering explicitly and document the separate prerequisite model installs and Talk selection.
Assisted-by: Codex:gpt-6.1-sol
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
---------
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
Co-authored-by: Ettore Di Giacinto <mudler@localai.io>
stable-diffusion.cpp PR #2148 added MOSS-Image support, which needs an
external tokenizer file passed via the --tokenizer CLI arg. The C++ binding
(gosd.cpp) never parsed a tokenizer option nor set ctx_params.tokenizer, so
MOSS-Image could not load through LocalAI.
- Wire the "tokenizer" option in gosd.cpp (parse + assign to ctx_params)
- Resolve "tokenizer:..." paths against the model directory in gosd.go,
the same way *_path options are resolved
- Bump the vendored stable-diffusion.cpp to 68285df (moss-image merge)
- Add moss-image-base and moss-image-sft gallery entries (int8_convrot)
FLUX.3 Image Klein is already in the gallery (added in #12736).
Co-authored-by: Ettore Di Giacinto <mudler@localai.io>
* chore(model gallery): 🤖 add new models via gallery agent
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
* fix(gallery): give the Q6 build a unique name
The Q8 entry already uses embeddinggemma-2. Include the quantization
in the new entry name so both builds remain reachable.
Assisted-by: Codex:gpt-6
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
* fix(gallery): configure EmbeddingGemma 2 variants
Serve the Unsloth builds as text embeddings and remove chat settings.\nGroup Q4, Q5, and Q6 with the existing family and pin verified assets.
Assisted-by: Codex:gpt-6
---------
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
Co-authored-by: mudler <2420543+mudler@users.noreply.github.com>
Co-authored-by: localai-org-maint-bot <306269227+localai-org-maint-bot@users.noreply.github.com>
Add official Q4, Q5, Q6, and Q8 GGUF builds with the F16 vision
projector. Group them for automatic selection and document installation.
Pin downloads to one Hugging Face revision with verified SHA256 values.
Assisted-by: Codex:gpt-6
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
Co-authored-by: localai-org-maint-bot <306269227+localai-org-maint-bot@users.noreply.github.com>
Add the distilled and base FLUX.3 Image Klein models for the
stablediffusion-ggml backend, each in Q4_K_M and Q8_0. They use the
Qwen3-VL 4B text encoder and the FLUX.2 VAE.
Klein runs with 16 steps and CFG 1.0, Klein Base with 20 steps and
CFG 3.5, both with the euler sampler. The sd.cpp pin on master already
contains FLUX.3 support.
Assisted-by: Claude Code:claude-sonnet-5-5
Co-authored-by: Ettore Di Giacinto <mudler@localai.io>
Fluid Speech Mini is a compact English dictation model by FluidVoice,
built on NVIDIA Parakeet TDT 0.6B v3 and Moondream Parakeet Ultra. It
matches Parakeet Ultra accuracy (4.53% WER on the Open ASR Leaderboard's
8 public English sets) at about a quarter of the download size (347 MB),
and is trained to keep transcribing the right speaker when another voice
is in the room.
The GGUF is a stock parakeet.cpp TDT checkpoint (Q2_K/Q4_K mixed
precision) that loads in the existing runtime on CPU and CUDA without
engine changes. Verified locally: parakeet-cli loads the model and
transcribes a test clip correctly.
Gallery entry uses the parakeet-cpp backend with the model file sourced
from huggingface://FluidVoice-Labs/fluid-speech-mini-gguf.
Co-authored-by: Ettore Di Giacinto <mudler@localai.io>
* feat(stablediffusion-ggml): run MiniMax-H3 video with reference conditioning
Bump stable-diffusion.cpp to 2988060 and follow its tiling rename
(tile_size_x/y -> tile_size_w/h, rel_size_x/y -> rel_size_w/h).
GenerateVideo now passes params["ref_image"] and the request audio to
the MiniMax-H3 Ref2VA inputs (ref_images, ref_audios). The audio must
be a WAV file. params["ref_video"] is refused, since the proto cannot
carry a frame sequence yet.
stable-diffusion.cpp cannot tell the FL2VA and REF2VA DiTs apart, and a
reference input on FL2VA renders a wrong video without an error. The
backend now reads the video_partition option, or the model file name,
and fails early on that mix. Keyframes plus references are refused too.
Add gallery entries for the FL2VA and REF2VA Q4_K_M sets. They do not
enable any bf16 dequantisation.
Assisted-by: Claude:claude-sonnet-5-5 go vet gofmt
* feat(stablediffusion-ggml): take several reference images, videos and audio clips
Phase 1 passed one reference image and one reference audio clip to
stable-diffusion.cpp and refused ref_video. Add repeated reference fields
to GenerateVideoRequest (ref_images, ref_videos, ref_audios) so the
MiniMax-H3 Ref2VA path can use as many references as upstream accepts. A
reference video is a directory of frames with an fps and an optional
paired audio clip.
The /video endpoint stages the new inputs through the same path as
start_image, end_image and audio. Frames of one reference video are
written to a private directory under zero-padded names so the backend can
read them in order. The input count and frame count per request are
bounded.
The backend merges the new fields with params.ref_image, params.ref_video
and audio, which keep working. The FL2VA partition refuses any reference
input, REF2VA accepts all of them, and keyframes stay exclusive with
references. Reference audio is still WAV only.
Assisted-by: Claude:claude-sonnet-5-5 [Bash]
* feat(gallery): offer MiniMax-H3 by partition, DiT layout and format
Name each MiniMax-H3 entry after its partition (fl2va or ref2va), DiT
layout (unpruned or pruned) and format. Add the vllm.cpp builds that its
model page lists: pruned Q8_0 (renders), pruned Q6_K, Q5_0, Q4_K, Q3_K and
Q2_K (load only), and the pruned FL2VA NVFP4 file (loads only). The
earlier names minimax-h3-fl2va-q4 and minimax-h3-ref2va-q4 stay as
aliases. The two stable-diffusion.cpp entries become
minimax-h3-fl2va-unpruned-q4-ggml and minimax-h3-ref2va-pruned-q4-ggml,
and the latter now lists video input.
Fix two bad sources. The stable-diffusion.cpp entries took the VAEs from
a path that does not exist in the GGUF repository; they now use the
Comfy-Org copies. The vllm.cpp entries paired the fp16 video VAE weights
with a config from a different directory; they now use the official
weights and config from FL2VA/video_vae/source/.
Drop video_dequant_bf16 from every vllm.cpp entry. Expanding a quantised
DiT to bf16 is the suspected cause of a host out-of-memory error, so the
quantised weights stay resident. The model page records its renders with
the expansion on, and each description says so.
Assisted-by: Claude:claude-sonnet-5-5 [Bash]
* feat(gallery): add pruned FL2VA Q4 MiniMax-H3 for sd.cpp
Add minimax-h3-fl2va-pruned-q4-ggml, the 11.4 GB pruned FL2VA
counterpart of the existing pruned REF2VA entry.
Assisted-by: Claude Code:claude-sonnet-5-5 [rc]
---------
Co-authored-by: Ettore Di Giacinto <mudler@localai.io>
Remove a stray blank line in backend.proto and group the imports in
pkg/motion/validation.go. Decide the motion usecase guess from the
backend capability registry instead of a hardcoded backend name, so
variant builds of the backend resolve too. Declare the weights licence
in the gallery entry, as stated on the model card.
Assisted-by: Claude Code:claude-sonnet-5-5
Add the GEM-X native backend with live pose and root displacement output, bounded duplex WebSocket streaming, session authorization, metrics and usage accounting. Share the embedded bidirectional RPC channel adapter across streaming backends.
Include backend build and gallery integration, API documentation, schemas and tests.
Assisted-by: Codex:gpt-6
Signed-off-by: Richard Palethorpe <io@richiejp.com>
(cherry picked from commit 016dc3d71a)
The entry installs the Qwen-Image 2.1 diffusion weights under the
llama-cpp backend as a chat model. llama.cpp cannot load these weights.
Image generation is already served by the qwen-image-2.1-q4_k-ggml and
qwen-image-2.1-q8_0-ggml entries, which use stablediffusion-ggml.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
The gallery agent added a second entry named embeddinggemma-2 that
installs the Unsloth multimodal build as a chat model. The curated
embeddinggemma-2 embedding entry already exists, so the duplicate name
shadowed it. Remove the duplicate.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
The checksums for four pinned Hugging Face files did not match the
x-linked-etag reported for the pinned revision, so installs of these
entries would fail verification:
- qwen3.8-27b-humanlike-chat (Q4_K_M)
- humanizer-12b-q4 (Q4_K_M)
- twil-lm3-pro-q4 (Q4_K_M)
- swift-1.5-qwen3.8-27b-q4 and -q8 (mmproj F16 at the a1614465 revision)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
Complete the existing GSQ-RCO choices with the 3.50-bit build and its
vision projector. Pin downloads and verify both SHA256 values against
Hugging Face LFS metadata and download headers.
Correct the older quality description and document variant selection.
Assisted-by: Codex:gpt-6
(cherry picked from commit 70a2bd2c21, mudler/LocalAI#12651)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
Add Q4_K_M and Q8_0 builds with the F16 vision projector for llama.cpp.
Pin downloads and verify SHA256 against HF metadata and response headers.
Document variant selection and keep the embedded chat template.
Assisted-by: Codex:GPT-6
(cherry picked from commit a3a910f833, mudler/LocalAI#12650)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
Add Q4_K_M and Q8_0 builds with the vision projector and installation examples.
Assisted-by: Codex:gpt-6
(cherry picked from commit 15d6d0b6e7, mudler/LocalAI#12645)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
Add the publisher GGUF builds and installation examples for this
Gemma 4 E4B conversational fine-tune.
Assisted-by: Codex:gpt-6
(cherry picked from commit ef4c9218ad, mudler/LocalAI#12642)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
Offer intermediate quantizations of Swift 1.5 Qwen3.8 27B alongside
the existing Q4 and Q8 builds. Keep the F16 vision projector and
publisher license notice, and pin the new downloads to one revision.
Assisted-by: Codex:gpt-6
(cherry picked from commit c7a903838c, mudler/LocalAI#12640)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
Add Q4_K_M and Q8_0 GGUF builds with the matching vision projector.
Pin downloads and verify SHA256 against LFS metadata and HTTP headers.
Document installation and explicit variant selection.
Assisted-by: Codex:gpt-6
(cherry picked from commit 472cddcaea, mudler/LocalAI#12635)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
Add Q4_K_M and Q8_0 builds with the F16 vision projector.
Pin downloads and document installation and template limitations.
Assisted-by: Codex:GPT-6
(cherry picked from commit 75a91386ec, mudler/LocalAI#12631)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
Add Q4_K_M and Q8_0 builds with the F16 vision projector for llama.cpp.
Pin downloads, verify SHA256 values, and document variant selection.
Assisted-by: Codex:gpt-6
(cherry picked from commit 19c30fd2ef, mudler/LocalAI#12630)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
Add Q4_K_M and Q8_0 builds with the F16 vision projector.
Pin downloads and document installation and variant selection.
Assisted-by: Codex:gpt-6
(cherry picked from commit 411ceb7588, mudler/LocalAI#12627)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
Add official Q4 and Q8 builds with the vision projector so users can
translate images with Index-Translate-9B. Pin and verify all artifacts,
and document installation alongside the existing text-only builds.
Assisted-by: Codex:gpt-6
(cherry picked from commit dcfdb69ca1, mudler/LocalAI#12626)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
Add Q4_K_M and Q8_0 builds with the vision projector for llama.cpp.
Pin artifacts to a verified revision and document installation.
Assisted-by: Codex:gpt-6
(cherry picked from commit aed2278e2a, mudler/LocalAI#12624)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
Add the 27B Clef decision model with Q4_K_M and Q8_0 builds and a
matching vision projector. Pin artifacts and document installation.
Assisted-by: Codex:gpt-6
(cherry picked from commit ab88ee821e, mudler/LocalAI#12613)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
Add Q4_K_M and Q8_0 builds with a pinned vision projector for native
llama.cpp decisions. Document installation and variant selection.
Assisted-by: Codex:gpt-6
(cherry picked from commit 1081971697, mudler/LocalAI#12611)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
Add Q6_K and Q8_0 builds with a shared vision projector for llama.cpp.
Pin downloads and verify SHA-256 values against Hugging Face metadata
and HTTP headers. Document explicit variant installation.
Assisted-by: Codex:gpt-6
(cherry picked from commit d5cb742607, mudler/LocalAI#12608)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
Add Q4_K_M and Q8_0 builds with the Q8 vision projector for native
llama.cpp decisions. Pin artifacts and document installation.
Assisted-by: Codex:gpt-6
(cherry picked from commit caad8cae92, mudler/LocalAI#12607)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
Offer Q5_K_M, Q6_K, and Q8_0 alongside the existing Q4_K_M build.
Pin all four assets and correct the gallery description.
Document direct installation of a quantization variant.
Assisted-by: Codex:gpt-6
(cherry picked from commit f9e9b2fe85, mudler/LocalAI#12594)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
Offer intermediate GGUF quantizations for Qwen3.8-27B-pi. Reuse the
existing llama.cpp configuration and pinned BF16 vision projector.
Cross-check the artifact SHA256 values against Hugging Face LFS
metadata and download headers.
Assisted-by: Codex:gpt-6
(cherry picked from commit a240bc07bd, mudler/LocalAI#12593)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
Offer intermediate quantizations alongside the existing Q4 and Q8 builds.
Keep the shared BF16 projector and llama.cpp MTP configuration. Pin new
files to a Hugging Face revision and document explicit variant selection.
Assisted-by: Codex:gpt-6
(cherry picked from commit 73c3b16d12, mudler/LocalAI#12592)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
Offer intermediate quantizations between the existing Q4 and Q8 builds.
Pin both to the same publisher revision to preserve the step-576 merge.
Document explicit variant selection.
Assisted-by: Codex:gpt-6
(cherry picked from commit e78c44dc7b, mudler/LocalAI#12591)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
Fill the gap between the existing Q4 and Q8 builds with the
publisher's Q5_K_M and Q6_K GGUF files. Preserve the runtime settings
and license notice, and document explicit variant installation.
Assisted-by: Codex:gpt-6
(cherry picked from commit 3b73ecd1e2, mudler/LocalAI#12589)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
The Qwopus 3.5 9B Coder MTP projector URL returns 404. Use the
publisher's mmproj-F32.gguf, which has the same SHA256, and pin
all downloads to the verified repository revision.
Offer Q6_K and Q8_0 variants alongside Q4_K_M and document explicit
selection. Keep the existing MTP and chat-template settings.
Assisted-by: Codex:gpt-6
(cherry picked from commit 01c5e044f2, mudler/LocalAI#12586)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>