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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
FLAC normalization renames the backend's WAV destination. The next
request then reuses that apparently vacant path and replaces the first
recording when normalization runs again.
Give each request a UUID filename, and test that successive FLAC outputs
retain distinct paths and their original bytes.
Addresses the overwrite report in #12633. Reference-audio input remains
outside this fix.
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>
Pin the merge of LocalRecall #58 to include the PostgreSQL raw-vector
API and its reviewed client fixes. Keep existing text integration unchanged.
Assisted-by: nib:gpt-6-astra
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
Co-authored-by: Ettore Di Giacinto <mudler@localai.io>
* feat(launcher): package a Linux AppImage
Ship the existing Fyne launcher as an additive release asset without
bundling the server or changing its runtime downloader.
Pin packaging tools and the type-2 runtime, preserve the caller
environment, and document the native amd64 graphics requirements.
Validate packaging contracts and wire extraction smoke checks into CI.
Assisted-by: Codex:gpt-5
* fix(launcher): harden AppImage release checks
PR builds must not receive repository write credentials. Isolate uploads
in a gated job that consumes the tested artifact without checkout.
Keep the existing release check and dependency on GoReleaser.
A surviving process does not prove that the UI event loop works.
Require observable startup progress, reject initialization errors, and
bound termination. Document the remaining limits without changing the
launcher application. Add permission and smoke failure regressions.
Assisted-by: nib:unknown
* fix(launcher): install file for AppImage builds
appimagetool fails after Go compilation when file is missing. Install
it explicitly in CI and document the local build dependency. Check for
it before compilation and cover the missing-command failure in tests.
Assisted-by: nib:unknown
---------
Co-authored-by: Ettore Di Giacinto <mudler@localai.io>
* ⬆️ Update ggml-org/llama.cpp
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* fix(llama-cpp): preserve chat session state
Newer llama.cpp parsers return template state outside the request JSON.
Pass that state to both inference tasks and response readers so grammar,
tool calls, and reasoning remain available in both chat paths.
Detect the parser API during preparation to preserve older fork builds.
Assisted-by: Codex:gpt-6
---------
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
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>
* test(omnivoice): expose ignored duration controls
Compile the real wrapper with a model-free engine fixture. Four failing
assertions expose ignored duration, postprocessing, and validation.
Assisted-by: nib:gpt-6-astra
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
* feat(omnivoice): add bounded duration controls
Validate request controls before reference reads or native output.
Preserve engine defaults when controls are omitted. Bound forced
single-shot duration to 30 seconds as wrapper resource policy.
Exercise the real native boundary, streaming rejection, and defaults
with synthetic PCM. Document quantization and postprocessing limits.
Assisted-by: nib:gpt-6-astra
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
* test(omnivoice): require fixture-free ordinary tests
Expose the ordinary suite regression before isolating native fixtures.
Require selected native tests to reject a missing fixture explicitly.
Assisted-by: nib:gpt-6-astra
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
* fix(omnivoice): isolate native fixture tests
Ordinary Go tests must run without a compiled native fixture.
Select fixture specs explicitly in the dedicated gate while keeping
parser tests ordinary and native checks mandatory.
Assisted-by: nib:gpt-6-astra
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>
Aliases have no model file, so guessing attempts to parse the models
directory. Skip that work while retaining the context fallback and
normal alias validation.
Use a private call-local parser dependency to verify operation counts
without a mutable global hook. Cover concrete guessing, defaults,
alias validation, and resolved target equivalence.
Assisted-by: nib:gpt-6-astra
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
Co-authored-by: Ettore Di Giacinto <mudler@localai.io>
Exact configured requests need no loose-file enumeration. Reuse the
synchronized config lookup without adding a cache. Misses retain regex
discovery and raw-weight fallback with ALWAYS_INCLUDE.
Keep general listing and bearer discovery unchanged. Preserve request
validation, alias resolution, disabled-target checks, and model access.
Record diagnostics only for work performed.
Assisted-by: nib:gpt-6-astra
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
Co-authored-by: Ettore Di Giacinto <mudler@localai.io>
test: satisfy lint checks for upscale and diagnostics
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
Co-authored-by: Ettore Di Giacinto <mudler@localai.io>
* fix(chat): defer model fallback until after binding
Explicit chat models need neither legacy Bearer discovery nor default
listing. Defer those fallbacks until binding finds no model, while
keeping body validation and fresh binding inside each failover attempt.
Expose the existing request-phase UUID through a response header and a
nil-safe accessor. Disabled timing creates neither a header nor an ID.
Document the contract and cover fallback, authentication, and retries.
Assisted-by: OpenAI:undisclosed
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
* test(http): check diagnostic router cleanup
Assert that deferred router cleanup succeeds instead of ignoring its
error. This fixes the errcheck failure in the chat authentication test.
Assisted-by: OpenAI:undisclosed
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>
Diagnostic calls panic on a nil context even when timing is disabled.
Treat nil as an absent observation without changing loader contexts.
Add failing-first coverage for timing helpers and cached model loads.
The unchanged portable profile HTTP regression passes with this guard.
Assisted-by: OpenAI:undisclosed
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
Co-authored-by: Ettore Di Giacinto <mudler@localai.io>
* feat(diagnostics): add private opt-in profiler
Keep profiling on a dedicated loopback listener rather than the public API.
Validate settings and bind synchronously so startup reports configuration
and socket failures. Own sampling and shutdown for the run process.
Cover private handlers, blocked cmdline access, sampling cleanup, and
serving failures with focused Ginkgo tests.
Assisted-by: nib:gpt-6-astra
* feat(diagnostics): add sanitized phase timing
Carry generated request and reload identities through private contexts.
Keep timing disabled without allocations and emit only validated fields
at Info level when enabled.
Cover identity isolation, nested durations, inheritance, and sanitized
logging with focused race-tested Ginkgo specs.
Assisted-by: nib:gpt-6-astra
* fix(diagnostics): retain request observations
Reuse an existing request observation across recorders to avoid splitting
correlation. Keep the original context, identity, and sink without new
allocations. Preserve nil-recorder behavior and fresh reload identities.
Verify the regression fails before the fix and passes with the full
Diagnostics race suite afterward.
Assisted-by: nib:gpt-6-astra
* feat(cli): own opt-in diagnostics lifecycle
Expose profiling and phase timing flags without enabling them for debug.
Bind the private profiler before application initialization and propagate
serving failures through the run lifecycle.
Bound signal cleanup and preserve preload-only backend startup. Cover
flag parsing, preload isolation, cancellation, and once-only shutdown.
Document initialization and shutdown cancellation limitations.
Assisted-by: nib:gpt-6-astra
* feat(config): measure filter and reload phases
Separate request lock waits from filtering and held work. Aggregate reload
filesystem and parsing durations without logging inside the config lock.
Preserve caller option execution under the lock after metadata collection.
Extract only the internal diagnostics option before waiting for the lock.
Keep direct callers uninstrumented unless they supply diagnostics options.
Verify focused Diagnostics examples with the race detector, including
option ordering, gated contention, errors, panic propagation, and parity.
Assisted-by: nib:gpt-6-astra
* fix(config): separate early reload observation
Opaque callbacks cannot select timing before their execution point.
Carry the startup recorder explicitly through loader construction.
Apply late options once under the lock and honor composed last writes.
Document early and late phase boundaries and observation identities.
Report malformed gallery syntax as an internal parse failure without
changing strict or non-strict loader returns.
Assisted-by: nib:gpt-6-astra
* fix(config): preserve per-model option callbacks
The resolved snapshot suppresses existing callbacks during model defaults,
even when diagnostics are disabled. Pass original options through the
existing defaults pathway without adding diagnostics-driven replay.
Test stateful options with two models in enabled and disabled modes.
Preserve three calls and thread defaults of two and three.
Assisted-by: nib:gpt-6-astra
* feat(model): observe discovery phases
Carry request diagnostics through config and loose-file discovery to
separate directory enumeration from in-memory filtering and fallback.
Keep existing APIs as background-context wrappers and preserve discovery
policies, ordering, duplicates, errors, and filesystem operation counts.
Add focused parity, privacy, phase, and disabled-allocation tests.
The focused diagnostics race gate passes for model and galleryop.
Assisted-by: nib:gpt-6-astra
* feat(http): observe extraction phases
Generate diagnostic identity before request discovery, independently of
client correlation headers. End each extraction segment before inference
so downstream latency does not inflate discovery measurements.
Carry observations through discovery helpers and rebuilt request contexts
without changing cancellation or model selection. Cover disabled parity,
error outcomes, privacy, concurrent identity isolation and route contexts.
Assisted-by: nib:gpt-6-astra
* fix(http): retain diagnostics across failover
Failover restores its entry request before retrying. Initialize the
observation before that capture so direct extraction retains one ID.
Keep extraction spans per attempt and end them before downstream work.
Exercise two real targets without default middleware, including replay,
shared identity, phase boundaries, and timing-off response parity.
Assisted-by: nib:gpt-6-astra
* feat(model): observe initialization and routing
Mark loader entry before cache and admission checks. Measure only the
ModelRouter callback, without attributing transport or worker latency.
Test inherited identity and sanitized events with fake backends. Exercise
the actual Echo router to keep profiles private across debug and timing
options. Cover capture shutdown, forced close, and lifecycle failures.
Assisted-by: nib:gpt-6-astra
* docs(diagnostics): guide bounded investigations
Document private profiling, sampling ownership, and phase boundaries so
operators can interpret captures without assuming request attribution.
Add Ginkgo drift checks for flags, defaults, phases, links, and capture
warnings. These checks do not certify the operator prose.
The focused documentation race test passes after four expected failures.
The consolidated Diagnostics race gate passes across all eight packages.
This gate does not validate the full suite, auth, or production UI.
Assisted-by: nib:gpt-6-astra
* refactor(cli): restore inline run lifecycle
Remove diagnostic startup hooks so application startup stays readable
in Run. Keep the profiler as an optional sidecar with bounded cleanup
and an error watcher, without a general lifecycle runner.
Replace hook simulations with real CLI startup checks and component
capture tests. Document that application cleanup can exceed the
private listener budget.
The eight-package Diagnostics race gate passes. A cleanup mutation
fails the real CLI listener-release regression as expected.
Assisted-by: nib:gpt-6-astra
* fix(cli): retain concurrent startup errors
Cancellation must not hide a public API bind failure. Join the public
serve result, cancellation cause, and HTTP shutdown errors inline.
Ignore ErrServerClosed only after intentional shutdown.
Exercise real startup with an occupied API port and a failed private
listener. Isolate the Linux socket fixture in a subprocess and wait
for cancellation acknowledgment without timing sleeps.
Assisted-by: nib:gpt-6-astra
* refactor(http): make request context primary
Move context preparation into the request extractor. Diagnostics remain
an optional addition, not the entry point for request processing.
Preserve context initialization before failover captures the request.
Assisted-by: nib:gpt-6-astra
---------
Co-authored-by: Ettore Di Giacinto <mudler@localai.io>