From b4a100dfc07de995537723293e5b8195fbe9efda Mon Sep 17 00:00:00 2001 From: Bartok9 <259807879+Bartok9@users.noreply.github.com> Date: Wed, 11 Mar 2026 08:29:35 -0700 Subject: [PATCH] fix(doctor): skip /models health check for MiniMax providers MiniMax APIs (global and China) don't support /v1/models, causing hermes doctor to always show HTTP 404 even with valid API keys. Skip the HTTP check for these providers and show '(key configured)' when the API key is present. Cherry-picked from PR #822 by Bartok9, rebased onto current main. Fixes #811 Co-authored-by: Bartok9 <259807879+Bartok9@users.noreply.github.com> --- hermes_cli/doctor.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/hermes_cli/doctor.py b/hermes_cli/doctor.py index de55bdff9..a10f249bd 100644 --- a/hermes_cli/doctor.py +++ b/hermes_cli/doctor.py @@ -490,13 +490,16 @@ def run_doctor(args): print(f"\r {color('⚠', Colors.YELLOW)} Anthropic API {color(f'({e})', Colors.DIM)} ") # -- API-key providers (Z.AI/GLM, Kimi, MiniMax, MiniMax-CN) -- + # Tuple: (name, env_vars, default_url, base_env, supports_models_endpoint) + # If supports_models_endpoint is False, we skip the health check and just show "configured" _apikey_providers = [ - ("Z.AI / GLM", ("GLM_API_KEY", "ZAI_API_KEY", "Z_AI_API_KEY"), "https://api.z.ai/api/paas/v4/models", "GLM_BASE_URL"), - ("Kimi / Moonshot", ("KIMI_API_KEY",), "https://api.moonshot.ai/v1/models", "KIMI_BASE_URL"), - ("MiniMax", ("MINIMAX_API_KEY",), "https://api.minimax.io/v1/models", "MINIMAX_BASE_URL"), - ("MiniMax (China)", ("MINIMAX_CN_API_KEY",), "https://api.minimaxi.com/v1/models", "MINIMAX_CN_BASE_URL"), + ("Z.AI / GLM", ("GLM_API_KEY", "ZAI_API_KEY", "Z_AI_API_KEY"), "https://api.z.ai/api/paas/v4/models", "GLM_BASE_URL", True), + ("Kimi / Moonshot", ("KIMI_API_KEY",), "https://api.moonshot.ai/v1/models", "KIMI_BASE_URL", True), + # MiniMax APIs don't support /models endpoint — https://github.com/NousResearch/hermes-agent/issues/811 + ("MiniMax", ("MINIMAX_API_KEY",), None, "MINIMAX_BASE_URL", False), + ("MiniMax (China)", ("MINIMAX_CN_API_KEY",), None, "MINIMAX_CN_BASE_URL", False), ] - for _pname, _env_vars, _default_url, _base_env in _apikey_providers: + for _pname, _env_vars, _default_url, _base_env, _supports_health_check in _apikey_providers: _key = "" for _ev in _env_vars: _key = os.getenv(_ev, "") @@ -504,6 +507,10 @@ def run_doctor(args): break if _key: _label = _pname.ljust(20) + # Some providers (like MiniMax) don't support /models endpoint + if not _supports_health_check: + print(f" {color('✓', Colors.GREEN)} {_label} {color('(key configured)', Colors.DIM)}") + continue print(f" Checking {_pname} API...", end="", flush=True) try: import httpx