diff --git a/hermes_cli/auth.py b/hermes_cli/auth.py index 0c5037019..940a15564 100644 --- a/hermes_cli/auth.py +++ b/hermes_cli/auth.py @@ -2310,21 +2310,20 @@ def _login_nous(args, pconfig: ProviderConfig) -> None: raise AuthError("No runtime API key available to fetch models", provider="nous", code="invalid_token") - model_ids = fetch_nous_models( - inference_base_url=runtime_base_url, - api_key=runtime_key, - timeout_seconds=timeout_seconds, - verify=verify, - ) + # Use curated model list (same as OpenRouter defaults) instead + # of the full /models dump which returns hundreds of models. + from hermes_cli.models import _PROVIDER_MODELS + model_ids = _PROVIDER_MODELS.get("nous", []) print() if model_ids: + print(f"Showing {len(model_ids)} curated models — use \"Enter custom model name\" for others.") selected_model = _prompt_model_selection(model_ids) if selected_model: _save_model_choice(selected_model) print(f"Default model set to: {selected_model}") else: - print("No models were returned by the inference API.") + print("No curated models available for Nous Portal.") except Exception as exc: message = format_auth_error(exc) if isinstance(exc, AuthError) else str(exc) print() diff --git a/hermes_cli/main.py b/hermes_cli/main.py index cf445d845..39d233ad4 100644 --- a/hermes_cli/main.py +++ b/hermes_cli/main.py @@ -1084,14 +1084,20 @@ def _model_flow_nous(config, current_model=""): # login_nous already handles model selection + config update return - # Already logged in — fetch models and select - print("Fetching models from Nous Portal...") + # Already logged in — use curated model list (same as OpenRouter defaults). + # The live /models endpoint returns hundreds of models; the curated list + # shows only agentic models users recognize from OpenRouter. + from hermes_cli.models import _PROVIDER_MODELS + model_ids = _PROVIDER_MODELS.get("nous", []) + if not model_ids: + print("No curated models available for Nous Portal.") + return + + print(f"Showing {len(model_ids)} curated models — use \"Enter custom model name\" for others.") + + # Verify credentials are still valid (catches expired sessions early) try: creds = resolve_nous_runtime_credentials(min_key_ttl_seconds=5 * 60) - model_ids = fetch_nous_models( - inference_base_url=creds.get("base_url", ""), - api_key=creds.get("api_key", ""), - ) except Exception as exc: relogin = isinstance(exc, AuthError) and exc.relogin_required msg = format_auth_error(exc) if isinstance(exc, AuthError) else str(exc) @@ -1108,11 +1114,7 @@ def _model_flow_nous(config, current_model=""): except Exception as login_exc: print(f"Re-login failed: {login_exc}") return - print(f"Could not fetch models: {msg}") - return - - if not model_ids: - print("No models returned by the inference API.") + print(f"Could not verify credentials: {msg}") return selected = _prompt_model_selection(model_ids, current_model=current_model) diff --git a/hermes_cli/setup.py b/hermes_cli/setup.py index e00aaa4b9..63e85a662 100644 --- a/hermes_cli/setup.py +++ b/hermes_cli/setup.py @@ -1002,10 +1002,9 @@ def setup_model_provider(config: dict): min_key_ttl_seconds=5 * 60, timeout_seconds=15.0, ) - nous_models = fetch_nous_models( - inference_base_url=creds.get("base_url", ""), - api_key=creds.get("api_key", ""), - ) + # Use curated model list instead of full /models dump + from hermes_cli.models import _PROVIDER_MODELS + nous_models = _PROVIDER_MODELS.get("nous", []) except Exception as e: logger.debug("Could not fetch Nous models after login: %s", e)