Commit Graph
1783 Commits
Author SHA1 Message Date
localai-org-maint-bot aae2122fa0 chore(gallery): add Humanlike Chat Q5/Q6 variants
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>
2026-10-13 07:28:04 +00:00
localai-org-maint-bot 5f09449e79 chore(gallery): add TwIL Pro Q5 and Q6 variants
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>
2026-10-13 07:27:53 +00:00
mudler 89bdd5c4d7 chore(model gallery): 🤖 add new models via gallery agent
(cherry picked from commit b0d412c18a, mudler/LocalAI#12588)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2026-10-13 07:27:22 +00:00
localai-org-maint-bot 80403b4845 fix(gallery): repair and expand Qwopus Coder MTP
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>
2026-10-13 07:27:11 +00:00
localai-org-maint-bot e8e28a98f9 chore(gallery): add Mellum2.1 Thinking variants
Add JetBrains Q4_K_M and Q8_0 GGUF builds for llama.cpp, with
variant selection and installation documentation. Pin both downloads
and verify their SHA256 values against LFS metadata and HTTP headers.

Assisted-by: Codex:gpt-6

(cherry picked from commit a5accc7488, mudler/LocalAI#12573)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2026-10-13 07:27:00 +00:00
localai-org-maint-bot c232106681 chore(gallery): add EmbeddingGemma 2 variants
Add Q8_0 and BF16 builds for text embeddings through llama.cpp.
Document installation and retrieval task prefixes.

Assisted-by: Codex:gpt-6

(cherry picked from commit b166f881e9, mudler/LocalAI#12565)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2026-10-13 07:26:50 +00:00
localai-org-maint-bot f153593671 chore(gallery): add Underdog Saluki 27B
Add the mixed IQ2 GGUF with its F16 vision projector for llama.cpp.
Pin both downloads and cross-check SHA256 values against HF LFS metadata.
Document installation and the default context size.

Assisted-by: Codex:gpt-6

(cherry picked from commit 3657d221a0, mudler/LocalAI#12564)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2026-10-13 07:26:39 +00:00
localai-org-maint-bot 6816738751 chore(gallery): add Spark Heretic JP variants
Add the Japanese Spark-X2.5-4B adaptation in Q4_K_M and Q8_0.
Pin both downloads and document variant selection and output budgets.

Assisted-by: Codex:gpt-6

(cherry picked from commit 592a913442, mudler/LocalAI#12563)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2026-10-13 07:26:28 +00:00
localai-org-maint-bot 233d3a6a53 chore(gallery): add Gemma 4 E4B Heretic variants
Add Q4_K_M and Q8_0 builds with the BF16 vision projector for llama.cpp.
Pin all three assets to a Hugging Face revision and document installation.

Assisted-by: Codex:gpt-6

(cherry picked from commit 215ec2f0f9, mudler/LocalAI#12561)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2026-10-13 07:26:17 +00:00
localai-org-maint-bot 811625592d chore(gallery): add Prism Coder 9B variants
Offer Q4_K_M and Q8_0 builds of the Qwen3.5 tool-routing fine-tune.
Keep the entries text-only because the quantization repository does
not publish a vision projector. Pin downloads and document selection.

Assisted-by: Codex:gpt-6

(cherry picked from commit 98cad4a19f, mudler/LocalAI#12559)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2026-10-13 07:26:07 +00:00
localai-org-maint-bot 6b54c8d978 chore(gallery): add Xiaomi-OCR-0 variants
Add Q4_K_M and Q6_K builds with the BF16 vision projector.
Pin all files to a verified Hugging Face revision and document usage.

Assisted-by: Codex:gpt-6

(cherry picked from commit 689aca7f03, mudler/LocalAI#12552)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2026-10-13 07:25:56 +00:00
localai-org-maint-bot 4c8f76b43d chore(gallery): add AdaVaR-3B variants
Add Q4_K_M and Q8_0 builds with the F16 vision projector. Pin the
assets and document the prompts needed for adaptive visual reasoning.

Assisted-by: Codex:gpt-6

(cherry picked from commit 8c64079b01, mudler/LocalAI#12547)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2026-10-13 07:25:45 +00:00
localai-org-maint-bot a73696870a chore(gallery): add InSight-doc-8B variants
Add Q4_K_M and Q8_0 builds with the F16 vision projector for document
visual question answering. Pin the assets and document the external
agent loop needed to reproduce the publisher's agentic results.

Assisted-by: Codex:gpt-6

(cherry picked from commit 50f2715967, mudler/LocalAI#12545)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2026-10-13 07:25:35 +00:00
localai-org-maint-bot 7b5c5ad5c7 chore(gallery): add FrogNano Q5 and Q6 variants
Fill the quantization gap between the existing Q4 and Q8 builds. Pin both downloads to the same publisher revision and verify SHA256 values against LFS metadata and x-linked-etag headers.

Assisted-by: Codex:gpt-6

(cherry picked from commit 1c17d6fe9d, mudler/LocalAI#12543)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2026-10-13 07:25:25 +00:00
localai-org-maint-bot 36d5579ece chore(gallery): add POCKET-Darwin-180B GGUF
Add the published four-shard UD-Q4_K_XL build for llama.cpp with
revision-pinned downloads and verified SHA256 checksums. Document
installation, download size, text-only input, and sampling defaults.

Assisted-by: Codex:gpt-6

(cherry picked from commit e32d0f50de, mudler/LocalAI#12542)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2026-10-13 07:25:15 +00:00
localai-org-maint-bot 0dcedf061f chore(gallery): add GUI-Owl 1.5 2B variants
Add Q4_K_M and Q8_0 GGUF builds for screenshot interpretation and GUI
planning with llama.cpp. Include the F16 vision projector in both builds
and document installation and the separate action executor requirement.

Pin all downloads and verify SHA256 values against Hugging Face LFS
metadata and download headers.

Assisted-by: Codex:gpt-6

(cherry picked from commit c4273485d1, mudler/LocalAI#12541)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2026-10-13 07:25:05 +00:00
localai-org-maint-bot 29161bbc17 chore(gallery): add Humanizer QAT variants
Offer smaller IQ2_XS and mixed-precision Q3 builds alongside the existing
Humanizer quantizations. Pin downloads and document completion usage.

Assisted-by: Codex:gpt-6

(cherry picked from commit 97e9b967b1, mudler/LocalAI#12530)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2026-10-13 07:24:55 +00:00
localai-org-maint-bot 213f16ac78 chore(gallery): add MN-CharThink-12B variants
Offer Q4_K_M and Q6_K builds for character roleplay with llama.cpp.
Pin downloads and document explicit variant selection.

Assisted-by: Codex:gpt-6

(cherry picked from commit 2aaae6cfd3, mudler/LocalAI#12523)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2026-10-13 07:24:22 +00:00
localai-org-maint-bot bb807d7ca2 chore(gallery): add Simplicio-27B GGUF variants
Offer Q4_K_M and Q8_0 builds with the matching vision projector.
Pin downloads and verify their SHA256 against Hugging Face metadata
and response headers. Document installation and variant selection.

Assisted-by: Codex:gpt-6

(cherry picked from commit 0e8ebcde37, mudler/LocalAI#12516)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2026-10-13 07:24:11 +00:00
localai-org-maint-bot c5375372b7 chore(gallery): add Kayak Qwen3-VL-4B variants
Add Q4_K_M and Q8_0 builds with the matching vision projector for
single-step screenshot grounding on Kayak interfaces.

Assisted-by: Codex:gpt-6-astra

(cherry picked from commit 2f54c3216a, mudler/LocalAI#12513)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2026-10-13 07:24:01 +00:00
localai-org-maint-bot 5f46bb993d chore(gallery): add Index-Translate-2B variants
Add official Q4_K_M and Q8_0 builds with pinned downloads and verified
SHA256 values. Document installation and text translation prompts.

Assisted-by: Codex:gpt-6

(cherry picked from commit e50820d9d0, mudler/LocalAI#12512)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2026-10-13 07:23:50 +00:00
localai-org-maint-bot aad213e87f chore(gallery): add AstaBrief-8B GGUF variants
Offer Q4_K_M and Q8_0 builds for cited research reports from supplied
literature excerpts. Use the embedded Qwen3 template and document the
upstream prompt. Pin both downloads and cross-check their SHA256 values
against Hugging Face LFS metadata and download headers.

Assisted-by: Codex:gpt-6

(cherry picked from commit b14169ac2a, mudler/LocalAI#12509)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2026-10-13 07:23:39 +00:00
localai-org-maint-bot f220c8e127 chore(gallery): add Swift Heretic GSQ-RCO variants
Add three llama.cpp quantizations with the matching vision projector,
MTP decoding, and installation examples. Pin downloads to one Hugging
Face revision and verify SHA256 values against LFS metadata and headers.

Assisted-by: Codex:gpt-6

(cherry picked from commit b5f4a2f958, mudler/LocalAI#12498)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2026-10-13 07:23:25 +00:00
mudler 53e238a320 chore(model gallery): 🤖 add new models via gallery agent
(cherry picked from commit 052597487c, mudler/LocalAI#12353)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2026-10-13 07:23:14 +00:00
localai-org-maint-botandmudler b11008dcfe chore(model-gallery): ⬆️ update checksum (#12659)
⬆️ Checksum updates in gallery/index.yaml

Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: mudler <2420543+mudler@users.noreply.github.com>
2026-10-13 09:02:16 +02:00
localai-org-maint-botandmudler d4a5af8bfe chore(model-gallery): ⬆️ update checksum (#12639)
⬆️ Checksum updates in gallery/index.yaml

Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: mudler <2420543+mudler@users.noreply.github.com>
2026-10-11 23:49:12 +02:00
mudler-agentandEttore Di Giacinto 0177e4988c feat(images): add ESRGAN upscaling and Studio workflow (#12620)
* feat(images): add upscale model capabilities

* fix(config): keep SD GGML upscale opt-in

* feat(stablediffusion): add lazy ESRGAN upscale bridge

Keep native image ownership in C++ and serialize context creation, inference and teardown. Use upscale_scale in backend options as the explicit upscale-only marker because ModelOptions does not carry usecases.

Assisted-by: Codex:gpt-5

* fix(stablediffusion): validate ESRGAN settings

* fix(upscale): forward typed settings and contain resolved model paths

Typed settings replace legacy options without duplicates. Resolve model and trusted root symlinks before caching the model path, rejecting missing files and escapes.

Assisted-by: Codex:gpt-5

* fix(upscale): validate scale and clean failed HTTP outputs

Require an explicit scale bounded to 1-16, check backend results, and keep destination cleanup owned by the allocating endpoint. Cover validation, result failures, cleanup, and successful URL responses.

Assisted-by: Codex:gpt-5

* feat(studio): add inline image upscale workflow

Assisted-by: OpenAI:gpt-5

* test(studio): serve upscale capability fixtures

* fix(stablediffusion): default ESRGAN tiling to full frame

* feat(gallery): add RealESRGAN anime upscaler

* fix(stablediffusion): allow full-frame ESRGAN tiles

* fix(routes): select explicit upscale models

Give image upscaling dedicated usecase-filtered middleware and keep ordinary image models out of the endpoint. Mark and verify the legacy Diffusers x4 gallery model as an explicit upscaler.

Assisted-by: OpenAI:gpt-5 [shell]

* refactor(upscale): keep settings in backend options

* test(config): keep upscale options backend-specific

* fix: keep upscale routing metadata out of backend options

---------

Co-authored-by: Ettore Di Giacinto <mudler@localai.io>
2026-10-11 00:30:09 +02:00
mudler-agentandEttore Di Giacinto a8ee0d95ec feat(stablediffusion-ggml): add Qwen Image runtime schedules (#12619)
* feat(stablediffusion-ggml): pass custom sigmas

Turbo diffusion models require checkpoint-specific sigma schedules. Parse the model option and forward its values to stable-diffusion.cpp for each image request.

Signed-off-by: Ettore Di Giacinto <mudler@users.noreply.github.com>
Assisted-by: nib <noreply@localai.io>

* feat(gallery): add Qwen Image 2.1 runtimes

Add the validated Anime FUSAL and AtomicChat Turbo Uncensored assemblies with pinned artifacts, exact runtime settings, licensing disclosures, and text-to-image limitations.

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
Assisted-by: nib <noreply@localai.io>

---------

Signed-off-by: Ettore Di Giacinto <mudler@users.noreply.github.com>
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
Co-authored-by: Ettore Di Giacinto <mudler@localai.io>
2026-10-11 00:26:54 +02:00
localai-org-maint-botandmudler 297f7bd662 chore(model-gallery): ⬆️ update checksum (#12618)
⬆️ Checksum updates in gallery/index.yaml

Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: mudler <2420543+mudler@users.noreply.github.com>
2026-10-11 00:26:20 +02:00
mudler-agentandEttore Di Giacinto 08871b1a6a feat(audio): add YuE2 music generation (#12617)
* feat(audio): forward sound generation params

Pass string-valued sound generation parameters from the public request to
the audio backend. Typed fields retain precedence over colliding generic
parameters, and source audio remains unavailable in the public schema.

Assisted-by: nib:gpt-5.6-sol
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* feat(gallery): add YuE2 music model

Assisted-by: nib:gpt-5.6-sol
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* docs(audio): document YuE2 sound generation

Assisted-by: nib:gpt-5.6-sol
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* fix(audio): reserve source input parameter

Assisted-by: nib:gpt-5.6-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>
2026-10-11 00:26:10 +02:00
c5e40336b0 chore(gallery): add spark-s1-4b-v6 (#12609)
* chore(gallery): add spark-s1-4b-v6

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Abhishek Rai <abhishek.rai085@gmail.com>

* docs(gallery): correct Spark logprobs request

LocalAI treats numeric logprobs as an enable flag. Request the token
count through top_logprobs and check for missing option letters.

Assisted-by: Codex:gpt-6

---------

Signed-off-by: Abhishek Rai <abhishek.rai085@gmail.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: localai-org-maint-bot <306269227+localai-org-maint-bot@users.noreply.github.com>
2026-10-10 17:03:21 +02:00
localai-org-maint-botandmudler 1537ca010c chore(model-gallery): ⬆️ update checksum (#12605)
⬆️ Checksum updates in gallery/index.yaml

Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: mudler <2420543+mudler@users.noreply.github.com>
2026-10-10 08:28:35 +02:00
mudler-agentandEttore Di Giacinto da10cbb65e feat(gallery): add Iris-3B image model (#12597)
Update stable-diffusion.cpp to its merged Iris support commit and add the original F32 Iris weights with the Qwen3-VL Q4_K_M text encoder to the model gallery.

Assisted-by: nib:gpt-5.6-sol

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
Co-authored-by: Ettore Di Giacinto <mudler@localai.io>
2026-10-09 22:57:26 +02:00
localai-org-maint-botandmudler 5946b18618 chore(model-gallery): ⬆️ update checksum (#12585)
⬆️ Checksum updates in gallery/index.yaml

Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: mudler <2420543+mudler@users.noreply.github.com>
2026-10-09 12:19:39 +02:00
mudler-agentandEttore Di Giacinto 855958960f fix(gallery): place context options at the root (#12590)
The Qwen3 template nests context_size, f16, and mmap under parameters,
where the typed model configuration ignores them. Move these options to
the root and correct three model-specific context overrides.

Test the real gallery data and generated qwen3-vl-4b-thinking YAML.
Document manual repair because template updates do not rewrite installed
configurations.

Fixes #12528

Assisted-by: nib:gpt-6-astra

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
Co-authored-by: Ettore Di Giacinto <mudler@localai.io>
2026-10-09 10:16:11 +02:00
localai-org-maint-botandmudler 89a0955b5b chore(model-gallery): ⬆️ update checksum (#12557)
⬆️ Checksum updates in gallery/index.yaml

Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: mudler <2420543+mudler@users.noreply.github.com>
2026-10-07 23:09:59 +02:00
localai-org-maint-botandEttore Di Giacinto 6b794651a4 feat(diarization): return sound events with include_sounds (#12544)
* feat(diarization): return sound events with include_sounds

A client that wants text, speakers, voice prints and sound events had to
make a diarization call and a separate sound call. Add an include_sounds
request field to /v1/audio/diarization that adds a sounds array of closed
events {start, end, label, confidence}, in seconds.

The parakeet-cpp backend runs a tagger-only scene stream over the clip,
the same stream and thresholds the live path uses, so a clip gives the
same events offline and live. A model with no sound_model companion, or a
backend that does not report sound events, fails with 501 and the stable
code include_sounds_unsupported instead of an empty list. The proto
carries sounds_included so an empty list still means "nothing heard".

The localai-proxy backend forwards the field. Swagger, docs and the
e2e mock backend are updated.

Assisted-by: Claude:claude-sonnet-5-5 [protoc swag go]

* feat(gallery): add parakeet-cpp-multilingual-diarization-speakers-sounds

Same as parakeet-cpp-multilingual-diarization-speakers (TDT 0.6B v3,
Nemotron-3-Diarization, WeSpeaker) plus a CED-Tiny sound_model, so one
model name serves /v1/audio/diarization with include_text,
include_speaker_profiles and include_sounds. It declares the
sound_classification usecase like the realtime scene entries.

Assisted-by: Claude:claude-sonnet-5-5

---------

Co-authored-by: Ettore Di Giacinto <mudler@localai.io>
2026-10-07 14:10:45 +02:00
localai-org-maint-botandmudler d6238f60cd chore(model-gallery): ⬆️ update checksum (#12505)
⬆️ Checksum updates in gallery/index.yaml

Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: mudler <2420543+mudler@users.noreply.github.com>
2026-10-07 08:27:07 +02:00
localai-org-maint-botandEttore Di Giacinto 73b4acdca7 feat(gallery): add parakeet-cpp-multilingual-diarization-speakers (#12535)
The English-only 110M ASR in parakeet-cpp-nemotron-3-diarization-asr-speakers
garbles other languages. Add a bundle that pairs Parakeet TDT 0.6B v3
(25 European languages) with the Nemotron-3-Diarization model and the
WeSpeaker ResNet34 encoder, so one /v1/audio/diarization call with
include_text and include_speaker_profiles returns turns, multilingual text
and one voice-print embedding per speaker.

Assisted-by: Claude Code:claude-sonnet-5-5

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
Co-authored-by: Ettore Di Giacinto <mudler@localai.io>
2026-10-06 22:33:50 +02:00
Ettore Di Giacinto ce4099ea38 feat(gallery): declare speaker_recognition on parakeet-cpp bundles
The small and standard bundles have a voice component, and
parakeet-cpp-realtime-scene-speakers loads a speaker encoder, so they can
serve /v1/voice/* and the realtime voice_recognition stage. Add the usecase
to their known_usecases and pin it in the gallery tests.

Assisted-by: Claude Code:claude-sonnet-5-5
2026-10-05 23:46:06 +00:00
mudler-agentandEttore Di Giacinto 0f8d5640ba chore(model-gallery): aggregate reviewed model additions (#12501)
Collect the validated model-gallery entries from 48 open pull requests onto current master. Exclude #12325 because its variant groupings violate gallery invariants, and exclude #12353 because the image model is declared as an unsupported llama.cpp chat model.

Source PRs: #12303, #12311, #12321, #12322, #12327, #12330, #12332, #12334, #12338, #12340, #12352, #12354, #12357, #12359, #12360, #12367, #12369, #12370, #12371, #12376, #12393, #12394, #12396, #12398, #12400, #12409, #12422, #12423, #12429, #12431, #12432, #12434, #12435, #12444, #12448, #12450, #12454, #12457, #12464, #12468, #12473, #12476, #12478, #12483, #12488, #12489, #12492, #12494.

Assisted-by: nib:gpt-5.6-sol

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
Co-authored-by: Ettore Di Giacinto <mudler@localai.io>
2026-10-05 22:35:35 +02:00
localai-org-maint-botandmudler 7310887e26 chore(model-gallery): ⬆️ update checksum (#12485)
⬆️ Checksum updates in gallery/index.yaml

Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: mudler <2420543+mudler@users.noreply.github.com>
2026-10-05 01:40:12 +02:00
mudler-agentandEttore Di Giacinto 3185b6fcf8 feat(parakeet-cpp): load bundle GGUF files, bundle gallery entries, pin bump (#12479)
* feat(parakeet-cpp): load bundle GGUF files and use their components by role

A bundle GGUF holds several models (ASR, VAD, diarization, sound events,
speaker encoder) in one file, each with its own licence. Detect a bundle
at load through parakeet_capi_bundle_components_json and open components
with parakeet_capi_load_component. The three symbols are probed together,
so an older libparakeet.so still loads plain files as before.

The only ASR component is the primary model; bundle_asr:<name> picks one
when there are several. A Silero VAD component of the primary bundle is
loaded without an option and serves /v1/vad and vad:true. The diar, ced
and voice components load on request: diar_component, sound_component and
speaker_component, or a companion option (diarization_model, sound_model,
speaker_model, vad_model) that names a bundle, even the model file itself.
vad_component picks a VAD component and implies vad:true.

A role the bundle cannot fill fails the load with the component list, and
a diarization or sound request on a model without that role names the
bundle components. Every existing option and single-file model behaves as
before.

Assisted-by: Claude:claude-sonnet-5-5 [Claude Code]

* chore(parakeet-cpp): bump parakeet.cpp to 781a973

Brings in the bundle GGUF format and its C-API (parakeet_capi_load_component,
parakeet_capi_bundle_components_json, parakeet_capi_load_error).

Assisted-by: Claude:claude-sonnet-5-5 [Claude Code]

* feat(parakeet-cpp): gallery entries for the bundle GGUF files, docs

Add parakeet-cpp-bundle-small (338 MB: Parakeet TDT+CTC 110M, Nemotron-3-
Diarization, CED-Small, WeSpeaker ResNet34-LM, Silero VAD), -standard
(1.1 GB, Parakeet TDT 0.6B v3 instead of the 110M model) and
-moondream-redux (215 MB: packed Redux and Silero VAD, CPU only). One
install serves transcription, VAD, diarization, sound events and speaker
naming through the component options. The existing single-purpose entries
stay.

A bundle has no single licence, so the entries use license: other and
state the licence and credit of each component in the description, with
the upstream inconsistency of the CED licence. The docs get a section on
bundles in audio-to-text with the entries, the roles, the options and the
licence notice, and pointers from the VAD, diarization and sound
classification pages. A gallery test checks the file names, checksums,
usecases and options.

Assisted-by: Claude:claude-sonnet-5-5 [Claude Code]

---------

Co-authored-by: Ettore Di Giacinto <mudler@localai.io>
2026-10-04 20:33:13 +02:00
mudler-agentandEttore Di Giacinto ed4a3975be feat(parakeet-cpp): gallery entries for the VAD-only Moondream slices, pin bump (#12469)
* feat(parakeet-cpp): add gallery entries for the VAD-only Moondream slices

Add parakeet-cpp-vad-moondream-redux and parakeet-cpp-vad-moondream-ultra.
They install the VAD head of Moondream Redux and Ultra (Q8_0) as small
files of 10 MB and 6 MB, cut out of the full models without retraining,
for the VAD endpoint. The files cannot transcribe, and a transcription
request fails with a clear error.

The files load only with a parakeet.cpp build that has VAD-only GGUF
support (parakeet.cpp pull request 87). The backend pin must move to a
commit that includes it before these entries work in a released image.
The parakeet-cpp-vad entry keeps installing Silero.

The docs list the files with the size, load time and memory compared
with loading a whole model. A gallery test checks the usecase, the file
name and the checksum of each entry.

Assisted-by: Claude Code:claude-sonnet-5-5 [golangci-lint]

* chore(parakeet-cpp): bump parakeet.cpp to e53a253

Brings in the VAD-only GGUF loader.

Assisted-by: Claude Code:claude-sonnet-5-5 [git] [gh]

* docs(gallery): link the parakeet.cpp VAD docs instead of the merged PR

Assisted-by: Claude Code:claude-sonnet-5-5 [git]

---------

Co-authored-by: Ettore Di Giacinto <mudler@localai.io>
2026-10-04 09:34:40 +02:00
mudler-agentandEttore Di Giacinto 99043b442c feat(router): route with native decision models (#12449)
* fix(schema): preserve SystemOne image inputs

Assisted-by: OpenAI

* test(schema): follow Ginkgo conventions for decision inputs

Assisted-by: OpenAI

* feat(llama-cpp): dispatch native decisions through Score

Upgrade the stock dependency and reconcile Score/TTS patches. Reuse native decision parsing, tasks, formatting and response-reader cleanup; preserve ordinary scoring admission and guard older dependencies.

Assisted-by: OpenAI

* refactor(systemone): share request and model validation

Assisted-by: OpenAI:gpt-5

* fix(systemone): preserve HTTP wire-byte validation limit

Keep structural validation separate from the serialized internal request bound so HTML escaping cannot reject valid HTTP payloads.

Assisted-by: OpenAI:gpt-5

* feat(systemone): bound images and account native decisions

Preserve public wire limits independently from router serialization. Reject unsupported NER images, map native request/capability errors, and stamp explicit usage once. Advertise decisions for stock llama-cpp.

Assisted-by: OpenAI

* fix(systemone): record usage on registered native route

Exercise real registration and billing with a mock native backend. Reject empty native responses, malformed image URLs, trailing JSON, and wire overflow including whitespace.

Assisted-by: OpenAI

* feat(router): add lazy native decision transport

Bind named models through internal ModelSystemOne calls with shared validation and bounded abandoned operations. Remove request and echoed-error contents from decision traces.

Assisted-by: OpenAI:gpt-5

* feat(router): classify overlapping policies with native decisions

Ask independent noul questions, validate probabilities and preserve first-superset routing. Wire the central factory with config-sensitive invalidation and cancellation-safe resolution. Document native framing and bounded operation limits.

Assisted-by: OpenAI:gpt-5

* feat(gallery): add pinned Julia-1 native decision model

Add a separate text-only llama-cpp Q8 entry with pinned Apache-2.0 source provenance and checksum. Installed using the gallery installer and exercised choice, score and noul on CPU.

Assisted-by: OpenAI

* test(router): verify native decisions through central factory

Add an opt-in real-model Ginkgo integration covering the native Go loader and C++ transport, token usage, independent overlapping labels, and candidate selection. Document owned-server execution and the intentionally non-quality threshold.

Assisted-by: Codex:gpt-5

* fix(llama-cpp): align upstream pin and preserve decision signatures

Advance to bed0a856 without losing the automated upstream bump. Detect full-request fill_task support at compile time and forward every question for Nimble framing while retaining the earlier native signature. Preserve reconciled SCORE/TTS patches; add standalone compatibility coverage.

Assisted-by: Codex:gpt-5

* feat(gallery): add native decision family defaults

Pin Laya, Kev-4B, lev, OpenJev and Nimble artifacts. Verify Laya/Kev/lev gallery installs and CPU contracts on both native pins; clearly mark OpenJev/Nimble runtime validation pending and their noncommercial licenses.

Assisted-by: OpenAI

* docs(decisions): clarify integrated Nimble prerequisite

Record the exact combined backend pin while retaining pending OpenJev and Nimble installation/runtime validation status.

Assisted-by: Codex:gpt-5

* fix(gallery): indent native decision model sequences

Match repository yamllint indentation for Laya, Kev, lev and OpenJev list fields. Parsed gallery data is unchanged; reproduce CI gallery lint failure before the whitespace-only fix and pass the same command afterward.

Assisted-by: Codex:gpt-5

* docs(decisions): record OpenJev and Nimble CPU validation

Record gallery installation, checksum/metadata verification and multiquestion native smoke results on bed0a856. Retain noncommercial and text-only limitations without accuracy or deterministic-output claims.

Assisted-by: OpenAI

* fix(ui): expose native Decisions router classifiers

Select classifier models using metadata-driven capability routing, retain tuned thresholds, and validate native decision selections before saving. Cover both native backends and create/save/reopen in the real React editor.

Assisted-by: Codex:gpt-5

* fix(router): exclude aliases from native decision discovery

Check the originally named config before advertising native Decisions eligibility. Retain target capability inheritance for ordinary generation aliases. Exercise the actual capabilities endpoint with native models on both backends, aliases, and disabled models.

Assisted-by: Codex:gpt-5

* feat(systemone): share bounded multimodal input validation

Preserve text wire limits while admitting bounded PNG/JPEG decision input. Share collection and header validation across internal and public callers and keep the native runner response budget independent.

Assisted-by: OpenAI:API-assistant

* fix(systemone): bound admission lifetimes and validate complete images

Retain shared admission leases through actual work completion, including abandoned internal operations. Decode bounded image pixels, cap public native responses before usage stamping, and preserve oversized malformed text status precedence.

Assisted-by: OpenAI:API-assistant

* fix(router): classify images before media fetching

Preserve ordered structured probes for native decisions. Defer OpenAI
media preparation until routing selects the served model, so rejected
decision URLs cannot trigger downloads before shared validation.

Guard direct image collection with context-aware shared admission.
Keep text classifiers and embedding caches from discarding image input.
Retain fail-closed classifier configuration and runtime fallback policy.

Add middleware, typed-content, admission, cancellation and cache tests.

Assisted-by: OpenAI:API-assistant

* fix(router): bound extraction before serialization

Check probe budgets before copying text or marshaling message state.
Count JSON escaping so oversized internal inputs fail before allocation.

Preserve typed Anthropic blocks through selected-model conversion and
fallback. Keep retry coverage in Ginkgo without global test registration.

Assisted-by: OpenAI

* fix(router): bound supported probe serialization

Arbitrary structs can bypass the probe budget through pointer marshalers,
string tags, and promoted fields. Accept concrete chat schema types and
plain JSON values instead of emulating arbitrary struct serialization.

Budget escaped direct prompts before marshaling so raw length cannot hide
serialized expansion. Preserve runtime fallback and reject oversized
input before invoking the decision runner.

Add Ginkgo allocation, boundary, and marshaler invocation regressions.
Six-package tests, three-package race tests, and full-T2 delta lint pass.

Assisted-by: OpenAI:GPT-5 golangci-lint

* feat(decisions): enable bounded OpenJev images

Validate native decision images before permissive media parsing and pixel
allocation. Require both decision image support and a vision projector;
missing or audio-only projectors cannot silently become text decisions.

Pin the OpenJev Q8 projector and document its license and disk footprint.
Add native safety tests, canonical limit parity, gallery and load-option
checks, and a reproducible CPU direct-RPC contrasting-image smoke.

Assisted-by: OpenAI:GPT-5

* fix(decisions): reject incomplete image streams

stb accepts corrupt PNG Adler checksums and truncated JPEG scans.
Use bounded zlib validation and strict libjpeg decoding before parsing.
Keep dimension and aggregate pixel checks ahead of decoder allocations.

Wire decoder dependencies into native builds and runtime packaging.
Add regressions for appended EOI and embedded marker bypasses.

Assisted-by: OpenAI:GPT-5

* fix(ci): gate native decision image validation

Run the decoder security tests outside the stdlib-only native suite.
Fetch vendor headers at the backend pin and provision decoder dependencies.
Gate Go limit parity and production CMake wiring without model downloads.

Assisted-by: OpenAI:GPT-5

* test(decisions): cover multimodal public API paths

Exercise shared image contracts through the registered HTTP routes and
external mock backend. Add opt-in cached gallery installation and real
OpenJev image decisions through SystemOne and both routing APIs.

Assisted-by: Codex:gpt-5

* test(decisions): assert isolation and cache bypass

Observe external RPC calls and compare complete classifier history.
Winner-only and cache-miss checks could hide dropped history or cache use.

Give real inference its own application and model directory so shared
backend mappings and loaded processes cannot affect mixed suite order.

Assisted-by: OpenAI:ChatGPT

* test(decisions): isolate fixture globals

Disable optional global services in the isolated HTTP fixture and register
cleanup before setup assertions. Verify meter provider identity survives
fixture creation and destruction.

Snapshot observed usage before assertions so failures cannot retain the
mutex. Require a successful usage stamp before checking error responses.

Assisted-by: Codex:gpt-5 golangci-lint

* fix(application): honor optional telemetry controls

Skip failover gauge registration when metrics are disabled. Register
against the application meter rather than looking up the global provider.

Allow embedders to retain the bounded routing log without billing stats.
Keep the existing default when stats are disabled. The isolated HTTP
fixture uses this option without losing its native router assertions.

Assisted-by: Codex:gpt-5 golangci-lint

---------

Co-authored-by: Ettore Di Giacinto <mudler@localai.io>
2026-10-04 09:34:21 +02:00
localai-org-maint-botandmudler c99414019f chore(model-gallery): ⬆️ update checksum (#12462)
⬆️ Checksum updates in gallery/index.yaml

Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: mudler <2420543+mudler@users.noreply.github.com>
2026-10-04 08:47:43 +02:00
mudler-agentandEttore Di Giacinto 6c718fdda7 feat(parakeet-cpp): VAD (Silero and the Moondream head), vad_model option and gallery entries (#12463)
* feat(parakeet-cpp): implement the VAD call and add the vad_model option

The backend now serves the VAD gRPC call (POST /vad and /v1/vad) with the
standalone VAD of libparakeet. It accepts a Silero VAD GGUF as the model
file, or an ASR model with a VAD head (Moondream Ultra and Redux). The
request audio is float32 PCM at 16 kHz; the response lists the speech
segments in seconds, like the silero-vad backend. A model with neither
fails the request with the library message.

The vad_threshold, vad_min_pause, vad_min_speech, vad_speech_pad and
vad_max_segment options tune the segmenter. Unset values keep the
defaults of the detector in use, and a bad value fails the load.

The vad_model option names a Silero GGUF, resolved against the models
directory like the other companion files. It lets any ASR model cut long
audio at pauses through parakeet_capi_transcribe_path_json_vad_with, and
it implies vad. vad:true alone still uses the model's own head.

The new symbols are probed like the existing optional ones. A library
without them still loads; the feature that needs one fails with a clear
message only when it is used.

Assisted-by: Claude:claude-sonnet-5-5 [go test]

* feat(gallery): add parakeet-cpp VAD entries and a v3 plus Silero example

Add VAD-only entries for the parakeet-cpp backend: the VAD heads of
Moondream Redux (packed, CPU) and Ultra (Q8_0), which share their files
with the existing ASR entries, and Silero VAD v6.2.3 as a GGUF (MIT,
Silero Team). The parakeet-cpp-vad entry installs Silero; it has no variants,
because variant ranking prefers the larger build that fits and these are
different detectors.

Add parakeet-cpp-tdt-0.6b-v3-silero-vad, a v3 entry that sets vad_model
so long audio is cut at pauses by Silero.

The Silero GGUF entries point at the intended Hugging Face URL of the
file; the existing silero-vad entries are unchanged. A test checks the
usecases, the shared files and the default entry and the vad_model reference.

Assisted-by: Claude:claude-sonnet-5-5 [go test]

* docs: describe parakeet-cpp VAD and the vad_model option

Document the VAD endpoint on the parakeet-cpp backend (Silero GGUF and
the VAD heads of Moondream Ultra and Redux), the vad_* tuning options,
and the vad_model option that lets an ASR model without a VAD head cut
long audio with Silero.

Assisted-by: Claude:claude-sonnet-5-5

* chore(parakeet-cpp): bump parakeet.cpp to 6165e3d

Pin the release that adds the standalone VAD (Ultra/Redux head and
Silero) and the C API calls the backend now uses.

Assisted-by: Claude:claude-sonnet-5-5

---------

Co-authored-by: Ettore Di Giacinto <mudler@localai.io>
2026-10-04 01:02:09 +02:00
mudler-agentandEttore Di Giacinto 00faf4ec26 feat(parakeet-cpp): Moondream Ultra and Redux gallery entries, VAD option, pin bump (#12455)
* chore(parakeet-cpp): bump parakeet.cpp to 11c1a0f

Picks up support for the Moondream Ultra and Redux models and the
VAD-segmented transcription entry point (C-API ABI is still 10).

Assisted-by: Claude:claude-sonnet-5-5

* feat(parakeet-cpp): add vad option for long-audio transcription

Models with a VAD head (Moondream Ultra and Redux) can cut long audio at
pauses. Setting vad:true in the model options routes offline
transcription through parakeet_capi_transcribe_path_json_vad. The symbol
is probed at startup like the other optional entry points, and vad:true
fails the load with a clear message when the library lacks it. A model
without a VAD head fails the request with the library's own message.
The option is off by default and does not affect streaming.

Also say in the load error that a packed ternary Redux model is CPU only,
because the library reports its refusal on a GPU backend through its log,
not through the C API.

Assisted-by: Claude:claude-sonnet-5-5

* feat(gallery): add Moondream Ultra and Redux for parakeet-cpp

Add five entries from the public parakeet-cpp GGUF repository: Ultra in
F16 and Q8_0, and Redux as packed ternary (CPU only, offline only) and
as dequantized F16 and Q8_0 (any backend). The entries enable vad:true so
long audio is cut at pauses. Checksums come from the repository's LFS
metadata. The weights are CC-BY-4.0.

Assisted-by: Claude:claude-sonnet-5-5

* docs(parakeet-cpp): document Moondream Ultra, Redux and the vad option

Assisted-by: Claude:claude-sonnet-5-5

---------

Co-authored-by: Ettore Di Giacinto <mudler@localai.io>
2026-10-03 22:08:12 +02:00
localai-org-maint-botandmudler 776d9cc30b chore(model-gallery): ⬆️ update checksum (#12441)
⬆️ Checksum updates in gallery/index.yaml

Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: mudler <2420543+mudler@users.noreply.github.com>
2026-10-02 23:57:35 +02:00
mudler-agentandEttore Di Giacinto 38a2aa45fe feat(gallery): add Nimble 9B and CLM decision models, bump vllm.cpp to a19294a9 (#12397)
* feat(gallery): add nimble-9b-vllm-cpp decision model

Add Bespoke Nimble 9B, converted for vllm.cpp and pinned to the weights
commit 52eead25 of mudler/Bespoke-Nimble-9B-vllm-cpp (HEAD only adds the
model card). It is a redistribution of bespokelabs/Bespoke-Nimble-9B
with the LoRA merged into Qwen3.5-9B; config.json names NimbleModel, so
no hf_overrides are needed.

The artifact sits under overrides, where the installer reads it. The
entry sets an 8192-token context, Nimble's own prompt limit, and a KV
pool of 1024 blocks of 32 tokens for 4 sequences (about 1 GiB at 32 KiB
per token for the 8 full-attention layers).

Installed with local-ai models install and served on CPU through the
vllm-cpp backend: the model card's billing request gives billing
(0.986), refund 0.998 and urgency 0.33. Peak resident memory was
18.4 GB, so the description asks for about 20 GB of free RAM.

List the entry in the decisions gallery table. CLM stays out of the
gallery: the pinned engine cannot load the published head layout.

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
Assisted-by: Claude Code:claude-sonnet-5-5

* feat(gallery): add clm-v0.1-8b-vllm-cpp and bump vllm.cpp for CLM

The CLM checkpoint on mudler/CLM-v0.1-8B-vllm-cpp stores the heads with
the reference's own tensor names (state_head.inp, hidden.N, norms.N,
out). The pinned vllm.cpp 96788348 still expects the old .0/.2/.4/.6
layout and refuses the load with "head.safetensors incomplete for
state_head". vllm.cpp a19294a9 matches the reference layout and adds the
converter that produced the upload, so move the pin there. The ABI stays
at v30.

Add the CLM entry, pinned to the weights commit 0d1903b1 (HEAD only adds
the model card), with a 4096-token context and a KV pool for 4 sequences
(about 2.25 GiB at 144 KiB per token for Qwen3-8B).

Installed with local-ai models install and served on CPU against a
libvllm built at a19294a9: the model card example (john works at google,
entity type) gives person 0.950, the same as the card. Peak resident
memory was 17.9 GB.

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
Assisted-by: Claude Code:claude-sonnet-5-5

---------

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
Co-authored-by: Ettore Di Giacinto <mudler@localai.io>
2026-10-02 09:41:31 +02:00