Skip to content

fix(config): register 5 backends missing from BackendCapabilities#10107

Merged
mudler merged 1 commit into
mudler:masterfrom
Dennisadira:fix/missing-backend-capabilities
May 31, 2026
Merged

fix(config): register 5 backends missing from BackendCapabilities#10107
mudler merged 1 commit into
mudler:masterfrom
Dennisadira:fix/missing-backend-capabilities

Conversation

@Dennisadira

@Dennisadira Dennisadira commented May 31, 2026

Copy link
Copy Markdown
Contributor

Summary

Cross-referencing `backend/go/` and `backend/python/` against the keys in `BackendCapabilities` found six backends that exist, build, and work but have no entry in the map. Without an entry, `GuessUsecases` falls back to heuristics that mis-classify them — e.g. a TTS-only backend appears as a text-generation model in the UI.

Backend Modelled on Usecases
`sglang` `vllm` chat, completion, tokenize, vision
`vibevoice-cpp` `vibevoice` Python transcript, tts
`sherpa-onnx` whisper + piper transcript, tts, vad
`qwen3-tts-cpp` `qwen-tts` Python tts
`rfdetr-cpp` `rfdetr` Python detection
`sam3-cpp` `rfdetr` detection

Each entry was verified against the backend source (`func TTS`, `AudioTranscription`, `Detect`, etc.) before picking the method list.

Two backends (`insightface`, `speaker-recognition`) use `FaceVerify`/`FaceAnalyze`/`VoiceVerify`/`VoiceEmbed`/`VoiceAnalyze` RPCs that have no `Method*`/`Usecase*` constants yet — handled in a follow-up PR.

Related: #10106 (same root cause, adds `parakeet-cpp`)

Test plan

  • `gofmt -e` on the edited file: clean
  • Configure a `sherpa-onnx` model → should appear in the STT and TTS selectors
  • Configure a `sglang` model → should appear in the chat/LLM selector
  • Configure a `rfdetr-cpp` or `sam3-cpp` model → should appear in the detection selector

🤖 Generated with Claude Code

Cross-referencing backend/ directories against BackendCapabilities found
five backends that exist and work but have no entry in the map, so
GuessUsecases falls back to heuristics that mis-classify them (e.g.
a TTS backend appears as an LLM in the UI).

Added entries, each modelled on the corresponding Python twin or the
nearest equivalent already in the map:

  sglang        — LLM (Predict/PredictStream/TokenizeString, vision)
  vibevoice-cpp — ASR + TTS/TTSStream (mirrors vibevoice Python)
  sherpa-onnx   — ASR + TTS/TTSStream + VAD (multi-model toolkit)
  qwen3-tts-cpp — TTS (mirrors qwen-tts Python)
  rfdetr-cpp    — object detection (mirrors rfdetr Python)

Found by diffing `ls backend/{go,python}/` against the keys in
BackendCapabilities. Remaining gaps (insightface, speaker-recognition,
sam3-cpp) use custom gRPC methods not yet in the Method* constants —
left for a follow-up.

Assisted-by: Claude Sonnet 4.6 <noreply@anthropic.com>
@mudler mudler merged commit 1bdd333 into mudler:master May 31, 2026
1 check failed
Dennisadira added a commit to Dennisadira/LocalAI that referenced this pull request Jun 3, 2026
…ghtface + speaker-recognition

FLAG_FACE_RECOGNITION and FLAG_SPEAKER_RECOGNITION already existed as
ModelConfigUsecase bitmask flags, and GuessUsecases already gate-checks
both backends by name — but BackendCapabilities had no entries for
either, so the UI could not classify them.

Also missing were the Method* constants for the five proto-defined RPCs
these backends implement (FaceVerify, FaceAnalyze, VoiceVerify,
VoiceEmbed, VoiceAnalyze) and the corresponding Usecase* strings
and UsecaseInfoMap entries needed to wire them into the rest of the
capability system.

Changes:
- Add MethodFaceVerify, MethodFaceAnalyze, MethodVoiceVerify,
  MethodVoiceEmbed, MethodVoiceAnalyze GRPCMethod constants
- Add UsecaseFaceRecognition ("face_recognition") and
  UsecaseSpeakerRecognition ("speaker_recognition") Usecase constants
- Add UsecaseInfoMap entries for both new usecases, referencing the
  existing FLAG_FACE_RECOGNITION and FLAG_SPEAKER_RECOGNITION flags
- Register insightface: Embedding + Detect + FaceVerify + FaceAnalyze
- Register speaker-recognition: VoiceVerify + VoiceEmbed + VoiceAnalyze

Follows up on mudler#10107 which left these two out because they needed new
constants first.

Assisted-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Adira Denis Muhando <dennisadira@gmail.com>
Dennisadira added a commit to Dennisadira/LocalAI that referenced this pull request Jun 3, 2026
…ghtface + speaker-recognition

FLAG_FACE_RECOGNITION and FLAG_SPEAKER_RECOGNITION already existed as
ModelConfigUsecase bitmask flags, and GuessUsecases already gate-checks
both backends by name — but BackendCapabilities had no entries for
either, so the UI could not classify them.

Also missing were the Method* constants for the five proto-defined RPCs
these backends implement (FaceVerify, FaceAnalyze, VoiceVerify,
VoiceEmbed, VoiceAnalyze) and the corresponding Usecase* strings
and UsecaseInfoMap entries needed to wire them into the rest of the
capability system.

Changes:
- Add MethodFaceVerify, MethodFaceAnalyze, MethodVoiceVerify,
  MethodVoiceEmbed, MethodVoiceAnalyze GRPCMethod constants
- Add UsecaseFaceRecognition ("face_recognition") and
  UsecaseSpeakerRecognition ("speaker_recognition") Usecase constants
- Add UsecaseInfoMap entries for both new usecases, referencing the
  existing FLAG_FACE_RECOGNITION and FLAG_SPEAKER_RECOGNITION flags
- Register insightface: Embedding + Detect + FaceVerify + FaceAnalyze
- Register speaker-recognition: VoiceVerify + VoiceEmbed + VoiceAnalyze

Follows up on mudler#10107 which left these two out because they needed new
constants first.

Assisted-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Adira Denis Muhando <dennisadira@gmail.com>
mudler pushed a commit that referenced this pull request Jun 4, 2026
…ghtface + speaker-recognition (#10110)

FLAG_FACE_RECOGNITION and FLAG_SPEAKER_RECOGNITION already existed as
ModelConfigUsecase bitmask flags, and GuessUsecases already gate-checks
both backends by name — but BackendCapabilities had no entries for
either, so the UI could not classify them.

Also missing were the Method* constants for the five proto-defined RPCs
these backends implement (FaceVerify, FaceAnalyze, VoiceVerify,
VoiceEmbed, VoiceAnalyze) and the corresponding Usecase* strings
and UsecaseInfoMap entries needed to wire them into the rest of the
capability system.

Changes:
- Add MethodFaceVerify, MethodFaceAnalyze, MethodVoiceVerify,
  MethodVoiceEmbed, MethodVoiceAnalyze GRPCMethod constants
- Add UsecaseFaceRecognition ("face_recognition") and
  UsecaseSpeakerRecognition ("speaker_recognition") Usecase constants
- Add UsecaseInfoMap entries for both new usecases, referencing the
  existing FLAG_FACE_RECOGNITION and FLAG_SPEAKER_RECOGNITION flags
- Register insightface: Embedding + Detect + FaceVerify + FaceAnalyze
- Register speaker-recognition: VoiceVerify + VoiceEmbed + VoiceAnalyze

Follows up on #10107 which left these two out because they needed new
constants first.

Assisted-by: Claude Sonnet 4.6 <noreply@anthropic.com>

Signed-off-by: Adira Denis Muhando <dennisadira@gmail.com>
@localai-bot localai-bot added the bug Something isn't working label Jun 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants