Skip to content

Commit d1a9d59

Browse files
localai-botmudler
andauthored
feat(backends): darwin/Metal builds for vision C++/ggml backends (depth-anything, locate-anything, rfdetr-cpp, sam3-cpp) (#10511)
feat(backends): darwin/Metal builds for the vision C++/ggml backends depth-anything-cpp, locate-anything-cpp, rfdetr-cpp and sam3-cpp already carry a Darwin/Metal path in their Makefiles (GGML_METAL=ON when build-type=metal), but were never wired into CI, so no Metal image was published and Apple Silicon could not install them. - .github/backend-matrix.yml: add the four to includeDarwin (build-type metal, lang go), matching the other go+ggml *-cpp Metal entries. - backend/index.yaml: add metal: to each backend's capabilities map (main and -development) plus concrete metal-<backend>(-development) entries pointing at the latest/master -metal-darwin-arm64-<backend> images. - backend/go/*/Makefile: a one-line note on the existing Darwin branch (also the per-backend change the CI path filter needs to actually build them here). Assisted-by: Claude:opus-4.8 [Claude Code] Signed-off-by: Ettore Di Giacinto <mudler@localai.io> Co-authored-by: Ettore Di Giacinto <mudler@localai.io>
1 parent f72046b commit d1a9d59

6 files changed

Lines changed: 75 additions & 0 deletions

File tree

.github/backend-matrix.yml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4922,6 +4922,25 @@ includeDarwin:
49224922
tag-suffix: "-metal-darwin-arm64-vibevoice-cpp"
49234923
build-type: "metal"
49244924
lang: "go"
4925+
# Vision/utility C++/ggml backends (go+cgo). Their Makefiles already carry a
4926+
# Darwin/Metal path (GGML_METAL=ON when build-type=metal); this just builds and
4927+
# publishes the metal image so Apple Silicon can install them.
4928+
- backend: "depth-anything-cpp"
4929+
tag-suffix: "-metal-darwin-arm64-depth-anything-cpp"
4930+
build-type: "metal"
4931+
lang: "go"
4932+
- backend: "locate-anything-cpp"
4933+
tag-suffix: "-metal-darwin-arm64-locate-anything-cpp"
4934+
build-type: "metal"
4935+
lang: "go"
4936+
- backend: "rfdetr-cpp"
4937+
tag-suffix: "-metal-darwin-arm64-rfdetr-cpp"
4938+
build-type: "metal"
4939+
lang: "go"
4940+
- backend: "sam3-cpp"
4941+
tag-suffix: "-metal-darwin-arm64-sam3-cpp"
4942+
build-type: "metal"
4943+
lang: "go"
49254944
- backend: "voxtral"
49264945
tag-suffix: "-metal-darwin-arm64-voxtral"
49274946
build-type: "metal"

backend/go/depth-anything-cpp/Makefile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ else ifeq ($(BUILD_TYPE),hipblas)
4040
else ifeq ($(BUILD_TYPE),vulkan)
4141
CMAKE_ARGS+=-DGGML_VULKAN=ON -DDA_GGML_VULKAN=ON
4242
else ifeq ($(OS),Darwin)
43+
# macOS/Metal: built + published as an OCI image by CI (includeDarwin in
44+
# .github/backend-matrix.yml) so Apple Silicon users can install this backend.
4345
ifneq ($(BUILD_TYPE),metal)
4446
CMAKE_ARGS+=-DGGML_METAL=OFF
4547
else

backend/go/locate-anything-cpp/Makefile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ else ifeq ($(BUILD_TYPE),hipblas)
3333
else ifeq ($(BUILD_TYPE),vulkan)
3434
CMAKE_ARGS+=-DGGML_VULKAN=ON -DLA_GGML_VULKAN=ON
3535
else ifeq ($(OS),Darwin)
36+
# macOS/Metal: built + published as an OCI image by CI (includeDarwin in
37+
# .github/backend-matrix.yml) so Apple Silicon users can install this backend.
3638
ifneq ($(BUILD_TYPE),metal)
3739
CMAKE_ARGS+=-DGGML_METAL=OFF
3840
else

backend/go/rfdetr-cpp/Makefile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ else ifeq ($(BUILD_TYPE),hipblas)
3434
else ifeq ($(BUILD_TYPE),vulkan)
3535
CMAKE_ARGS+=-DGGML_VULKAN=ON -DRFDETR_GGML_VULKAN=ON
3636
else ifeq ($(OS),Darwin)
37+
# macOS/Metal: built + published as an OCI image by CI (includeDarwin in
38+
# .github/backend-matrix.yml) so Apple Silicon users can install this backend.
3739
ifneq ($(BUILD_TYPE),metal)
3840
CMAKE_ARGS+=-DGGML_METAL=OFF
3941
else

backend/go/sam3-cpp/Makefile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ else ifeq ($(BUILD_TYPE),hipblas)
3131
else ifeq ($(BUILD_TYPE),vulkan)
3232
CMAKE_ARGS+=-DGGML_VULKAN=ON
3333
else ifeq ($(OS),Darwin)
34+
# macOS/Metal: built + published as an OCI image by CI (includeDarwin in
35+
# .github/backend-matrix.yml) so Apple Silicon users can install this backend.
3436
ifneq ($(BUILD_TYPE),metal)
3537
CMAKE_ARGS+=-DGGML_METAL=OFF
3638
else

backend/index.yaml

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -340,6 +340,7 @@
340340
nvidia-l4t-cuda-13: "cuda13-nvidia-l4t-arm64-sam3-cpp"
341341
intel: "intel-sycl-f32-sam3-cpp"
342342
vulkan: "vulkan-sam3-cpp"
343+
metal: "metal-sam3-cpp"
343344
- &rfdetrcpp
344345
name: "rfdetr-cpp"
345346
alias: "rfdetr-cpp"
@@ -368,6 +369,7 @@
368369
nvidia-l4t-cuda-13: "cuda13-nvidia-l4t-arm64-rfdetr-cpp"
369370
intel: "intel-sycl-f32-rfdetr-cpp"
370371
vulkan: "vulkan-rfdetr-cpp"
372+
metal: "metal-rfdetr-cpp"
371373
- &locateanything
372374
name: "locate-anything"
373375
alias: "locate-anything"
@@ -397,6 +399,7 @@
397399
nvidia-l4t-cuda-13: "cuda13-nvidia-l4t-arm64-locate-anything-cpp"
398400
intel: "intel-sycl-f32-locate-anything-cpp"
399401
vulkan: "vulkan-locate-anything-cpp"
402+
metal: "metal-locate-anything-cpp"
400403
- !!merge <<: *locateanything
401404
name: "locate-anything-development"
402405
capabilities:
@@ -409,6 +412,7 @@
409412
nvidia-l4t-cuda-13: "cuda13-nvidia-l4t-arm64-locate-anything-cpp-development"
410413
intel: "intel-sycl-f32-locate-anything-cpp-development"
411414
vulkan: "vulkan-locate-anything-cpp-development"
415+
metal: "metal-locate-anything-cpp-development"
412416
- !!merge <<: *locateanything
413417
name: "cpu-locate-anything-cpp"
414418
uri: "quay.io/go-skynet/local-ai-backends:latest-cpu-locate-anything-cpp"
@@ -419,6 +423,16 @@
419423
uri: "quay.io/go-skynet/local-ai-backends:master-cpu-locate-anything-cpp"
420424
mirrors:
421425
- localai/localai-backends:master-cpu-locate-anything-cpp
426+
- !!merge <<: *locateanything
427+
name: "metal-locate-anything-cpp"
428+
uri: "quay.io/go-skynet/local-ai-backends:latest-metal-darwin-arm64-locate-anything-cpp"
429+
mirrors:
430+
- localai/localai-backends:latest-metal-darwin-arm64-locate-anything-cpp
431+
- !!merge <<: *locateanything
432+
name: "metal-locate-anything-cpp-development"
433+
uri: "quay.io/go-skynet/local-ai-backends:master-metal-darwin-arm64-locate-anything-cpp"
434+
mirrors:
435+
- localai/localai-backends:master-metal-darwin-arm64-locate-anything-cpp
422436
- !!merge <<: *locateanything
423437
name: "cuda12-locate-anything-cpp"
424438
uri: "quay.io/go-skynet/local-ai-backends:latest-gpu-nvidia-cuda-12-locate-anything-cpp"
@@ -517,6 +531,7 @@
517531
nvidia-l4t-cuda-13: "cuda13-nvidia-l4t-arm64-depth-anything-cpp"
518532
intel: "intel-sycl-f32-depth-anything-cpp"
519533
vulkan: "vulkan-depth-anything-cpp"
534+
metal: "metal-depth-anything-cpp"
520535
- !!merge <<: *depthanything
521536
name: "depth-anything-development"
522537
capabilities:
@@ -529,6 +544,7 @@
529544
nvidia-l4t-cuda-13: "cuda13-nvidia-l4t-arm64-depth-anything-cpp-development"
530545
intel: "intel-sycl-f32-depth-anything-cpp-development"
531546
vulkan: "vulkan-depth-anything-cpp-development"
547+
metal: "metal-depth-anything-cpp-development"
532548
- !!merge <<: *depthanything
533549
name: "cpu-depth-anything-cpp"
534550
uri: "quay.io/go-skynet/local-ai-backends:latest-cpu-depth-anything-cpp"
@@ -539,6 +555,16 @@
539555
uri: "quay.io/go-skynet/local-ai-backends:master-cpu-depth-anything-cpp"
540556
mirrors:
541557
- localai/localai-backends:master-cpu-depth-anything-cpp
558+
- !!merge <<: *depthanything
559+
name: "metal-depth-anything-cpp"
560+
uri: "quay.io/go-skynet/local-ai-backends:latest-metal-darwin-arm64-depth-anything-cpp"
561+
mirrors:
562+
- localai/localai-backends:latest-metal-darwin-arm64-depth-anything-cpp
563+
- !!merge <<: *depthanything
564+
name: "metal-depth-anything-cpp-development"
565+
uri: "quay.io/go-skynet/local-ai-backends:master-metal-darwin-arm64-depth-anything-cpp"
566+
mirrors:
567+
- localai/localai-backends:master-metal-darwin-arm64-depth-anything-cpp
542568
- !!merge <<: *depthanything
543569
name: "cuda12-depth-anything-cpp"
544570
uri: "quay.io/go-skynet/local-ai-backends:latest-gpu-nvidia-cuda-12-depth-anything-cpp"
@@ -3220,6 +3246,7 @@
32203246
nvidia-l4t-cuda-13: "cuda13-nvidia-l4t-arm64-sam3-cpp-development"
32213247
intel: "intel-sycl-f32-sam3-cpp-development"
32223248
vulkan: "vulkan-sam3-cpp-development"
3249+
metal: "metal-sam3-cpp-development"
32233250
- !!merge <<: *sam3cpp
32243251
name: "cpu-sam3-cpp"
32253252
uri: "quay.io/go-skynet/local-ai-backends:latest-cpu-sam3-cpp"
@@ -3230,6 +3257,16 @@
32303257
uri: "quay.io/go-skynet/local-ai-backends:master-cpu-sam3-cpp"
32313258
mirrors:
32323259
- localai/localai-backends:master-cpu-sam3-cpp
3260+
- !!merge <<: *sam3cpp
3261+
name: "metal-sam3-cpp"
3262+
uri: "quay.io/go-skynet/local-ai-backends:latest-metal-darwin-arm64-sam3-cpp"
3263+
mirrors:
3264+
- localai/localai-backends:latest-metal-darwin-arm64-sam3-cpp
3265+
- !!merge <<: *sam3cpp
3266+
name: "metal-sam3-cpp-development"
3267+
uri: "quay.io/go-skynet/local-ai-backends:master-metal-darwin-arm64-sam3-cpp"
3268+
mirrors:
3269+
- localai/localai-backends:master-metal-darwin-arm64-sam3-cpp
32333270
- !!merge <<: *sam3cpp
32343271
name: "cuda12-sam3-cpp"
32353272
uri: "quay.io/go-skynet/local-ai-backends:latest-gpu-nvidia-cuda-12-sam3-cpp"
@@ -3303,6 +3340,7 @@
33033340
nvidia-l4t-cuda-13: "cuda13-nvidia-l4t-arm64-rfdetr-cpp-development"
33043341
intel: "intel-sycl-f32-rfdetr-cpp-development"
33053342
vulkan: "vulkan-rfdetr-cpp-development"
3343+
metal: "metal-rfdetr-cpp-development"
33063344
- !!merge <<: *rfdetrcpp
33073345
name: "cpu-rfdetr-cpp"
33083346
uri: "quay.io/go-skynet/local-ai-backends:latest-cpu-rfdetr-cpp"
@@ -3313,6 +3351,16 @@
33133351
uri: "quay.io/go-skynet/local-ai-backends:master-cpu-rfdetr-cpp"
33143352
mirrors:
33153353
- localai/localai-backends:master-cpu-rfdetr-cpp
3354+
- !!merge <<: *rfdetrcpp
3355+
name: "metal-rfdetr-cpp"
3356+
uri: "quay.io/go-skynet/local-ai-backends:latest-metal-darwin-arm64-rfdetr-cpp"
3357+
mirrors:
3358+
- localai/localai-backends:latest-metal-darwin-arm64-rfdetr-cpp
3359+
- !!merge <<: *rfdetrcpp
3360+
name: "metal-rfdetr-cpp-development"
3361+
uri: "quay.io/go-skynet/local-ai-backends:master-metal-darwin-arm64-rfdetr-cpp"
3362+
mirrors:
3363+
- localai/localai-backends:master-metal-darwin-arm64-rfdetr-cpp
33163364
- !!merge <<: *rfdetrcpp
33173365
name: "cuda12-rfdetr-cpp"
33183366
uri: "quay.io/go-skynet/local-ai-backends:latest-gpu-nvidia-cuda-12-rfdetr-cpp"

0 commit comments

Comments
 (0)