Skip to content

fix(doctor): allow vendor slugs for named custom providers - #42411

Merged
teknium1 merged 2 commits into
mainfrom
hermes/hermes-794f696e
Jun 8, 2026
Merged

teknium1 merged 2 commits into
mainfrom
hermes/hermes-794f696e

Conversation

@teknium1

@teknium1 teknium1 commented Jun 8, 2026

Copy link
Copy Markdown
Collaborator

Summary

hermes doctor no longer tells users on a named custom provider to drop a vendor prefix their backend requires. Named custom providers (custom:hpc-ai) can front aggregator-style OpenAI-compatible services, so provider: custom:hpc-ai + default: deepseek/deepseek-v4-flash is valid — but doctor's allowlist only had bare "custom", while a named custom provider resolves to the full custom:hpc-ai string and never matched, so the warning fired.

Salvage of #42364 by @helix4u onto current main, plus a small follow-up that folds the two scattered custom conditions into one predicate.

Changes

  • hermes_cli/doctor.py: suppress the vendor/model slug warning for bare custom and named custom:<name> providers via a single provider_accepts_vendor_slug predicate.
  • hermes_cli/providers.py: classify custom:<name> as an aggregator so model-switch and doctor agree.
  • tests/: regression coverage for custom:hpc-ai + deepseek/deepseek-v4-flash and the aggregator classification.

Validation

E2E via the real hermes doctor against an isolated HERMES_HOME:

config before after
custom:hpc-ai + deepseek/deepseek-v4-flash warns "drop the vendor prefix / switch to openrouter" no warning
bare custom + vendor slug no warning no warning (preserved)
anthropic + anthropic/claude-sonnet-4 (non-aggregator) warns warns (preserved)

Targeted tests: tests/hermes_cli/test_doctor.py + test_model_switch_custom_providers.py — 87/87 pass.

Reported from Discord support. Closes #42364 (cherry-picked with @helix4u's authorship preserved).

Infographic

hermes doctor custom provider fix

helix4u and others added 2 commits June 8, 2026 15:19
…dicate

Collapse the bare-"custom" allowlist entry and the custom:<name> guard into
a single provider_accepts_vendor_slug predicate so the slug-warning suppression
reads as one rule instead of two scattered conditions. No behavior change.
@github-actions

github-actions Bot commented Jun 8, 2026

Copy link
Copy Markdown
Contributor

🔎 Lint report: hermes/hermes-794f696e vs origin/main

ruff

Total: 0 on HEAD, 0 on base (➖ 0)

🆕 New issues: none

✅ Fixed issues: none

Unchanged: 0 pre-existing issues carried over.

ty (type checker)

Total: 10565 on HEAD, 10565 on base (➖ 0)

🆕 New issues: none

✅ Fixed issues: none

Unchanged: 5551 pre-existing issues carried over.

Diagnostics are surfaced as warnings — this check never fails the build.

@alt-glitch alt-glitch added type/bug Something isn't working comp/cli CLI entry point, hermes_cli/, setup wizard P3 Low — cosmetic, nice to have labels Jun 8, 2026
@alt-glitch

Copy link
Copy Markdown
Contributor

Duplicate-class of #42364 (salvage), #26594/#26591 — all treat custom:<name> as an aggregator so hermes doctor stops falsely warning to drop vendor prefixes. Same root fix in doctor.py + providers.py.

@teknium1
teknium1 merged commit aa424e5 into main Jun 8, 2026
23 checks passed
@teknium1
teknium1 deleted the hermes/hermes-794f696e branch June 8, 2026 22:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp/cli CLI entry point, hermes_cli/, setup wizard P3 Low — cosmetic, nice to have type/bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants