model_list: # General chat — OpenRouter's own auto-router picks the best underlying model per prompt. - model_name: auto litellm_params: model: openrouter/openrouter/auto api_key: os.environ/OPENROUTER_API_KEY # Cheap/fast model used by the agent's own chat-vs-code-task classifier, not by users directly. - model_name: router-classifier litellm_params: model: openrouter/openai/gpt-4o-mini api_key: os.environ/OPENROUTER_API_KEY # NOT included: an "anthropic-claude" model routing to Anthropic via the caller's # forwarded OAuth header (general_settings.forward_client_headers_to_llm_api). It # genuinely works — but ONLY when the real `claude` CLI binary is the caller (its # request carries a header/fingerprint only that binary sends; a hand-built request, # including Hermes selecting this model directly, gets a hard auth error from # Anthropic). Having it selectable here caused exactly that confusion once already. # The actual working path for "Hermes uses the Claude subscription" is the MCP bridge # at claude-agent's /mcp (agent/src/mcpBridge.js) — it shells out to the real `claude` # binary server-side instead of trying to make an arbitrary caller impersonate it. litellm_settings: # Callers (Hermes included) send provider-specific params like reasoning_effort that # not every routed model/provider accepts — drop unsupported ones instead of erroring. drop_params: true general_settings: master_key: os.environ/LITELLM_MASTER_KEY