Issue: auxiliary tasks don't respect user's provider-level base_url (falls back to hardcoded PROVIDER_REGISTRY)
Summary
When a user configures a custom base_url for a provider (e.g., xiaomi with token-plan-sgp.xiaomimimo.com), auxiliary tasks (session_search, compression, title_generation, flush_memories, approval) ignore the user's providers.<name>.base_url and instead use the hardcoded inference_base_url from PROVIDER_REGISTRY in hermes_cli/auth.py. This causes silent failures — auxiliary tasks timeout/401 and fall back to other providers, creating cascading issues (gateway idle timeouts, broken session_search).
Root Cause
auxiliary_client.py → _resolve_task_provider_model() reads auxiliary.<task>.provider but not base_url. When the task config only has provider: xiaomi, it returns with base_url=None, and later _resolve_api_key_provider() uses pconfig.inference_base_url — the hardcoded default.
Workaround (current)
Users must explicitly set base_url and api_key in EACH auxiliary.<task> section, requiring credential duplication across 5+ auxiliary tasks.
Desired Behavior
auxiliary.<task>.provider should inherit base_url and api_key from providers.<name> when not explicitly overridden. Resolution chain:
auxiliary.<task>.base_url / api_key (explicit override)
providers.<task_provider>.base_url / api_key (inherit from provider)
- Hardcoded
PROVIDER_REGISTRY default
Affected Code
agent/auxiliary_client.py: _resolve_task_provider_model() — returns None for base_url when only provider is set
agent/auxiliary_client.py: _resolve_api_key_provider() — uses pconfig.inference_base_url unconditionally
Environment
- Hermes v0.11.0
- Provider: xiaomi (MiMo) with non-standard base_url
Issue: auxiliary tasks don't respect user's provider-level base_url (falls back to hardcoded PROVIDER_REGISTRY)
Summary
When a user configures a custom
base_urlfor a provider (e.g., xiaomi withtoken-plan-sgp.xiaomimimo.com), auxiliary tasks (session_search, compression, title_generation, flush_memories, approval) ignore the user'sproviders.<name>.base_urland instead use the hardcodedinference_base_urlfromPROVIDER_REGISTRYinhermes_cli/auth.py. This causes silent failures — auxiliary tasks timeout/401 and fall back to other providers, creating cascading issues (gateway idle timeouts, broken session_search).Root Cause
auxiliary_client.py→_resolve_task_provider_model()readsauxiliary.<task>.providerbut notbase_url. When the task config only hasprovider: xiaomi, it returns withbase_url=None, and later_resolve_api_key_provider()usespconfig.inference_base_url— the hardcoded default.Workaround (current)
Users must explicitly set
base_urlandapi_keyin EACHauxiliary.<task>section, requiring credential duplication across 5+ auxiliary tasks.Desired Behavior
auxiliary.<task>.providershould inheritbase_urlandapi_keyfromproviders.<name>when not explicitly overridden. Resolution chain:auxiliary.<task>.base_url/api_key(explicit override)providers.<task_provider>.base_url/api_key(inherit from provider)PROVIDER_REGISTRYdefaultAffected Code
agent/auxiliary_client.py:_resolve_task_provider_model()— returnsNonefor base_url when only provider is setagent/auxiliary_client.py:_resolve_api_key_provider()— usespconfig.inference_base_urlunconditionallyEnvironment