From 64d0b3b094d4fae33261d866915f2d780a6471b4 Mon Sep 17 00:00:00 2001 From: localai-org-maint-bot <306269227+localai-org-maint-bot@users.noreply.github.com> Date: Thu, 22 Oct 2026 04:05:19 +0000 Subject: [PATCH 1/2] feat(gallery): add Spark-X2.6 4B variants Add the publisher Q4_K_M and Q8_0 builds with pinned downloads and verified SHA256 hashes. Document installation and variant selection. Assisted-by: Codex:gpt-6 --- docs/content/features/model-gallery.md | 14 ++++ gallery/index.yaml | 78 +++++++++++++++++++++ gallery/models/index.yaml | 94 ++++++++++++++++++++++++++ 3 files changed, 186 insertions(+) diff --git a/docs/content/features/model-gallery.md b/docs/content/features/model-gallery.md index 56dde2118220..5857f4006efd 100644 --- a/docs/content/features/model-gallery.md +++ b/docs/content/features/model-gallery.md @@ -256,6 +256,20 @@ These builds support text chat only: the publisher has no verified vision projec They use standard GGUF files without MTP decoding. See the [model card](https://huggingface.co/ukisai/Swift-1.5-Qwen3.8-27B-GSQ-RCO-GGUF) and [Swift Open License v1.0](https://huggingface.co/ukisai/Swift-1.5-Qwen3.8-27B-GSQ-RCO-GGUF/blob/main/LICENSE) for usage terms. +## Spark-X2.6-4B + +Install Spark-X2.6-4B for text chat, reasoning, and coding with llama.cpp. +The gallery groups the publisher's Q4_K_M and Q8_0 GGUF builds as variants: + +```bash +local-ai models install spark-x2.6-4b-q4 +local-ai models install spark-x2.6-4b-q4 --variant spark-x2.6-4b-q8 +``` + +Both builds use the embedded chat template and a 32,768-token default context. +They use the same Spark architecture as the existing Spark-X2.5 models. +See the [publisher's model card](https://huggingface.co/XHToken/Spark-X2.6-4B-GGUF) for model details and the Apache 2.0 license. + ## Sharp-Spark-X2.5-4B Install `sharp-spark-x2.5-4b` for coding and text chat with llama.cpp. diff --git a/gallery/index.yaml b/gallery/index.yaml index 981cc3563d0d..ae10f177a248 100644 --- a/gallery/index.yaml +++ b/gallery/index.yaml @@ -3,6 +3,84 @@ # written by scripts/models/cmd/modelcatalog and stays only so releases before # the cutover keep working. CI fails when it differs from the generated copy: # go run ./scripts/models/cmd/modelcatalog --library gallery/models/index.yaml --out gallery/index.yaml +- url: github:mudler/LocalAI/gallery/virtual.yaml@master + name: spark-x2.6-4b-q4 + description: | + Spark-X2.6-4B is XHToken's 4B text model for conversation, reasoning, + coding, and multilingual tasks. This build uses Q4_K_M GGUF weights, + the embedded Jinja chat template, and a 32K-token default context. + license: apache-2.0 + urls: + - https://huggingface.co/XHToken/Spark-X2.6-4B + - https://huggingface.co/XHToken/Spark-X2.6-4B-GGUF + tags: + - llm + - gguf + - cpu + - gpu + - reasoning + - coding + - multilingual + files: + - filename: llama-cpp/models/spark-x2.6-4b/Spark-X2.6-4B-Q4_K_M.gguf + sha256: 91cb2811aebb47ac916aa619d27d4cdd7f4143106b7917accb8ead4cd7f5cbd9 + uri: https://huggingface.co/XHToken/Spark-X2.6-4B-GGUF/resolve/fe31f8d64890302cc3a1d365d700357b4b75ba77/Spark-X2.6-4B-Q4_K_M.gguf + overrides: + backend: llama-cpp + context_size: 32768 + known_usecases: + - chat + options: + - use_jinja:true + parameters: + min_p: 0 + model: llama-cpp/models/spark-x2.6-4b/Spark-X2.6-4B-Q4_K_M.gguf + repeat_penalty: 1 + temperature: 1 + top_k: -1 + top_p: 0.95 + template: + use_tokenizer_template: true + variants: + - model: spark-x2.6-4b-q8 +- url: github:mudler/LocalAI/gallery/virtual.yaml@master + name: spark-x2.6-4b-q8 + description: | + Spark-X2.6-4B is XHToken's 4B text model for conversation, reasoning, + coding, and multilingual tasks. This build uses Q8_0 GGUF weights, + the embedded Jinja chat template, and a 32K-token default context. + license: apache-2.0 + urls: + - https://huggingface.co/XHToken/Spark-X2.6-4B + - https://huggingface.co/XHToken/Spark-X2.6-4B-GGUF + tags: + - llm + - gguf + - cpu + - gpu + - reasoning + - coding + - multilingual + files: + - filename: llama-cpp/models/spark-x2.6-4b/Spark-X2.6-4B-Q8_0.gguf + sha256: 145c2aa606820663f26ad530b8fc141ed885e2e9ca29f9be7c3bfe8931d58b81 + uri: https://huggingface.co/XHToken/Spark-X2.6-4B-GGUF/resolve/fe31f8d64890302cc3a1d365d700357b4b75ba77/Spark-X2.6-4B-Q8_0.gguf + overrides: + backend: llama-cpp + context_size: 32768 + known_usecases: + - chat + options: + - use_jinja:true + parameters: + min_p: 0 + model: llama-cpp/models/spark-x2.6-4b/Spark-X2.6-4B-Q8_0.gguf + repeat_penalty: 1 + temperature: 1 + top_k: -1 + top_p: 0.95 + template: + use_tokenizer_template: true - url: github:mudler/LocalAI/gallery/virtual.yaml@master name: adavar-3b-q4 description: | diff --git a/gallery/models/index.yaml b/gallery/models/index.yaml index da124ab3a6ca..8993b0748bd5 100644 --- a/gallery/models/index.yaml +++ b/gallery/models/index.yaml @@ -4,6 +4,100 @@ # changes and never edit it by hand. CI fails when it is stale. A build from # master reads it as the default model source; a tagged build reads the gallery # until the release cutover. +- kind: model + id: spark-x2.6-4b-q4 + name: spark-x2.6-4b-q4 + version: 0.0.0-gallery.893c50e4aba3 + description: | + Spark-X2.6-4B is XHToken's 4B text model for conversation, reasoning, + coding, and multilingual tasks. This build uses Q4_K_M GGUF weights, + the embedded Jinja chat template, and a 32K-token default context. + license: apache-2.0 + urls: + - https://huggingface.co/XHToken/Spark-X2.6-4B + - https://huggingface.co/XHToken/Spark-X2.6-4B-GGUF + tags: + - llm + - gguf + - cpu + - gpu + - reasoning + - coding + - multilingual + channel: gallery + policy: + requireSignature: false + schemaVersion: 1 + model: + url: github:mudler/LocalAI/gallery/virtual.yaml@master + files: + - filename: llama-cpp/models/spark-x2.6-4b/Spark-X2.6-4B-Q4_K_M.gguf + sha256: 91cb2811aebb47ac916aa619d27d4cdd7f4143106b7917accb8ead4cd7f5cbd9 + uri: https://huggingface.co/XHToken/Spark-X2.6-4B-GGUF/resolve/fe31f8d64890302cc3a1d365d700357b4b75ba77/Spark-X2.6-4B-Q4_K_M.gguf + overrides: + backend: llama-cpp + context_size: 32768 + known_usecases: + - chat + options: + - use_jinja:true + parameters: + min_p: 0 + model: llama-cpp/models/spark-x2.6-4b/Spark-X2.6-4B-Q4_K_M.gguf + repeat_penalty: 1 + temperature: 1 + top_k: -1 + top_p: 0.95 + template: + use_tokenizer_template: true + variants: + - model: spark-x2.6-4b-q8 +- kind: model + id: spark-x2.6-4b-q8 + name: spark-x2.6-4b-q8 + version: 0.0.0-gallery.dc29344bd04b + description: | + Spark-X2.6-4B is XHToken's 4B text model for conversation, reasoning, + coding, and multilingual tasks. This build uses Q8_0 GGUF weights, + the embedded Jinja chat template, and a 32K-token default context. + license: apache-2.0 + urls: + - https://huggingface.co/XHToken/Spark-X2.6-4B + - https://huggingface.co/XHToken/Spark-X2.6-4B-GGUF + tags: + - llm + - gguf + - cpu + - gpu + - reasoning + - coding + - multilingual + channel: gallery + policy: + requireSignature: false + schemaVersion: 1 + model: + url: github:mudler/LocalAI/gallery/virtual.yaml@master + files: + - filename: llama-cpp/models/spark-x2.6-4b/Spark-X2.6-4B-Q8_0.gguf + sha256: 145c2aa606820663f26ad530b8fc141ed885e2e9ca29f9be7c3bfe8931d58b81 + uri: https://huggingface.co/XHToken/Spark-X2.6-4B-GGUF/resolve/fe31f8d64890302cc3a1d365d700357b4b75ba77/Spark-X2.6-4B-Q8_0.gguf + overrides: + backend: llama-cpp + context_size: 32768 + known_usecases: + - chat + options: + - use_jinja:true + parameters: + min_p: 0 + model: llama-cpp/models/spark-x2.6-4b/Spark-X2.6-4B-Q8_0.gguf + repeat_penalty: 1 + temperature: 1 + top_k: -1 + top_p: 0.95 + template: + use_tokenizer_template: true - kind: model id: adavar-3b-q4 name: adavar-3b-q4 From 2e55645acc587824943d401cda97c968800a1c72 Mon Sep 17 00:00:00 2001 From: localai-org-maint-bot <306269227+localai-org-maint-bot@users.noreply.github.com> Date: Fri, 23 Oct 2026 10:04:43 +0000 Subject: [PATCH 2/2] fix(mcp): update assistant test client stub Implement InstallLibraryBackend so the assistant tests satisfy the LocalAIClient interface after the library integration. Assisted-by: Codex:GPT-6 --- core/http/endpoints/mcp/localai_assistant_test.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/core/http/endpoints/mcp/localai_assistant_test.go b/core/http/endpoints/mcp/localai_assistant_test.go index 3e539ce7d4bd..5778f992d655 100644 --- a/core/http/endpoints/mcp/localai_assistant_test.go +++ b/core/http/endpoints/mcp/localai_assistant_test.go @@ -75,6 +75,10 @@ func (stubClient) InstallBackend(_ context.Context, _ localaitools.InstallBacken return "stub-backend-job", nil } +func (stubClient) InstallLibraryBackend(_ context.Context, _ localaitools.InstallLibraryBackendRequest) (*localaitools.InstallLibraryBackendResult, error) { + return &localaitools.InstallLibraryBackendResult{Status: "installed", Name: "stub-backend", SourceID: "stub-source"}, nil +} + func (stubClient) UpgradeBackend(_ context.Context, _ string) (string, error) { return "stub-upgrade-job", nil }