Skip to content

custom:<name> providers not recognized as aggregators (custom:zenmux) #26578

@colin-chang

Description

@colin-chang

Describe the bug

Custom-named providers such as custom:zenmux are not recognized as multi-model aggregators in two places:

1. hermes_cli/providers.pyis_aggregator()

The function only returns True for providers registered in PROVIDER_REGISTRY that have is_aggregator=True. Custom-named providers like custom:zenmux fall through to get_provider() which returns None for unknown slugs, so is_aggregator() returns False.

This breaks model-alias resolution for vendor-prefixed model IDs (e.g. google/gemini-3.1-flash-lite) when the current provider is custom:zenmux.

2. hermes_cli/doctor.py — vendor-prefix validation

hermes doctor raises a false-positive warning:

model.default 'z-ai/glm-5.1' is vendor-prefixed but model.provider is 'custom:zenmux'.
Either set model.provider to 'openrouter', or drop the vendor prefix.

This is incorrect — custom:zenmux is an aggregator that accepts vendor-prefixed model slugs, just like openrouter or bare custom.

Expected behavior

  • is_aggregator("custom:zenmux") should return True
  • hermes doctor should not warn about vendor-prefixed models when model.provider is custom:<name>

Fix

hermes_cli/providers.py:

def is_aggregator(provider: str) -> bool:
    if provider and provider.startswith("custom:"):
        return True
    pdef = get_provider(provider)
    return pdef.is_aggregator if pdef else False

hermes_cli/doctor.py — add not provider_for_policy.startswith("custom:") to the vendor-prefix check condition.

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2Medium — degraded but workaround existsarea/configConfig system, migrations, profilescomp/cliCLI entry point, hermes_cli/, setup wizardsweeper:implemented-on-mainSweeper: behavior already present on current maintype/bugSomething isn't working

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions