From 33bc887e3695c351468dc35091cebcb0ad05c280 Mon Sep 17 00:00:00 2001 From: localai-org-maint-bot <306269227+localai-org-maint-bot@users.noreply.github.com> Date: Sun, 4 Oct 2026 00:06:29 +0000 Subject: [PATCH 1/2] chore(gallery): add Index-Translate 9B variants Add Q4_K_M and Q8_0 builds for text translation with llama.cpp. Use the embedded template, disable thinking, and document installation. Pin the downloads and verify their SHA256 against HF metadata and headers. Assisted-by: Codex:gpt-6 --- docs/content/features/model-gallery.md | 23 +++++++++ gallery/index.yaml | 70 ++++++++++++++++++++++++++ 2 files changed, 93 insertions(+) diff --git a/docs/content/features/model-gallery.md b/docs/content/features/model-gallery.md index 3bdfc6d4174d..d504df778876 100644 --- a/docs/content/features/model-gallery.md +++ b/docs/content/features/model-gallery.md @@ -39,6 +39,29 @@ Both views use the same model selection and store the view, search, filter, and selection in the URL. Installing from Explore does not move you away from the catalog; the entry updates in place when the operation finishes. +## Index-Translate-9B + +[Index-Translate-9B](https://huggingface.co/IndexTeam/Index-Translate-9B) provides +text translation across 150 languages with terminology and formatting instructions. +The gallery includes Q4_K_M and Q8_0 GGUF builds for llama.cpp, with a 32,768-token +context, thinking disabled, and temperature 0, following the publisher's serving examples. + +Install with automatic variant selection: + +```bash +local-ai models install index-translate-9b +``` + +To select Q8_0 explicitly: + +```bash +local-ai models install index-translate-9b --variant index-translate-9b-q8 +``` + +In chat, include the target language and any constraints in the user message, for example: +"Translate to Italian. Preserve the placeholder {name}: Hello, {name}!" +These entries provide text translation; they do not configure image or speech input. + ## Cyber-Ornith 1.5 9B Cyber-Ornith 1.5 is a Qwen3.5 fine-tune for security auditing, terminal tasks, and tool use. diff --git a/gallery/index.yaml b/gallery/index.yaml index f0df4fe6e0b5..84b41ba080a3 100644 --- a/gallery/index.yaml +++ b/gallery/index.yaml @@ -1,4 +1,74 @@ --- +- name: "index-translate-9b" + variants: + - model: index-translate-9b-q8 + url: "github:mudler/LocalAI/gallery/virtual.yaml@master" + urls: + - https://huggingface.co/IndexTeam/Index-Translate-9B + - https://huggingface.co/mradermacher/Index-Translate-9B-GGUF + description: | + Index-Translate-9B is a Qwen3.5-based text translation model for 150 languages, + with support for terminology, formatting, style, and context instructions. + This Q4_K_M GGUF uses llama.cpp with thinking disabled and greedy decoding. + license: "apache-2.0" + tags: + - llm + - gguf + - translation + - cpu + - gpu + overrides: + backend: llama-cpp + context_size: 32768 + known_usecases: + - chat + options: + - use_jinja:true + chat_template_kwargs: + enable_thinking: false + template: + use_tokenizer_template: true + parameters: + model: llama-cpp/models/index-translate-9b/Index-Translate-9B.Q4_K_M.gguf + temperature: 0 + files: + - filename: llama-cpp/models/index-translate-9b/Index-Translate-9B.Q4_K_M.gguf + sha256: 5ff8911559a6736d926183fcb20e2548416b589033660dd530d059c7b74e2c32 + uri: https://huggingface.co/mradermacher/Index-Translate-9B-GGUF/resolve/6537a9d04a02397200903eee74634eec8b78ebd6/Index-Translate-9B.Q4_K_M.gguf +- name: "index-translate-9b-q8" + url: "github:mudler/LocalAI/gallery/virtual.yaml@master" + urls: + - https://huggingface.co/IndexTeam/Index-Translate-9B + - https://huggingface.co/mradermacher/Index-Translate-9B-GGUF + description: | + Index-Translate-9B is a Qwen3.5-based text translation model for 150 languages, + with support for terminology, formatting, style, and context instructions. + This Q8_0 GGUF uses llama.cpp with thinking disabled and greedy decoding. + license: "apache-2.0" + tags: + - llm + - gguf + - translation + - cpu + - gpu + overrides: + backend: llama-cpp + context_size: 32768 + known_usecases: + - chat + options: + - use_jinja:true + chat_template_kwargs: + enable_thinking: false + template: + use_tokenizer_template: true + parameters: + model: llama-cpp/models/index-translate-9b/Index-Translate-9B.Q8_0.gguf + temperature: 0 + files: + - filename: llama-cpp/models/index-translate-9b/Index-Translate-9B.Q8_0.gguf + sha256: 89efba722c7fab5439a98c8062c1365879470215453dd19d7406bd7fcf0b0dac + uri: https://huggingface.co/mradermacher/Index-Translate-9B-GGUF/resolve/6537a9d04a02397200903eee74634eec8b78ebd6/Index-Translate-9B.Q8_0.gguf - name: "ternary-bonsai-2-27b" url: "github:mudler/LocalAI/gallery/virtual.yaml@master" urls: From 63a4054a973a3d43804e3e826fc67e05b0d53f4c Mon Sep 17 00:00:00 2001 From: localai-org-maint-bot <306269227+localai-org-maint-bot@users.noreply.github.com> Date: Sun, 4 Oct 2026 03:06:19 +0000 Subject: [PATCH 2/2] test(cli): transfer socket descriptor ownership Duplicate the socket descriptor before handing it to the activation helper. Close the original file to prevent its finalizer from closing a reused coverage descriptor after the helper closes its own file wrapper. Assisted-by: Codex:gpt-6 --- core/cli/run_socket_activation_test.go | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/core/cli/run_socket_activation_test.go b/core/cli/run_socket_activation_test.go index f3b6b59e0368..ecfe7d719858 100644 --- a/core/cli/run_socket_activation_test.go +++ b/core/cli/run_socket_activation_test.go @@ -7,6 +7,8 @@ import ( "os" "strconv" + "golang.org/x/sys/unix" + . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" ) @@ -53,7 +55,13 @@ var _ = Describe("systemdActivatedListeners", func() { Expect(err).NotTo(HaveOccurred()) Expect(original.Close()).To(Succeed()) - listeners, err := listenersFromSystemdFDs(int(file.Fd()), 1) + // The activation helper takes ownership of a raw descriptor. Give it a + // duplicate so file's finalizer cannot close a later user of that descriptor. + fd, err := unix.Dup(int(file.Fd())) + Expect(err).NotTo(HaveOccurred()) + Expect(file.Close()).To(Succeed()) + + listeners, err := listenersFromSystemdFDs(fd, 1) Expect(err).NotTo(HaveOccurred()) Expect(listeners).To(HaveLen(1)) DeferCleanup(listeners[0].Close)