feat: materialize Hugging Face model artifacts (#10825)

* feat(config): add model artifact source contract

Assisted-by: Codex:GPT-5 [Codex]

* feat(downloader): add authenticated raw-byte progress

Assisted-by: Codex:GPT-5 [Codex]

* feat(huggingface): resolve immutable snapshot manifests

Assisted-by: Codex:GPT-5 [Codex]

* feat(models): add artifact storage primitives

Assisted-by: Codex:GPT-5 [Codex]

* feat(models): materialize pinned Hugging Face snapshots

Assisted-by: Codex:GPT-5 [Codex]

* feat(models): bind managed snapshots at runtime

Assisted-by: Codex:GPT-5 [Codex]

* feat(gallery): materialize model artifacts during install

Assisted-by: Codex:GPT-5 [Codex]

* feat(gallery): declare managed Hugging Face artifacts

Assisted-by: Codex:GPT-5 [Codex]

* feat(models): preload managed model artifacts

Assisted-by: Codex:GPT-5 [Codex]

* fix(gallery): retain shared artifact caches on delete

Assisted-by: Codex:GPT-5 [Codex]

* feat(models): report artifact acquisition progress

Assisted-by: Codex:GPT-5 [Codex]

* refactor(backends): load managed models from ModelFile

Assisted-by: Codex:GPT-5 [Codex]

* refactor(backends): load staged speech model snapshots

Assisted-by: Codex:GPT-5 [Codex]

* refactor(backends): use staged snapshots in engine backends

Assisted-by: Codex:GPT-5 [Codex]

* test(distributed): cover staged artifact snapshots

Assisted-by: Codex:GPT-5 [Codex]

* docs: explain managed model artifacts

Assisted-by: Codex:GPT-5 [Codex]

* docs: add product design context

Assisted-by: Codex:GPT-5 [Codex]

* feat(ui): show model artifact download progress

Assisted-by: Codex:GPT-5 [Codex]

* Eagerly materialize Hugging Face artifacts

Materialize HF-backed model references as managed GGUF artifacts during load, with lazy download retained only as fallback.

Assisted-by: Codex:GPT-5 [shell]

* Refactor HF
  downloads through a shared executor

Assisted-by: Codex:GPT-5 [shell]

* drop

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>
This commit is contained in:
LocalAI [bot]
2026-07-15 01:09:33 +02:00
committed by GitHub
parent d82c38ee77
commit bcc41219f7
83 changed files with 4315 additions and 339 deletions

View File

@@ -2424,6 +2424,12 @@
- torch_dtype:bf16
parameters:
model: lodestones/Chroma1-HD
artifacts:
- name: model
target: model
source:
type: huggingface
repo: lodestones/Chroma1-HD
step: 40
- name: nemotron-3-nano-omni-30b-a3b-reasoning-apex
url: github:mudler/LocalAI/gallery/virtual.yaml@master
@@ -2473,6 +2479,12 @@
temperature: 1
top_k: -1
top_p: 1
artifacts:
- name: model
target: model
source:
type: huggingface
repo: mudler/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-APEX-GGUF
template:
use_tokenizer_template: true
- name: carnice-v2-27b
@@ -3890,6 +3902,14 @@
- transcript
parameters:
model: nvidia/parakeet-tdt-0.6b-v3
artifacts:
- name: model
target: model
source:
type: huggingface
repo: nvidia/parakeet-tdt-0.6b-v3
allow_patterns:
- "*.nemo"
- name: voxtral-mini-4b-realtime
url: github:mudler/LocalAI/gallery/virtual.yaml@master
urls:
@@ -5080,6 +5100,12 @@
voice_cloning: true
parameters:
model: openbmb/VoxCPM1.5
artifacts:
- name: model
target: model
source:
type: huggingface
repo: openbmb/VoxCPM1.5
- name: neutts-air
url: github:mudler/LocalAI/gallery/virtual.yaml@master
urls:
@@ -5124,6 +5150,12 @@
- image
parameters:
model: Tongyi-MAI/Z-Image-Turbo
artifacts:
- name: model
target: model
source:
type: huggingface
repo: Tongyi-MAI/Z-Image-Turbo
- name: vllm-omni-wan2.2-t2v
url: github:mudler/LocalAI/gallery/virtual.yaml@master
urls:
@@ -5146,6 +5178,12 @@
- video
parameters:
model: Wan-AI/Wan2.2-T2V-A14B-Diffusers
artifacts:
- name: model
target: model
source:
type: huggingface
repo: Wan-AI/Wan2.2-T2V-A14B-Diffusers
- name: vllm-omni-wan2.2-i2v
url: github:mudler/LocalAI/gallery/virtual.yaml@master
urls:
@@ -5168,6 +5206,12 @@
- video
parameters:
model: Wan-AI/Wan2.2-I2V-A14B-Diffusers
artifacts:
- name: model
target: model
source:
type: huggingface
repo: Wan-AI/Wan2.2-I2V-A14B-Diffusers
- name: longcat-video
url: github:mudler/LocalAI/gallery/virtual.yaml@master
urls:
@@ -5273,6 +5317,12 @@
- tts
parameters:
model: Qwen/Qwen3-Omni-30B-A3B-Instruct
artifacts:
- name: model
target: model
source:
type: huggingface
repo: Qwen/Qwen3-Omni-30B-A3B-Instruct
- name: vllm-omni-qwen3-tts-custom-voice
url: github:mudler/LocalAI/gallery/virtual.yaml@master
urls:
@@ -5296,6 +5346,12 @@
- tts
parameters:
model: Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice
artifacts:
- name: model
target: model
source:
type: huggingface
repo: Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice
- name: ace-step-turbo
url: github:mudler/LocalAI/gallery/virtual.yaml@master
urls:
@@ -6027,6 +6083,12 @@
- torch_dtype:bf16
parameters:
model: Tongyi-MAI/Z-Image
artifacts:
- name: model
target: model
source:
type: huggingface
repo: Tongyi-MAI/Z-Image
step: 35
- name: z-image-turbo-diffusers
url: github:mudler/LocalAI/gallery/virtual.yaml@master
@@ -6052,6 +6114,12 @@
- torch_dtype:bf16
parameters:
model: Tongyi-MAI/Z-Image-Turbo
artifacts:
- name: model
target: model
source:
type: huggingface
repo: Tongyi-MAI/Z-Image-Turbo
step: 9
- name: glm-4.7-flash-derestricted
url: github:mudler/LocalAI/gallery/virtual.yaml@master
@@ -6110,6 +6178,12 @@
- tts
parameters:
model: Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice
artifacts:
- name: model
target: model
source:
type: huggingface
repo: Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice
tts:
voice: Aiden
- name: qwen3-tts-0.6b-custom-voice
@@ -6130,6 +6204,12 @@
- tts
parameters:
model: Qwen/Qwen3-TTS-12Hz-0.6B-CustomVoice
artifacts:
- name: model
target: model
source:
type: huggingface
repo: Qwen/Qwen3-TTS-12Hz-0.6B-CustomVoice
tts:
voice: Aiden
- name: fish-speech-s2-pro
@@ -6153,6 +6233,12 @@
voice_cloning: true
parameters:
model: fishaudio/s2-pro
artifacts:
- name: model
target: model
source:
type: huggingface
repo: fishaudio/s2-pro
- name: qwen3-asr-1.7b
url: github:mudler/LocalAI/gallery/virtual.yaml@master
urls:
@@ -6171,6 +6257,12 @@
- transcript
parameters:
model: Qwen/Qwen3-ASR-1.7B
artifacts:
- name: model
target: model
source:
type: huggingface
repo: Qwen/Qwen3-ASR-1.7B
- name: qwen3-asr-0.6b
url: github:mudler/LocalAI/gallery/virtual.yaml@master
urls:
@@ -6189,6 +6281,12 @@
- transcript
parameters:
model: Qwen/Qwen3-ASR-0.6B
artifacts:
- name: model
target: model
source:
type: huggingface
repo: Qwen/Qwen3-ASR-0.6B
- name: huihui-glm-4.7-flash-abliterated-i1
url: github:mudler/LocalAI/gallery/virtual.yaml@master
urls:
@@ -7635,6 +7733,12 @@
- transcript
parameters:
model: Qwen/Qwen3-ASR-0.6B
artifacts:
- name: model
target: model
source:
type: huggingface
repo: Qwen/Qwen3-ASR-0.6B
- name: qwen3-asr-1.7b
url: github:mudler/LocalAI/gallery/virtual.yaml@master
urls:
@@ -7653,6 +7757,12 @@
- transcript
parameters:
model: Qwen/Qwen3-ASR-1.7B
artifacts:
- name: model
target: model
source:
type: huggingface
repo: Qwen/Qwen3-ASR-1.7B
- name: glm-ocr
url: github:mudler/LocalAI/gallery/virtual.yaml@master
urls:
@@ -8830,6 +8940,12 @@
- torch_dtype:bf16
parameters:
model: Lightricks/LTX-2
artifacts:
- name: model
target: model
source:
type: huggingface
repo: Lightricks/LTX-2
- name: gpt-oss-20b
url: github:mudler/LocalAI/gallery/harmony.yaml@master
urls:
@@ -9078,6 +9194,12 @@
name: dia
parameters:
model: nari-labs/Dia-1.6B-0626
artifacts:
- name: model
target: model
source:
type: huggingface
repo: nari-labs/Dia-1.6B-0626
type: DiaForConditionalGeneration
- name: outetts
url: github:mudler/LocalAI/gallery/virtual.yaml@master
@@ -35853,6 +35975,12 @@
- torch_dtype:bf16
parameters:
model: Lightricks/LTX-2.3
artifacts:
- name: model
target: model
source:
type: huggingface
repo: Lightricks/LTX-2.3
- &ltx-2-3-dev-ggml
name: ltx-2.3-22b-dev-ggml
url: github:mudler/LocalAI/gallery/ltx-ggml.yaml@master

View File

@@ -31,6 +31,12 @@ config_file: |
- vad
parameters:
model: LiquidAI/LFM2.5-Audio-1.5B
artifacts:
- name: model
target: model
source:
type: huggingface
repo: LiquidAI/LFM2.5-Audio-1.5B
# Special tokens emitted in the text track during interleaved generation.
# Included so a future client-side parser can spot them; the LFM2 tool-call
# format itself is auto-detected by the upstream llama.cpp parser when the