Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
64 commits
Select commit Hold shift + click to select a range
d6d1989
feat(llama-cpp): route Score through the slot loop
richiejp Jul 13, 2026
c8a68d7
feat(realtime): classifier wire types and pipeline config
richiejp Jul 13, 2026
61d001b
feat(realtime): classifier response flow
richiejp Jul 13, 2026
3981207
fix(realtime): bound the VAD tick's scan window and buffer retention
richiejp Jul 13, 2026
73f6c41
fix(backend): let per-model threads override the global default
richiejp Jul 13, 2026
438c2c0
chore(gallery): single-thread the silero VAD
richiejp Jul 13, 2026
fe8fdec
docs(realtime): classifier mode, VAD scan window, threads precedence
richiejp Jul 13, 2026
47120fa
chore: ratchet coverage baseline to 52.8
richiejp Jul 13, 2026
848a768
perf(llama-cpp): score all candidates in one batched decode
richiejp Jul 13, 2026
f1d8a51
fix(realtime): gate scoring capacity by model usecase
richiejp Jul 15, 2026
5bad2a3
Rename voxtral.c to voxtral-tts.c in README
mudler Jul 11, 2026
26fa1f9
chore: :arrow_up: Update vllm-project/vllm cu130 wheel to `0.25.0` (#…
localai-bot Jul 11, 2026
a816480
fix(ds4): bundle transitive runtime dependencies (#10783)
hogeheer499-commits Jul 11, 2026
2e75539
chore(model-gallery): :arrow_up: update checksum (#10789)
localai-bot Jul 11, 2026
c01327d
chore: :arrow_up: Update leejet/stable-diffusion.cpp to `b5d812008eb7…
localai-bot Jul 12, 2026
12e627a
chore: :arrow_up: Update ggml-org/whisper.cpp to `080bbbe85230f624f0b…
localai-bot Jul 12, 2026
6288938
chore: :arrow_up: Update ggml-org/llama.cpp to `e3546c7948e3af463d0b4…
localai-bot Jul 12, 2026
2160254
feat(gallery): add Qwen DFlash speculative-decoding models (#10791)
localai-bot Jul 12, 2026
fdf7964
chore: :arrow_up: Update ServeurpersoCom/omnivoice.cpp to `bfc447c47a…
localai-bot Jul 12, 2026
d8e2e99
chore: :arrow_up: Update CrispStrobe/CrispASR to `4beda42f63bf5c813c1…
localai-bot Jul 12, 2026
8ac4e4a
feat(backends): add LongCat video and avatar generation (#10792)
localai-bot Jul 12, 2026
2ec8a18
chore: :arrow_up: Update ServeurpersoCom/qwentts.cpp to `d17c33d4ee2f…
localai-bot Jul 12, 2026
ad7bb0c
chore(model-gallery): :arrow_up: update checksum (#10798)
localai-bot Jul 12, 2026
d4a4531
chore: :arrow_up: Update vllm-metal (darwin) to `v0.3.0.dev2026071122…
localai-bot Jul 12, 2026
e10c321
chore: :arrow_up: Update CrispStrobe/CrispASR to `841281c46ce5b34323b…
localai-bot Jul 12, 2026
a2fba95
chore: :arrow_up: Update ggml-org/llama.cpp to `6b4dc2116a92c5c8f2782…
localai-bot Jul 13, 2026
f1d8b01
[voice] feat: add managed voice cloning profiles (#10799)
localai-bot Jul 13, 2026
23c401d
feat(react-ui): localize MediaHistory, AudioTransform, and Sound comp…
dedyf5 Jul 13, 2026
9bf8c77
chore(deps): bump vllm from 0.24.0 to 0.25.0 in /backend/python/vllm …
dependabot[bot] Jul 13, 2026
c69af58
chore(deps): bump grpcio from 1.81.1 to 1.82.1 in /backend/python/vll…
dependabot[bot] Jul 13, 2026
778dd78
chore(deps): update charset-normalizer requirement from >=3.4.7 to >=…
dependabot[bot] Jul 13, 2026
b643fd4
chore(deps): bump actions/stale from 10.3.0 to 10.4.0 (#10807)
dependabot[bot] Jul 13, 2026
9ba7f98
chore: :arrow_up: Update vllm-metal (darwin) to `v0.3.0.dev2026071310…
localai-bot Jul 14, 2026
9237c1e
chore: :arrow_up: Update CrispStrobe/CrispASR to `d76cce027e3b183fc3d…
localai-bot Jul 14, 2026
63b3dc5
chore: :arrow_up: Update ServeurpersoCom/omnivoice.cpp to `bbdf4be03a…
localai-bot Jul 14, 2026
76a9e21
fix: preserve uploaded file content when regenerating a non-last answ…
ajuijas Jul 14, 2026
bf0ad0f
chore(model-gallery): :arrow_up: update checksum (#10816)
localai-bot Jul 14, 2026
ffc991f
fix(config): only inject llama.cpp serving options on the llama.cpp p…
localai-bot Jul 14, 2026
d90b8c1
fix(kokoro): pin compatible Intel XPU runtime (#10823)
localai-bot Jul 14, 2026
7d2f566
chore: :arrow_up: Update vllm-project/vllm cu130 wheel to `0.25.1` (#…
localai-bot Jul 14, 2026
03618f1
docs: :arrow_up: update docs version mudler/LocalAI (#10826)
localai-bot Jul 14, 2026
40eec0c
chore(model-gallery): :arrow_up: update checksum (#10831)
localai-bot Jul 14, 2026
10733b5
chore: :arrow_up: Update CrispStrobe/CrispASR to `40d508096bb52850862…
localai-bot Jul 14, 2026
9506255
chore: :arrow_up: Update leejet/stable-diffusion.cpp to `a8a91b24cdf1…
localai-bot Jul 14, 2026
6a6bdd6
feat: materialize Hugging Face model artifacts (#10825)
localai-bot Jul 14, 2026
8c70f9c
chore: :arrow_up: Update ServeurpersoCom/omnivoice.cpp to `98a5d5fb43…
localai-bot Jul 14, 2026
b326678
chore: :arrow_up: Update ServeurpersoCom/qwentts.cpp to `7bb91886f613…
localai-bot Jul 15, 2026
3fccaa7
fix(distributed): make per-node backend upgrade actually upgrade (#10…
localai-bot Jul 15, 2026
6dcb1d5
feat(vram): per-node VRAM allocation budget (LOCALAI_VRAM_BUDGET) (#1…
localai-bot Jul 15, 2026
9772b34
chore: :arrow_up: Update ggml-org/llama.cpp to `00fa7cb284cbf133fc426…
localai-bot Jul 15, 2026
e7c0c93
feat(gallery): add Qwen3.5-4B DFlash speculative-decoding model (#10842)
localai-bot Jul 15, 2026
a712994
fix(cloud-proxy): publish backend gallery entries (#10858)
richiejp Jul 16, 2026
160e95e
chore: :arrow_up: Update ServeurpersoCom/omnivoice.cpp to `11c67198db…
localai-bot Jul 16, 2026
bf184ed
chore: :arrow_up: Update ggml-org/llama.cpp to `505b1ed15ca80e2a19f12…
localai-bot Jul 16, 2026
0878c7d
chore(model-gallery): :arrow_up: update checksum (#10854)
localai-bot Jul 16, 2026
78f8ee7
fix(runtime-settings): apply persisted threads/context_size/f16 at st…
Anai-Guo Jul 16, 2026
be3d263
feat(swagger): update swagger (#10847)
localai-bot Jul 16, 2026
c7b383c
fix(backend): don't crash the whole process on an invalid cutstrings/…
Anai-Guo Jul 16, 2026
39cdae3
chore: :arrow_up: Update ikawrakow/ik_llama.cpp to `1fddd12ba861c4815…
localai-bot Jul 16, 2026
61df6c8
fix(ci): honor APT mirrors in the prebuilt llama-cpp compile step
richiejp Jul 15, 2026
699a70e
feat(realtime): classifier argument slots via constrained completion
richiejp Jul 15, 2026
7450bbe
chore: ratchet coverage baseline to 52.9
richiejp Jul 15, 2026
c6934c5
feat(realtime): splice filled slot values into classifier replies
richiejp Jul 16, 2026
3fff59e
fix(realtime): harden classifier slot completion
richiejp Jul 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .docker/llama-cpp-compile.sh
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,10 @@ if [ -z "${BUILD_TYPE:-}" ]; then
# variants with it (the host never *selects* SME unless it has it, but every variant must
# still compile).
if [ "${TARGETARCH}" = "arm64" ]; then
# The prebuilt base inherits default ports.ubuntu.com sources; honor the
# APT_*_MIRROR build args here like the from-source path does, so this
# apt step survives a mirror outage.
sh /LocalAI/.docker/apt-mirror.sh || true
apt-get update -qq && apt-get install -y -qq gcc-14 g++-14
export CC=gcc-14 CXX=g++-14
fi
Expand Down
73 changes: 72 additions & 1 deletion .github/backend-matrix.yml
Original file line number Diff line number Diff line change
Expand Up @@ -478,6 +478,19 @@ include:
dockerfile: "./backend/Dockerfile.python"
context: "./"
ubuntu-version: '2404'
- build-type: 'cublas'
cuda-major-version: "12"
cuda-minor-version: "8"
platforms: 'linux/amd64'
tag-latest: 'auto'
tag-suffix: '-gpu-nvidia-cuda-12-longcat-video'
runs-on: 'ubuntu-latest'
base-image: "ubuntu:24.04"
skip-drivers: 'false'
backend: "longcat-video"
dockerfile: "./backend/Dockerfile.python"
context: "./"
ubuntu-version: '2404'
- build-type: 'cublas'
cuda-major-version: "12"
cuda-minor-version: "8"
Expand Down Expand Up @@ -1149,6 +1162,19 @@ include:
dockerfile: "./backend/Dockerfile.python"
context: "./"
ubuntu-version: '2404'
- build-type: 'cublas'
cuda-major-version: "13"
cuda-minor-version: "0"
platforms: 'linux/amd64'
tag-latest: 'auto'
tag-suffix: '-gpu-nvidia-cuda-13-longcat-video'
runs-on: 'ubuntu-latest'
base-image: "ubuntu:24.04"
skip-drivers: 'false'
backend: "longcat-video"
dockerfile: "./backend/Dockerfile.python"
context: "./"
ubuntu-version: '2404'
- build-type: 'cublas'
cuda-major-version: "13"
cuda-minor-version: "0"
Expand Down Expand Up @@ -1357,6 +1383,19 @@ include:
backend: "vllm-omni"
dockerfile: "./backend/Dockerfile.python"
context: "./"
- build-type: 'l4t'
cuda-major-version: "13"
cuda-minor-version: "0"
platforms: 'linux/arm64'
tag-latest: 'auto'
tag-suffix: '-nvidia-l4t-cuda-13-arm64-longcat-video'
runs-on: 'ubuntu-24.04-arm'
base-image: "ubuntu:24.04"
skip-drivers: 'false'
ubuntu-version: '2404'
backend: "longcat-video"
dockerfile: "./backend/Dockerfile.python"
context: "./"
- build-type: 'l4t'
cuda-major-version: "13"
cuda-minor-version: "0"
Expand Down Expand Up @@ -4800,7 +4839,6 @@ include:
dockerfile: "./backend/Dockerfile.golang"
context: "./"
ubuntu-version: '2404'
# rfdetr
- build-type: ''
cuda-major-version: ""
cuda-minor-version: ""
Expand All @@ -4815,6 +4853,35 @@ include:
dockerfile: "./backend/Dockerfile.golang"
context: "./"
ubuntu-version: '2404'
# cloud-proxy
- build-type: ''
cuda-major-version: ""
cuda-minor-version: ""
platforms: 'linux/amd64'
platform-tag: 'amd64'
tag-latest: 'auto'
tag-suffix: '-cpu-cloud-proxy'
runs-on: 'ubuntu-latest'
base-image: "ubuntu:24.04"
skip-drivers: 'false'
backend: "cloud-proxy"
dockerfile: "./backend/Dockerfile.golang"
context: "./"
ubuntu-version: '2404'
- build-type: ''
cuda-major-version: ""
cuda-minor-version: ""
platforms: 'linux/arm64'
platform-tag: 'arm64'
tag-latest: 'auto'
tag-suffix: '-cpu-cloud-proxy'
runs-on: 'ubuntu-24.04-arm'
base-image: "ubuntu:24.04"
skip-drivers: 'false'
backend: "cloud-proxy"
dockerfile: "./backend/Dockerfile.golang"
context: "./"
ubuntu-version: '2404'
# rfdetr
- build-type: ''
cuda-major-version: ""
Expand Down Expand Up @@ -5517,6 +5584,10 @@ includeDarwin:
tag-suffix: "-metal-darwin-arm64-local-store"
build-type: "metal"
lang: "go"
- backend: "cloud-proxy"
tag-suffix: "-metal-darwin-arm64-cloud-proxy"
build-type: "metal"
lang: "go"
- backend: "llama-cpp-quantization"
tag-suffix: "-metal-darwin-arm64-llama-cpp-quantization"
build-type: "mps"
Expand Down
4 changes: 4 additions & 0 deletions .github/workflows/bump_deps.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,10 @@ jobs:
variable: "DS4_VERSION"
branch: "main"
file: "backend/cpp/ds4/Makefile"
- repository: "meituan-longcat/LongCat-Video"
variable: "LONGCAT_VIDEO_VERSION"
branch: "main"
file: "backend/python/longcat-video/Makefile"
- repository: "localai-org/privacy-filter.cpp"
variable: "PRIVACY_FILTER_VERSION"
branch: "master"
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/stalebot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ jobs:
if: github.repository == 'mudler/LocalAI'
runs-on: ubuntu-latest
steps:
- uses: actions/stale@eb5cf3af3ac0a1aa4c9c45633dd1ae542a27a899 # v9
- uses: actions/stale@1e223db275d687790206a7acac4d1a11bd6fe629 # v9
with:
stale-issue-message: 'This issue is stale because it has been open 90 days with no activity. Remove stale label or comment or this will be closed in 5 days.'
stale-pr-message: 'This PR is stale because it has been open 90 days with no activity. Remove stale label or comment or this will be closed in 10 days.'
Expand Down
6 changes: 6 additions & 0 deletions .impeccable/live/config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"files": ["core/http/react-ui/index.html"],
"insertBefore": "</body>",
"commentSyntax": "html",
"cspChecked": true
}
8 changes: 6 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Disable parallel execution for backend builds
.NOTPARALLEL: backends/diffusers backends/llama-cpp backends/turboquant backends/outetts backends/piper backends/stablediffusion-ggml backends/whisper backends/crispasr backends/parakeet-cpp backends/moss-transcribe-cpp backends/faster-whisper backends/silero-vad backends/local-store backends/huggingface backends/rfdetr backends/rfdetr-cpp backends/insightface backends/speaker-recognition backends/kitten-tts backends/kokoro backends/chatterbox backends/llama-cpp-darwin backends/neutts build-darwin-python-backend build-darwin-go-backend backends/mlx backends/diffuser-darwin backends/mlx-vlm backends/mlx-audio backends/mlx-distributed backends/stablediffusion-ggml-darwin backends/vllm backends/vllm-omni backends/sglang backends/moonshine backends/pocket-tts backends/qwen-tts backends/faster-qwen3-tts backends/qwen-asr backends/nemo backends/voxcpm backends/whisperx backends/ace-step backends/acestep-cpp backends/fish-speech backends/voxtral backends/opus backends/trl backends/llama-cpp-quantization backends/kokoros backends/sam3-cpp backends/qwen3-tts-cpp backends/omnivoice-cpp backends/vibevoice-cpp backends/localvqe backends/tinygrad backends/sherpa-onnx backends/ds4 backends/ds4-darwin backends/liquid-audio backends/supertonic backends/depth-anything-cpp backends/privacy-filter backends/privacy-filter-darwin
.NOTPARALLEL: backends/diffusers backends/llama-cpp backends/turboquant backends/outetts backends/piper backends/stablediffusion-ggml backends/whisper backends/crispasr backends/parakeet-cpp backends/moss-transcribe-cpp backends/faster-whisper backends/silero-vad backends/local-store backends/cloud-proxy backends/huggingface backends/rfdetr backends/rfdetr-cpp backends/insightface backends/speaker-recognition backends/kitten-tts backends/kokoro backends/chatterbox backends/llama-cpp-darwin backends/neutts build-darwin-python-backend build-darwin-go-backend backends/mlx backends/diffuser-darwin backends/mlx-vlm backends/mlx-audio backends/mlx-distributed backends/stablediffusion-ggml-darwin backends/vllm backends/vllm-omni backends/longcat-video backends/sglang backends/moonshine backends/pocket-tts backends/qwen-tts backends/faster-qwen3-tts backends/qwen-asr backends/nemo backends/voxcpm backends/whisperx backends/ace-step backends/acestep-cpp backends/fish-speech backends/voxtral backends/opus backends/trl backends/llama-cpp-quantization backends/kokoros backends/sam3-cpp backends/qwen3-tts-cpp backends/omnivoice-cpp backends/vibevoice-cpp backends/localvqe backends/tinygrad backends/sherpa-onnx backends/ds4 backends/ds4-darwin backends/liquid-audio backends/supertonic backends/depth-anything-cpp backends/privacy-filter backends/privacy-filter-darwin

GOCMD=go
GOTEST=$(GOCMD) test
Expand Down Expand Up @@ -565,6 +565,7 @@ prepare-test-extra: protogen-python
$(MAKE) -C backend/python/chatterbox
$(MAKE) -C backend/python/vllm
$(MAKE) -C backend/python/vllm-omni
$(MAKE) -C backend/python/longcat-video
$(MAKE) -C backend/python/sglang
$(MAKE) -C backend/python/vibevoice
$(MAKE) -C backend/python/liquid-audio
Expand Down Expand Up @@ -594,6 +595,7 @@ test-extra: prepare-test-extra
$(MAKE) -C backend/python/chatterbox test
$(MAKE) -C backend/python/vllm test
$(MAKE) -C backend/python/vllm-omni test
$(MAKE) -C backend/python/longcat-video test
$(MAKE) -C backend/python/vibevoice test
$(MAKE) -C backend/python/liquid-audio test
$(MAKE) -C backend/python/moonshine test
Expand Down Expand Up @@ -1254,6 +1256,7 @@ BACKEND_NEUTTS = neutts|python|.|false|true
BACKEND_KOKORO = kokoro|python|.|false|true
BACKEND_VLLM = vllm|python|.|false|true
BACKEND_VLLM_OMNI = vllm-omni|python|.|false|true
BACKEND_LONGCAT_VIDEO = longcat-video|python|.|--progress=plain|true
BACKEND_SGLANG = sglang|python|.|false|true
BACKEND_DIFFUSERS = diffusers|python|.|--progress=plain|true
BACKEND_CHATTERBOX = chatterbox|python|.|false|true
Expand Down Expand Up @@ -1339,6 +1342,7 @@ $(eval $(call generate-docker-build-target,$(BACKEND_NEUTTS)))
$(eval $(call generate-docker-build-target,$(BACKEND_KOKORO)))
$(eval $(call generate-docker-build-target,$(BACKEND_VLLM)))
$(eval $(call generate-docker-build-target,$(BACKEND_VLLM_OMNI)))
$(eval $(call generate-docker-build-target,$(BACKEND_LONGCAT_VIDEO)))
$(eval $(call generate-docker-build-target,$(BACKEND_SGLANG)))
$(eval $(call generate-docker-build-target,$(BACKEND_DIFFUSERS)))
$(eval $(call generate-docker-build-target,$(BACKEND_CHATTERBOX)))
Expand Down Expand Up @@ -1375,7 +1379,7 @@ $(eval $(call generate-docker-build-target,$(BACKEND_SUPERTONIC)))
docker-save-%: backend-images
docker save local-ai-backend:$* -o backend-images/$*.tar

docker-build-backends: docker-build-llama-cpp docker-build-ik-llama-cpp docker-build-turboquant docker-build-ds4 docker-build-rerankers docker-build-vllm docker-build-vllm-omni docker-build-sglang docker-build-transformers docker-build-outetts docker-build-diffusers docker-build-kokoro docker-build-faster-whisper docker-build-crispasr docker-build-coqui docker-build-chatterbox docker-build-vibevoice docker-build-liquid-audio docker-build-moonshine docker-build-pocket-tts docker-build-qwen-tts docker-build-fish-speech docker-build-faster-qwen3-tts docker-build-qwen-asr docker-build-nemo docker-build-voxcpm docker-build-whisperx docker-build-ace-step docker-build-acestep-cpp docker-build-voxtral docker-build-mlx-distributed docker-build-trl docker-build-llama-cpp-quantization docker-build-tinygrad docker-build-kokoros docker-build-sam3-cpp docker-build-rfdetr-cpp docker-build-qwen3-tts-cpp docker-build-omnivoice-cpp docker-build-vibevoice-cpp docker-build-localvqe docker-build-insightface docker-build-speaker-recognition docker-build-sherpa-onnx docker-build-cloud-proxy docker-build-supertonic docker-build-depth-anything-cpp docker-build-moss-transcribe-cpp docker-build-privacy-filter
docker-build-backends: docker-build-llama-cpp docker-build-ik-llama-cpp docker-build-turboquant docker-build-ds4 docker-build-rerankers docker-build-vllm docker-build-vllm-omni docker-build-longcat-video docker-build-sglang docker-build-transformers docker-build-outetts docker-build-diffusers docker-build-kokoro docker-build-faster-whisper docker-build-crispasr docker-build-coqui docker-build-chatterbox docker-build-vibevoice docker-build-liquid-audio docker-build-moonshine docker-build-pocket-tts docker-build-qwen-tts docker-build-fish-speech docker-build-faster-qwen3-tts docker-build-qwen-asr docker-build-nemo docker-build-voxcpm docker-build-whisperx docker-build-ace-step docker-build-acestep-cpp docker-build-voxtral docker-build-mlx-distributed docker-build-trl docker-build-llama-cpp-quantization docker-build-tinygrad docker-build-kokoros docker-build-sam3-cpp docker-build-rfdetr-cpp docker-build-qwen3-tts-cpp docker-build-omnivoice-cpp docker-build-vibevoice-cpp docker-build-localvqe docker-build-insightface docker-build-speaker-recognition docker-build-sherpa-onnx docker-build-cloud-proxy docker-build-supertonic docker-build-depth-anything-cpp docker-build-moss-transcribe-cpp docker-build-privacy-filter

########################################################
### Mock Backend for E2E Tests
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -235,7 +235,7 @@ Most backends wrap a best-in-class upstream engine. A handful of them are native
| [moss-transcribe.cpp](https://github.com/mudler/moss-transcribe.cpp) | C++/GGML port of OpenMOSS MOSS-Transcribe-Diarize: joint long-form transcription, speaker diarization and timestamping in a single pass |
| [ced.cpp](https://github.com/mudler/ced.cpp) | C++/GGML port of the CED audio-tagging models: sound-event classification (527-class AudioSet) over REST and the realtime API for live recognition |
| [voice-detect.cpp](https://github.com/mudler/voice-detect.cpp) | Speaker recognition and voice analysis (ECAPA-TDNN, WeSpeaker, ERes2Net, CAM++, wav2vec2 age/gender/emotion), replacing the Python speaker-recognition backend |
| [voxtral.c](https://github.com/mudler/voxtral.c) | Voxtral Realtime 4B speech-to-text in pure C |
| [voxtral-tts.c](https://github.com/mudler/voxtral-tts.c) | Voxtral Realtime 4B speech-to-text in pure C |
| [vibevoice.cpp](https://github.com/mudler/vibevoice.cpp) | Native port of Microsoft VibeVoice for TTS (voice cloning) and long-form ASR with speaker diarization |
| [rf-detr.cpp](https://github.com/mudler/rf-detr.cpp) | Native RF-DETR object detection and instance segmentation |
| [locate-anything.cpp](https://github.com/mudler/locate-anything.cpp) | Open-vocabulary object detection and visual grounding (LocateAnything-3B) |
Expand Down
4 changes: 4 additions & 0 deletions backend/Dockerfile.llama-cpp
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,10 @@ RUN make -BC /LocalAI/backend/cpp/llama-cpp package
# ============================================================================
FROM ${BUILDER_BASE_IMAGE} AS builder-prebuilt

ARG APT_MIRROR
ENV APT_MIRROR=${APT_MIRROR}
ARG APT_PORTS_MIRROR
ENV APT_PORTS_MIRROR=${APT_PORTS_MIRROR}
ARG BUILD_TYPE
ENV BUILD_TYPE=${BUILD_TYPE}
ARG CUDA_DOCKER_ARCH
Expand Down
1 change: 1 addition & 0 deletions backend/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ The backend system provides language-specific Dockerfiles that handle the build
- **vllm**: High-performance LLM inference
- **mlx**: Apple Silicon optimization
- **diffusers**: Stable Diffusion models
- **longcat-video**: CUDA text/image-to-video and speech-driven avatar generation
- **Audio**: coqui, faster-whisper, kitten-tts
- **Vision**: mlx-vlm, rfdetr
- **Specialized**: rerankers, chatterbox, kokoro
Expand Down
10 changes: 9 additions & 1 deletion backend/backend.proto
Original file line number Diff line number Diff line change
Expand Up @@ -448,6 +448,11 @@ message ModelOptions {
// Proxy carries the cloud-proxy backend's per-model configuration.
// Empty for non-proxy backends.
ProxyOptions Proxy = 74;

// EnableScore reserves backend resources for the Score RPC. It is derived
// from the model's explicit `known_usecases: [score]` declaration so models
// that never score retain their ordinary serving footprint.
bool EnableScore = 75;
}

// ProxyOptions configures the cloud-proxy backend. UpstreamURL and
Expand Down Expand Up @@ -577,6 +582,10 @@ message GenerateVideoRequest {
float cfg_scale = 10; // Classifier-free guidance scale
int32 step = 11; // Number of inference steps
string dst = 12; // Output path for the generated video
string audio = 13; // Path to staged audio for audio-conditioned video
// Backend-specific per-request generation parameters. Values are strings
// and are validated/coerced by the selected backend.
map<string, string> params = 14;
}

message TTSRequest {
Expand Down Expand Up @@ -1256,4 +1265,3 @@ message ForwardReply {
repeated ForwardHeader headers = 2;
bytes body_chunk = 3;
}

59 changes: 45 additions & 14 deletions backend/cpp/ds4/package.sh
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
#!/bin/bash
set -e
set -euo pipefail
CURDIR=$(dirname "$(realpath "$0")")
REPO_ROOT="${CURDIR}/../../.."
PACKAGE_DIR="$CURDIR/package"

mkdir -p "$CURDIR/package/lib"
cp -avf "$CURDIR/grpc-server" "$CURDIR/package/"
cp -avf "$CURDIR/ds4-worker" "$CURDIR/package/"
cp -rfv "$CURDIR/run.sh" "$CURDIR/package/"
rm -rf "$PACKAGE_DIR"
mkdir -p "$PACKAGE_DIR/lib"
cp -avf "$CURDIR/grpc-server" "$PACKAGE_DIR/"
cp -avf "$CURDIR/ds4-worker" "$PACKAGE_DIR/"
cp -rfv "$CURDIR/run.sh" "$PACKAGE_DIR/"

UNAME_S=$(uname -s)
if [ "$UNAME_S" = "Darwin" ]; then
Expand All @@ -16,25 +18,54 @@ if [ "$UNAME_S" = "Darwin" ]; then
fi

if [ -f "/lib64/ld-linux-x86-64.so.2" ]; then
cp -arfLv /lib64/ld-linux-x86-64.so.2 "$CURDIR/package/lib/ld.so"
LIBDIR=/lib/x86_64-linux-gnu
cp -arfLv /lib64/ld-linux-x86-64.so.2 "$PACKAGE_DIR/lib/ld.so"
elif [ -f "/lib/ld-linux-aarch64.so.1" ]; then
cp -arfLv /lib/ld-linux-aarch64.so.1 "$CURDIR/package/lib/ld.so"
LIBDIR=/lib/aarch64-linux-gnu
cp -arfLv /lib/ld-linux-aarch64.so.1 "$PACKAGE_DIR/lib/ld.so"
else
echo "package.sh: unknown architecture" >&2; exit 1
fi

for lib in libc.so.6 libgcc_s.so.1 libstdc++.so.6 libm.so.6 libgomp.so.1 \
libdl.so.2 librt.so.1 libpthread.so.0; do
cp -arfLv "$LIBDIR/$lib" "$CURDIR/package/lib/$lib"
# Bundle the complete dependency closure for both executables. In particular,
# grpc-server links the distro gRPC/protobuf/absl stack; copying only the core
# C/C++ runtime libraries leaves the scratch image unable to start.
{
ldd "$CURDIR/grpc-server"
ldd "$CURDIR/ds4-worker"
} | awk '$2 == "=>" && $3 ~ /^\// { print $3 }' | sort -u | \
while read -r so; do
cp -arfLv "$so" "$PACKAGE_DIR/lib/"
done

GPU_LIB_SCRIPT="${REPO_ROOT}/scripts/build/package-gpu-libs.sh"
if [ -f "$GPU_LIB_SCRIPT" ]; then
source "$GPU_LIB_SCRIPT" "$CURDIR/package/lib"
# shellcheck source=/dev/null
source "$GPU_LIB_SCRIPT" "$PACKAGE_DIR/lib"
package_gpu_libs
fi

# Resolve every dependency through the same loader and library path used by
# the from-scratch image. The loader can still search host defaults, so reject
# any absolute dependency path that escapes the package instead of accepting a
# false-positive validation against a library that scratch will not contain.
validate_packaged_binary() {
local binary="$1"
local resolution
resolution=$("$PACKAGE_DIR/lib/ld.so" \
--library-path "$PACKAGE_DIR/lib" \
--list "$PACKAGE_DIR/$binary")

printf '%s\n' "$resolution" | awk -v prefix="$PACKAGE_DIR/lib/" '
$2 == "=>" && $3 ~ /^\// && index($3, prefix) != 1 {
print "package.sh: dependency resolved outside package: " $0 > "/dev/stderr"
invalid = 1
}
END { exit invalid }
'
}

for binary in grpc-server ds4-worker; do
validate_packaged_binary "$binary"
done

echo "ds4 package contents:"
ls -lah "$CURDIR/package/" "$CURDIR/package/lib/"
ls -lah "$PACKAGE_DIR/" "$PACKAGE_DIR/lib/"
2 changes: 1 addition & 1 deletion backend/cpp/ik-llama-cpp/Makefile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@

IK_LLAMA_VERSION?=6198a356a85ed71534c02a9c1026203389f341e5
IK_LLAMA_VERSION?=1fddd12ba861c4815a8633f14d9c5670692099cc
LLAMA_REPO?=https://github.com/ikawrakow/ik_llama.cpp

CMAKE_ARGS?=
Expand Down
2 changes: 1 addition & 1 deletion backend/cpp/llama-cpp/Makefile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@

LLAMA_VERSION?=4f37f519722aa3242eecb7649466b4a4a2d6d6da
LLAMA_VERSION?=505b1ed15ca80e2a19f12ff4ac365e40fb374053
LLAMA_REPO?=https://github.com/ggerganov/llama.cpp

CMAKE_ARGS?=
Expand Down
Loading