Skip to content

Commit e98dbd8

Browse files
fix(ci): repair nightly backend dep bumps for renamed localai-org repos
The "Bump Backend dependencies" workflow has failed every night for over ten days. Four upstreams — ced.cpp, moss-transcribe.cpp, voice-detect.cpp and rf-detr.cpp — moved from the mudler org to localai-org, so the GitHub API answers 301 for the old slugs. ced.cpp additionally renamed its default branch to main. bump_deps.sh fetched without -L or -f and never checked the response, so the redirect's JSON body was passed straight to sed, which died with "unterminated `s' command". The loud failure was luck: an error body without slashes would have been substituted into the Makefile as the new pin, silently corrupting the version and shipping it in a bump PR. Point the matrix at the new slugs and branch, and harden the script so a bad response can never reach sed: follow redirects, fail on HTTP errors, and require a bare 40-hex SHA before rewriting anything. Also refresh the now-stale repository URLs in the backend Makefiles, test scripts, backend/index.yaml and the docs. Verified all 25 matrix entries resolve to a commit SHA and that the four previously-failing jobs run end to end against the real API. Assisted-by: Claude:claude-opus-4-8 [Claude Code]
1 parent d0401f9 commit e98dbd8

16 files changed

Lines changed: 42 additions & 30 deletions

File tree

.github/bump_deps.sh

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,19 @@ if [ -z "$FILE" ]; then
99
FILE="Makefile"
1010
fi
1111

12-
LAST_COMMIT=$(curl -s -H "Accept: application/vnd.github.VERSION.sha" "https://api.github.com/repos/$REPO/commits/$BRANCH")
12+
# -L so a renamed/transferred upstream repo (GitHub answers 301) still
13+
# resolves instead of handing us the redirect body, and -f so an HTTP error
14+
# aborts the run rather than letting an error page reach sed below.
15+
LAST_COMMIT=$(curl -sfL -H "Accept: application/vnd.github.VERSION.sha" "https://api.github.com/repos/$REPO/commits/$BRANCH")
16+
17+
# Guard the sed input: anything that is not a bare 40-hex SHA (an API error
18+
# body, an empty response) would otherwise be spliced into the Makefile pin —
19+
# either corrupting it silently or blowing up sed with an unterminated
20+
# expression, which is how this job failed for a renamed repo.
21+
if ! [[ "$LAST_COMMIT" =~ ^[0-9a-f]{40}$ ]]; then
22+
echo "Refusing to bump $VAR: expected a 40-char commit SHA for $REPO@$BRANCH, got: $LAST_COMMIT" >&2
23+
exit 1
24+
fi
1325

1426
# Read $VAR from Makefile (only first match)
1527
set +e

.github/workflows/bump_deps.yaml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -50,15 +50,15 @@ jobs:
5050
variable: "PARAKEET_VERSION"
5151
branch: "master"
5252
file: "backend/go/parakeet-cpp/Makefile"
53-
- repository: "mudler/moss-transcribe.cpp"
53+
- repository: "localai-org/moss-transcribe.cpp"
5454
variable: "MOSS_VERSION"
5555
branch: "master"
5656
file: "backend/go/moss-transcribe-cpp/Makefile"
57-
- repository: "mudler/ced.cpp"
57+
- repository: "localai-org/ced.cpp"
5858
variable: "CED_VERSION"
59-
branch: "master"
59+
branch: "main"
6060
file: "backend/go/ced/Makefile"
61-
- repository: "mudler/voice-detect.cpp"
61+
- repository: "localai-org/voice-detect.cpp"
6262
variable: "VOICEDETECT_VERSION"
6363
branch: "master"
6464
file: "backend/go/voice-detect/Makefile"
@@ -90,7 +90,7 @@ jobs:
9090
variable: "SAM3_VERSION"
9191
branch: "main"
9292
file: "backend/go/sam3-cpp/Makefile"
93-
- repository: "mudler/rf-detr.cpp"
93+
- repository: "localai-org/rf-detr.cpp"
9494
variable: "RFDETR_VERSION"
9595
branch: "main"
9696
file: "backend/go/rfdetr-cpp/Makefile"

README.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ For more details, see the [Getting Started guide](https://localai.io/basics/gett
177177

178178
## Latest News
179179

180-
- **June 2026**: New native biometric backends from the LocalAI team: [voice-detect.cpp](https://github.com/mudler/voice-detect.cpp) for speaker recognition and voice analysis (ECAPA-TDNN, WeSpeaker, ERes2Net, CAM++, wav2vec2 age/gender/emotion) and [face-detect.cpp](https://github.com/mudler/face-detect.cpp) for face detection, recognition, demographics and anti-spoofing (SCRFD/ArcFace, YuNet/SFace). Both are from-scratch C++/ggml engines with no Python or onnxruntime at inference, self-contained GGUF weights, bit-exact parity with the reference, and GPU cuDNN parity, replacing the heavier Python `insightface` and `speaker-recognition` backends ([PR #10441](https://github.com/mudler/LocalAI/pull/10441)).
180+
- **June 2026**: New native biometric backends from the LocalAI team: [voice-detect.cpp](https://github.com/localai-org/voice-detect.cpp) for speaker recognition and voice analysis (ECAPA-TDNN, WeSpeaker, ERes2Net, CAM++, wav2vec2 age/gender/emotion) and [face-detect.cpp](https://github.com/mudler/face-detect.cpp) for face detection, recognition, demographics and anti-spoofing (SCRFD/ArcFace, YuNet/SFace). Both are from-scratch C++/ggml engines with no Python or onnxruntime at inference, self-contained GGUF weights, bit-exact parity with the reference, and GPU cuDNN parity, replacing the heavier Python `insightface` and `speaker-recognition` backends ([PR #10441](https://github.com/mudler/LocalAI/pull/10441)).
181181
- **June 2026**: New [realtime voice assistant demo](https://github.com/localai-org/localai-realtime-demo) (a tiny Go client for the Realtime API with a full talk-back voice loop and tool calling), plus [streaming of the realtime LLM / TTS / transcription pipeline stages](https://github.com/mudler/LocalAI/pull/10176) and [configurable WebRTC ICE candidates](https://github.com/mudler/LocalAI/pull/10231).
182182
- **June 2026**: Big speech push: the [parakeet.cpp](https://github.com/mudler/parakeet.cpp) ASR engine gains [NeMo-faithful segment timestamps](https://github.com/mudler/LocalAI/pull/10207), a [multilingual streaming Nemotron-3.5 model](https://github.com/mudler/LocalAI/pull/10199), [dynamic batching for concurrent transcription](https://github.com/mudler/LocalAI/pull/10112) and [CUDA graphs](https://github.com/mudler/LocalAI/pull/10273); the new [CrispASR backend](https://github.com/mudler/LocalAI/pull/10099) adds multi-architecture ASR + TTS, and [60 Piper TTS voices across 42 languages](https://github.com/mudler/LocalAI/pull/10296) land in the gallery (plus [per-request TTS instructions and params](https://github.com/mudler/LocalAI/pull/10172)).
183183
- **June 2026**: New backends and models: [locate-anything.cpp](https://github.com/mudler/LocalAI/pull/10264) for open-vocabulary object detection via ggml, [Ideogram4 image generation](https://github.com/mudler/LocalAI/pull/10201) in stablediffusion-ggml, [llama.cpp video input](https://github.com/mudler/LocalAI/pull/10216), and the [Gemma 4 QAT family with MTP speculative-decoding pairs](https://github.com/mudler/LocalAI/pull/10215). Plus an [interactive CLI chat mode](https://github.com/mudler/LocalAI/pull/10226) and [RAG source citations in agent responses](https://github.com/mudler/LocalAI/pull/10228).
@@ -232,13 +232,13 @@ Most backends wrap a best-in-class upstream engine. A handful of them are native
232232
| Backend | What it does |
233233
|---------|-------------|
234234
| [parakeet.cpp](https://github.com/mudler/parakeet.cpp) | C++/GGML port of NVIDIA NeMo Parakeet ASR (tdt/ctc/rnnt/hybrid), with cache-aware streaming transcription |
235-
| [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 |
235+
| [moss-transcribe.cpp](https://github.com/localai-org/moss-transcribe.cpp) | C++/GGML port of OpenMOSS MOSS-Transcribe-Diarize: joint long-form transcription, speaker diarization and timestamping in a single pass |
236236
| [moss-tts.cpp](https://github.com/mudler/moss-tts.cpp) | C++/GGML port of the OpenMOSS MOSS-TTS family: text-to-speech (MOSS-TTS-Local v1.5, 48 kHz stereo) with reference-audio voice cloning, through the MOSS-Audio-Tokenizer neural codec |
237-
| [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 |
238-
| [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 |
237+
| [ced.cpp](https://github.com/localai-org/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 |
238+
| [voice-detect.cpp](https://github.com/localai-org/voice-detect.cpp) | Speaker recognition and voice analysis (ECAPA-TDNN, WeSpeaker, ERes2Net, CAM++, wav2vec2 age/gender/emotion), replacing the Python speaker-recognition backend |
239239
| [voxtral-tts.c](https://github.com/mudler/voxtral-tts.c) | Voxtral Realtime 4B speech-to-text in pure C |
240240
| [vibevoice.cpp](https://github.com/mudler/vibevoice.cpp) | Native port of Microsoft VibeVoice for TTS (voice cloning) and long-form ASR with speaker diarization |
241-
| [rf-detr.cpp](https://github.com/mudler/rf-detr.cpp) | Native RF-DETR object detection and instance segmentation |
241+
| [rf-detr.cpp](https://github.com/localai-org/rf-detr.cpp) | Native RF-DETR object detection and instance segmentation |
242242
| [locate-anything.cpp](https://github.com/mudler/locate-anything.cpp) | Open-vocabulary object detection and visual grounding (LocateAnything-3B) |
243243
| [depth-anything.cpp](https://github.com/mudler/depth-anything.cpp) | Depth Anything 3 monocular metric depth + camera pose estimation |
244244
| [face-detect.cpp](https://github.com/mudler/face-detect.cpp) | Face detection, recognition, demographics and anti-spoofing (SCRFD/ArcFace, YuNet/SFace), replacing the Python insightface backend |

backend/go/ced/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
# go build -o ced-grpc .
1111

1212
CED_VERSION?=c04ac14b7992d00584d9e812c9bb6268598a6ce7
13-
CED_REPO?=https://github.com/mudler/ced.cpp
13+
CED_REPO?=https://github.com/localai-org/ced.cpp
1414

1515
GOCMD?=go
1616
GO_TAGS?=

backend/go/depth-anything-cpp/test.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ fi
2525
# Depth estimation needs real content; a synthetic image would be degenerate.
2626
TEST_IMAGE_DIR="$CURDIR/test-data"
2727
TEST_IMAGE_FILE="$TEST_IMAGE_DIR/test.jpg"
28-
TEST_IMAGE_URL="${TEST_IMAGE_URL:-https://raw.githubusercontent.com/mudler/rf-detr.cpp/main/tests/fixtures/ci/test_image.jpg}"
28+
TEST_IMAGE_URL="${TEST_IMAGE_URL:-https://raw.githubusercontent.com/localai-org/rf-detr.cpp/main/tests/fixtures/ci/test_image.jpg}"
2929

3030
mkdir -p "$TEST_IMAGE_DIR"
3131
if [ ! -f "$TEST_IMAGE_FILE" ]; then

backend/go/locate-anything-cpp/test.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ fi
2727
# synthetic image would trivially yield zero detections.
2828
TEST_IMAGE_DIR="$CURDIR/test-data"
2929
TEST_IMAGE_FILE="$TEST_IMAGE_DIR/test.jpg"
30-
TEST_IMAGE_URL="${TEST_IMAGE_URL:-https://raw.githubusercontent.com/mudler/rf-detr.cpp/main/tests/fixtures/ci/test_image.jpg}"
30+
TEST_IMAGE_URL="${TEST_IMAGE_URL:-https://raw.githubusercontent.com/localai-org/rf-detr.cpp/main/tests/fixtures/ci/test_image.jpg}"
3131

3232
mkdir -p "$TEST_IMAGE_DIR"
3333
if [ ! -f "$TEST_IMAGE_FILE" ]; then

backend/go/moss-transcribe-cpp/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
# clone-at-pin + cmake build so CI doesn't need a side-checkout.
1717

1818
MOSS_VERSION?=190a569c13b4b247450f2fb3b2a431244e84833e
19-
MOSS_REPO?=https://github.com/mudler/moss-transcribe.cpp
19+
MOSS_REPO?=https://github.com/localai-org/moss-transcribe.cpp
2020

2121
GOCMD?=go
2222
GO_TAGS?=

backend/go/rfdetr-cpp/Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@ GO_TAGS?=
77
JOBS?=$(shell nproc --ignore=1)
88

99
# rt-detr.cpp (GitHub redirects the historical mudler/rt-detr.cpp to the new
10-
# mudler/rf-detr.cpp slug). Pin to a specific commit if you need a stable
10+
# localai-org/rf-detr.cpp slug). Pin to a specific commit if you need a stable
1111
# build; leaving this on `master` always picks up the latest C-API surface
1212
# (incl. the per-detection accessor functions used by gorfdetrcpp.go).
13-
RFDETR_REPO?=https://github.com/mudler/rf-detr.cpp.git
13+
RFDETR_REPO?=https://github.com/localai-org/rf-detr.cpp.git
1414
RFDETR_VERSION?=65c0ffcc9a9bc9dae38252f63d0417c9845a6cf7
1515

1616
ifeq ($(NATIVE),false)

backend/go/rfdetr-cpp/test.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ fi
3434
# detections.
3535
TEST_IMAGE_DIR="$CURDIR/test-data"
3636
TEST_IMAGE_FILE="$TEST_IMAGE_DIR/test.jpg"
37-
TEST_IMAGE_URL="${TEST_IMAGE_URL:-https://raw.githubusercontent.com/mudler/rf-detr.cpp/main/tests/fixtures/ci/test_image.jpg}"
37+
TEST_IMAGE_URL="${TEST_IMAGE_URL:-https://raw.githubusercontent.com/localai-org/rf-detr.cpp/main/tests/fixtures/ci/test_image.jpg}"
3838

3939
mkdir -p "$TEST_IMAGE_DIR"
4040
if [ ! -f "$TEST_IMAGE_FILE" ]; then

backend/go/voice-detect/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
# not need a side-checkout.
1515

1616
VOICEDETECT_VERSION?=1db1759572c90faef6f3a78c36b5941a096a9f89
17-
VOICEDETECT_REPO?=https://github.com/mudler/voice-detect.cpp
17+
VOICEDETECT_REPO?=https://github.com/localai-org/voice-detect.cpp
1818

1919
GOCMD?=go
2020
GO_TAGS?=

0 commit comments

Comments
 (0)