{"repo":"NousResearch/hermes-agent","public_id":"8096","display_label":"Moonshot/Kimi China domestic endpoint support","summary":"These issues and pull requests address adding and correcting a China-specific domestic provider configuration for Kimi/Moonshot users, ensuring the correct regional endpoint is used during setup and operation.","subsystem":null,"counts":{"members":5,"open_issues":0,"open_issues_distinct":0,"open_prs":0,"closed_issues":1,"merged_prs":1,"attempt_prs":3},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":9172},"resolution":{"state":"unresolved","by":null},"freshness":{"state":"stale","last_verified_at":"2026-04-13T18:20:37+00:00","is_stale":true},"grouping":{"backbone":"STRUCTURAL_SPANNING","link_density":0.4},"fix_edges":[{"issue_number":8096,"pr_number":9172,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false},{"issue_number":8825,"pr_number":9172,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false}],"members":[{"kind":"issue","number":8096,"title":"[Config issue]:  Kimi/Moonshot provider defaults to wrong endpoint for China users","url":null,"state":"closed"},{"kind":"pr","number":8166,"title":"fix: prompt for Moonshot platform during setup (moonshot.cn support)","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#9172","number":9172}],"category":"merged_via","implication":"superseded"},"merged":false},{"kind":"pr","number":8212,"title":"feat: add moonshot-cn domestic provider for China-based Kimi/Moonshot users","url":null,"state":"closed","close_reason":{"category":"uncategorized","implication":"needs_llm"},"merged":false},{"kind":"pr","number":8856,"title":"fix(provider): correct moonshot-cn domestic provider for China-based Kimi/Moonshot users","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#9172","number":9172}],"category":"merged_via","implication":"superseded"},"merged":false},{"kind":"pr","number":9172,"title":"feat(providers): add kimi-coding-cn provider for mainland China users","url":null,"state":"merged","close_reason":{"category":"merged","implication":"superseded"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":[".env.example","agent/auxiliary_client.py","agent/model_metadata.py","agent/models_dev.py","hermes_cli/auth.py","hermes_cli/config.py","hermes_cli/doctor.py","hermes_cli/main.py","hermes_cli/model_normalize.py","hermes_cli/models.py","hermes_cli/providers.py","hermes_cli/runtime_provider.py","hermes_cli/setup.py","trajectory_compressor.py","website/docs/getting-started/quickstart.md","website/docs/integrations/providers.md","website/docs/reference/environment-variables.md","website/docs/user-guide/configuration.md"],"fix_hunks":[{"file":".env.example","hunks":["@@ -43,6 +43,7 @@\n # KIMI_BASE_URL=https://api.kimi.com/coding/v1  # Default for sk-kimi- keys\n # KIMI_BASE_URL=https://api.moonshot.ai/v1      # For legacy Moonshot keys\n # KIMI_BASE_URL=https://api.moonshot.cn/v1       # For Moonshot China keys\n+# KIMI_CN_API_KEY=                               # Dedicated Moonshot China key\n \n # =============================================================================\n # LLM PROVIDER (MiniMax)"]},{"file":"agent/auxiliary_client.py","hunks":["@@ -64,6 +64,8 @@\n     \"zhipu\": \"zai\",\n     \"kimi\": \"kimi-coding\",\n     \"moonshot\": \"kimi-coding\",\n+    \"kimi-cn\": \"kimi-coding-cn\",\n+    \"moonshot-cn\": \"kimi-coding-cn\",\n     \"minimax-china\": \"minimax-cn\",\n     \"minimax_cn\": \"minimax-cn\",\n     \"claude\": \"anthropic\",","@@ -94,6 +96,7 @@ def _normalize_aux_provider(provider: Optional[str]) -> str:\n     \"gemini\": \"gemini-3-flash-preview\",\n     \"zai\": \"glm-4.5-flash\",\n     \"kimi-coding\": \"kimi-k2-turbo-preview\",\n+    \"kimi-coding-cn\": \"kimi-k2-turbo-preview\",\n     \"minimax\": \"MiniMax-M2.7\",\n     \"minimax-cn\": \"MiniMax-M2.7\",\n     \"anthropic\": \"claude-haiku-4-5-20251001\","]},{"file":"agent/model_metadata.py","hunks":["@@ -24,7 +24,7 @@\n # are preserved so the full model name reaches cache lookups and server queries.\n _PROVIDER_PREFIXES: frozenset[str] = frozenset({\n     \"openrouter\", \"nous\", \"openai-codex\", \"copilot\", \"copilot-acp\",\n-    \"gemini\", \"zai\", \"kimi-coding\", \"minimax\", \"minimax-cn\", \"anthropic\", \"deepseek\",\n+    \"gemini\", \"zai\", \"kimi-coding\", \"kimi-coding-cn\", \"minimax\", \"minimax-cn\", \"anthropic\", \"deepseek\",\n     \"opencode-zen\", \"opencode-go\", \"ai-gateway\", \"kilocode\", \"alibaba\",\n     \"qwen-oauth\",\n     \"xiaomi\",","@@ -32,7 +32,7 @@\n     # Common aliases\n     \"google\", \"google-gemini\", \"google-ai-studio\",\n     \"glm\", \"z-ai\", \"z.ai\", \"zhipu\", \"github\", \"github-copilot\",\n-    \"github-models\", \"kimi\", \"moonshot\", \"claude\", \"deep-seek\",\n+    \"github-models\", \"kimi\", \"moonshot\", \"kimi-cn\", \"moonshot-cn\", \"claude\", \"deep-seek\",\n     \"opencode\", \"zen\", \"go\", \"vercel\", \"kilo\", \"dashscope\", \"aliyun\", \"qwen\",\n     \"mimo\", \"xiaomi-mimo\",\n     \"qwen-portal\",","@@ -211,6 +211,7 @@ def _is_custom_endpoint(base_url: str) -> bool:\n     \"api.anthropic.com\": \"anthropic\",\n     \"api.z.ai\": \"zai\",\n     \"api.moonshot.ai\": \"kimi-coding\",\n+    \"api.moonshot.cn\": \"kimi-coding-cn\",\n     \"api.kimi.com\": \"kimi-coding\",\n     \"api.minimax\": \"minimax\",\n     \"dashscope.aliyuncs.com\": \"alibaba\","]},{"file":"agent/models_dev.py","hunks":["@@ -148,6 +148,7 @@ class ProviderInfo:\n     \"openai-codex\": \"openai\",\n     \"zai\": \"zai\",\n     \"kimi-coding\": \"kimi-for-coding\",\n+    \"kimi-coding-cn\": \"kimi-for-coding\",\n     \"minimax\": \"minimax\",\n     \"minimax-cn\": \"minimax-cn\",\n     \"deepseek\": \"deepseek\","]},{"file":"hermes_cli/auth.py","hunks":["@@ -160,6 +160,13 @@ class ProviderConfig:\n         api_key_env_vars=(\"KIMI_API_KEY\",),\n         base_url_env_var=\"KIMI_BASE_URL\",\n     ),\n+    \"kimi-coding-cn\": ProviderConfig(\n+        id=\"kimi-coding-cn\",\n+        name=\"Kimi / Moonshot (China)\",\n+        auth_type=\"api_key\",\n+        inference_base_url=\"https://api.moonshot.cn/v1\",\n+        api_key_env_vars=(\"KIMI_CN_API_KEY\",),\n+    ),\n     \"minimax\": ProviderConfig(\n         id=\"minimax\",\n         name=\"MiniMax\",","@@ -892,6 +899,7 @@ def resolve_provider(\n         \"glm\": \"zai\", \"z-ai\": \"zai\", \"z.ai\": \"zai\", \"zhipu\": \"zai\",\n         \"google\": \"gemini\", \"google-gemini\": \"gemini\", \"google-ai-studio\": \"gemini\",\n         \"kimi\": \"kimi-coding\", \"kimi-for-coding\": \"kimi-coding\", \"moonshot\": \"kimi-coding\",\n+        \"kimi-cn\": \"kimi-coding-cn\", \"moonshot-cn\": \"kimi-coding-cn\",\n         \"minimax-china\": \"minimax-cn\", \"minimax_cn\": \"minimax-cn\",\n         \"claude\": \"anthropic\", \"claude-code\": \"anthropic\",\n         \"github\": \"copilot\", \"github-copilot\": \"copilot\","]},{"file":"hermes_cli/config.py","hunks":["@@ -816,6 +816,14 @@ def _ensure_hermes_home_managed(home: Path):\n         \"category\": \"provider\",\n         \"advanced\": True,\n     },\n+    \"KIMI_CN_API_KEY\": {\n+        \"description\": \"Kimi / Moonshot China API key\",\n+        \"prompt\": \"Kimi (China) API key\",\n+        \"url\": \"https://platform.moonshot.cn/\",\n+        \"password\": True,\n+        \"category\": \"provider\",\n+        \"advanced\": True,\n+    },\n     \"MINIMAX_API_KEY\": {\n         \"description\": \"MiniMax API key (international)\",\n         \"prompt\": \"MiniMax API key\",","@@ -2452,6 +2460,7 @@ def load_config() -> Dict[str, Any]:\n #   nous         (OAuth — hermes auth) — Nous Portal\n #   zai          (ZAI_API_KEY)         — Z.AI / GLM\n #   kimi-coding  (KIMI_API_KEY)        — Kimi / Moonshot\n+#   kimi-coding-cn (KIMI_CN_API_KEY)   — Kimi / Moonshot (China)\n #   minimax      (MINIMAX_API_KEY)     — MiniMax\n #   minimax-cn   (MINIMAX_CN_API_KEY)  — MiniMax (China)\n #","@@ -2495,6 +2504,7 @@ def load_config() -> Dict[str, Any]:\n #   nous         (OAuth — hermes auth) — Nous Portal\n #   zai          (ZAI_API_KEY)         — Z.AI / GLM\n #   kimi-coding  (KIMI_API_KEY)        — Kimi / Moonshot\n+#   kimi-coding-cn (KIMI_CN_API_KEY)   — Kimi / Moonshot (China)\n #   minimax      (MINIMAX_API_KEY)     — MiniMax\n #   minimax-cn   (MINIMAX_CN_API_KEY)  — MiniMax (China)\n #"]},{"file":"hermes_cli/doctor.py","hunks":["@@ -721,6 +721,7 @@ def run_doctor(args):\n     _apikey_providers = [\n         (\"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),\n         (\"Kimi / Moonshot\",  (\"KIMI_API_KEY\",),                              \"https://api.moonshot.ai/v1/models\",   \"KIMI_BASE_URL\", True),\n+        (\"Kimi / Moonshot (China)\", (\"KIMI_CN_API_KEY\",),                    \"https://api.moonshot.cn/v1/models\",   None, True),\n         (\"DeepSeek\",         (\"DEEPSEEK_API_KEY\",),                           \"https://api.deepseek.com/v1/models\",  \"DEEPSEEK_BASE_URL\", True),\n         (\"Hugging Face\",     (\"HF_TOKEN\",),                                   \"https://router.huggingface.co/v1/models\", \"HF_BASE_URL\", True),\n         (\"Alibaba/DashScope\", (\"DASHSCOPE_API_KEY\",),                         \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1/models\", \"DASHSCOPE_BASE_URL\", True),"]},{"file":"hermes_cli/main.py","hunks":["@@ -1045,6 +1045,7 @@ def select_provider_and_model(args=None):\n         \"gemini\": \"Google AI Studio\",\n         \"zai\": \"Z.AI / GLM\",\n         \"kimi-coding\": \"Kimi / Moonshot\",\n+        \"kimi-coding-cn\": \"Kimi / Moonshot (China)\",\n         \"minimax\": \"MiniMax\",\n         \"minimax-cn\": \"MiniMax (China)\",\n         \"opencode-zen\": \"OpenCode Zen\",","@@ -1079,6 +1080,7 @@ def select_provider_and_model(args=None):\n         (\"gemini\", \"Google AI Studio (Gemini models — OpenAI-compatible endpoint)\"),\n         (\"zai\", \"Z.AI / GLM (Zhipu AI direct API)\"),\n         (\"kimi-coding\", \"Kimi / Moonshot (Moonshot AI direct API)\"),\n+        (\"kimi-coding-cn\", \"Kimi / Moonshot China (Moonshot CN direct API)\"),\n         (\"minimax\", \"MiniMax (global direct API)\"),\n         (\"minimax-cn\", \"MiniMax China (domestic direct API)\"),\n         (\"kilocode\", \"Kilo Code (Kilo Gateway API)\"),","@@ -1205,7 +1207,7 @@ def _named_custom_provider_map(cfg) -> dict[str, dict[str, str]]:\n         _model_flow_anthropic(config, current_model)\n     elif selected_provider == \"kimi-coding\":\n         _model_flow_kimi(config, current_model)\n-    elif selected_provider in (\"gemini\", \"zai\", \"minimax\", \"minimax-cn\", \"kilocode\", \"opencode-zen\", \"opencode-go\", \"ai-gateway\", \"alibaba\", \"huggingface\", \"xiaomi\"):\n+    elif selected_provider in (\"gemini\", \"zai\", \"kimi-coding-cn\", \"minimax\", \"minimax-cn\", \"kilocode\", \"opencode-zen\", \"opencode-go\", \"ai-gateway\", \"alibaba\", \"huggingface\", \"xiaomi\"):\n         _model_flow_api_key_provider(config, selected_provider, current_model)\n \n     # ── Post-switch cleanup: clear stale OPENAI_BASE_URL ──────────────","@@ -4626,7 +4628,7 @@ def main():\n     )\n     chat_parser.add_argument(\n         \"--provider\",\n-        choices=[\"auto\", \"openrouter\", \"nous\", \"openai-codex\", \"copilot-acp\", \"copilot\", \"anthropic\", \"gemini\", \"huggingface\", \"zai\", \"kimi-coding\", \"minimax\", \"minimax-cn\", \"kilocode\", \"xiaomi\"],\n+        choices=[\"auto\", \"openrouter\", \"nous\", \"openai-codex\", \"copilot-acp\", \"copilot\", \"anthropic\", \"gemini\", \"huggingface\", \"zai\", \"kimi-coding\", \"kimi-coding-cn\", \"minimax\", \"minimax-cn\", \"kilocode\", \"xiaomi\"],\n         default=None,\n         help=\"Inference provider (default: auto)\"\n     )"]},{"file":"hermes_cli/model_normalize.py","hunks":["@@ -88,6 +88,7 @@\n _MATCHING_PREFIX_STRIP_PROVIDERS: frozenset[str] = frozenset({\n     \"zai\",\n     \"kimi-coding\",\n+    \"kimi-coding-cn\",\n     \"minimax\",\n     \"minimax-cn\",\n     \"alibaba\","]},{"file":"hermes_cli/models.py","hunks":["@@ -158,6 +158,12 @@ def _codex_curated_models() -> list[str]:\n         \"kimi-k2-turbo-preview\",\n         \"kimi-k2-0905-preview\",\n     ],\n+    \"kimi-coding-cn\": [\n+        \"kimi-k2.5\",\n+        \"kimi-k2-thinking\",\n+        \"kimi-k2-turbo-preview\",\n+        \"kimi-k2-0905-preview\",\n+    ],\n     \"moonshot\": [\n         \"kimi-k2.5\",\n         \"kimi-k2-thinking\",","@@ -488,6 +494,7 @@ def check_nous_free_tier() -> bool:\n     \"gemini\": \"Google AI Studio\",\n     \"zai\": \"Z.AI / GLM\",\n     \"kimi-coding\": \"Kimi / Moonshot\",\n+    \"kimi-coding-cn\": \"Kimi / Moonshot (China)\",\n     \"minimax\": \"MiniMax\",\n     \"minimax-cn\": \"MiniMax (China)\",\n     \"anthropic\": \"Anthropic\",","@@ -519,6 +526,8 @@ def check_nous_free_tier() -> bool:\n     \"google-ai-studio\": \"gemini\",\n     \"kimi\": \"kimi-coding\",\n     \"moonshot\": \"kimi-coding\",\n+    \"kimi-cn\": \"kimi-coding-cn\",\n+    \"moonshot-cn\": \"kimi-coding-cn\",\n     \"minimax-china\": \"minimax-cn\",\n     \"minimax_cn\": \"minimax-cn\",\n     \"claude\": \"anthropic\",","@@ -841,7 +850,7 @@ def list_available_providers() -> list[dict[str, str]]:\n     _PROVIDER_ORDER = [\n         \"openrouter\", \"nous\", \"openai-codex\", \"copilot\", \"copilot-acp\",\n         \"gemini\", \"huggingface\",\n-        \"zai\", \"kimi-coding\", \"minimax\", \"minimax-cn\", \"kilocode\", \"anthropic\", \"alibaba\",\n+        \"zai\", \"kimi-coding\", \"kimi-coding-cn\", \"minimax\", \"minimax-cn\", \"kilocode\", \"anthropic\", \"alibaba\",\n         \"qwen-oauth\", \"xiaomi\",\n         \"opencode-zen\", \"opencode-go\",\n         \"ai-gateway\", \"deepseek\", \"custom\","]},{"file":"hermes_cli/providers.py","hunks":["@@ -179,6 +179,7 @@ class ProviderDef:\n     # kimi-for-coding (models.dev ID)\n     \"kimi\": \"kimi-for-coding\",\n     \"kimi-coding\": \"kimi-for-coding\",\n+    \"kimi-coding-cn\": \"kimi-for-coding\",\n     \"moonshot\": \"kimi-for-coding\",\n \n     # minimax-cn"]},{"file":"hermes_cli/runtime_provider.py","hunks":["@@ -608,7 +608,7 @@ def _resolve_explicit_runtime(\n \n         base_url = explicit_base_url\n         if not base_url:\n-            if provider == \"kimi-coding\":\n+            if provider in (\"kimi-coding\", \"kimi-coding-cn\"):\n                 creds = resolve_api_key_provider_credentials(provider)\n                 base_url = creds.get(\"base_url\", \"\").rstrip(\"/\")\n             else:"]},{"file":"hermes_cli/setup.py","hunks":["@@ -106,6 +106,7 @@ def _supports_same_provider_pool_setup(provider: str) -> bool:\n     ],\n     \"zai\": [\"glm-5.1\", \"glm-5\", \"glm-4.7\", \"glm-4.5\", \"glm-4.5-flash\"],\n     \"kimi-coding\": [\"kimi-k2.5\", \"kimi-k2-thinking\", \"kimi-k2-turbo-preview\"],\n+    \"kimi-coding-cn\": [\"kimi-k2.5\", \"kimi-k2-thinking\", \"kimi-k2-turbo-preview\"],\n     \"minimax\": [\"MiniMax-M2.7\", \"MiniMax-M2.5\", \"MiniMax-M2.1\", \"MiniMax-M2\"],\n     \"minimax-cn\": [\"MiniMax-M2.7\", \"MiniMax-M2.5\", \"MiniMax-M2.1\", \"MiniMax-M2\"],\n     \"ai-gateway\": [\"anthropic/claude-opus-4.6\", \"anthropic/claude-sonnet-4.6\", \"openai/gpt-5\", \"google/gemini-3-flash\"],","@@ -815,6 +816,7 @@ def setup_model_provider(config: dict, *, quick: bool = False):\n             \"copilot-acp\": \"GitHub Copilot ACP\",\n             \"zai\": \"Z.AI / GLM\",\n             \"kimi-coding\": \"Kimi / Moonshot\",\n+            \"kimi-coding-cn\": \"Kimi / Moonshot (China)\",\n             \"minimax\": \"MiniMax\",\n             \"minimax-cn\": \"MiniMax CN\",\n             \"anthropic\": \"Anthropic\","]},{"file":"trajectory_compressor.py","hunks":["@@ -415,7 +415,7 @@ def _detect_provider(self) -> str:\n             return \"codex\"\n         if \"api.z.ai\" in url:\n             return \"zai\"\n-        if \"moonshot.ai\" in url or \"api.kimi.com\" in url:\n+        if \"moonshot.ai\" in url or \"moonshot.cn\" in url or \"api.kimi.com\" in url:\n             return \"kimi-coding\"\n         if \"minimaxi.com\" in url:\n             return \"minimax-cn\""]},{"file":"website/docs/getting-started/quickstart.md","hunks":["@@ -51,6 +51,7 @@ hermes setup       # Or configure everything at once\n | **OpenRouter** | Multi-provider routing across many models | Enter your API key |\n | **Z.AI** | GLM / Zhipu-hosted models | Set `GLM_API_KEY` / `ZAI_API_KEY` |\n | **Kimi / Moonshot** | Moonshot-hosted coding and chat models | Set `KIMI_API_KEY` |\n+| **Kimi / Moonshot China** | China-region Moonshot endpoint | Set `KIMI_CN_API_KEY` |\n | **MiniMax** | International MiniMax endpoint | Set `MINIMAX_API_KEY` |\n | **MiniMax China** | China-region MiniMax endpoint | Set `MINIMAX_CN_API_KEY` |\n | **Alibaba Cloud** | Qwen models via DashScope | Set `DASHSCOPE_API_KEY` |"]},{"file":"website/docs/integrations/providers.md","hunks":["@@ -23,6 +23,7 @@ You need at least one way to connect to an LLM. Use `hermes model` to switch pro\n | **AI Gateway** | `AI_GATEWAY_API_KEY` in `~/.hermes/.env` (provider: `ai-gateway`) |\n | **z.ai / GLM** | `GLM_API_KEY` in `~/.hermes/.env` (provider: `zai`) |\n | **Kimi / Moonshot** | `KIMI_API_KEY` in `~/.hermes/.env` (provider: `kimi-coding`) |\n+| **Kimi / Moonshot (China)** | `KIMI_CN_API_KEY` in `~/.hermes/.env` (provider: `kimi-coding-cn`; aliases: `kimi-cn`, `moonshot-cn`) |\n | **MiniMax** | `MINIMAX_API_KEY` in `~/.hermes/.env` (provider: `minimax`) |\n | **MiniMax China** | `MINIMAX_CN_API_KEY` in `~/.hermes/.env` (provider: `minimax-cn`) |\n | **Alibaba Cloud** | `DASHSCOPE_API_KEY` in `~/.hermes/.env` (provider: `alibaba`, aliases: `dashscope`, `qwen`) |","@@ -143,10 +144,14 @@ These providers have built-in support with dedicated provider IDs. Set the API k\n hermes chat --provider zai --model glm-5\n # Requires: GLM_API_KEY in ~/.hermes/.env\n \n-# Kimi / Moonshot AI\n+# Kimi / Moonshot AI (international: api.moonshot.ai)\n hermes chat --provider kimi-coding --model kimi-for-coding\n # Requires: KIMI_API_KEY in ~/.hermes/.env\n \n+# Kimi / Moonshot AI (China: api.moonshot.cn)\n+hermes chat --provider kimi-coding-cn --model kimi-k2.5\n+# Requires: KIMI_CN_API_KEY in ~/.hermes/.env\n+\n # MiniMax (global endpoint)\n hermes chat --provider minimax --model MiniMax-M2.7\n # Requires: MINIMAX_API_KEY in ~/.hermes/.env","@@ -167,7 +172,7 @@ hermes chat --provider xiaomi --model mimo-v2-pro\n Or set the provider permanently in `config.yaml`:\n ```yaml\n model:\n-  provider: \"zai\"       # or: kimi-coding, minimax, minimax-cn, alibaba, xiaomi\n+  provider: \"zai\"       # or: kimi-coding, kimi-coding-cn, minimax, minimax-cn, alibaba, xiaomi\n   default: \"glm-5\"\n ```\n ","@@ -854,7 +859,7 @@ You can also select named custom providers from the interactive `hermes model` m\n | **Cost optimization** | ClawRouter or OpenRouter with `sort: \"price\"` |\n | **Maximum privacy** | Ollama, vLLM, or llama.cpp (fully local) |\n | **Enterprise / Azure** | Azure OpenAI with custom endpoint |\n-| **Chinese AI models** | z.ai (GLM), Kimi/Moonshot, MiniMax, or Xiaomi MiMo (first-class providers) |\n+| **Chinese AI models** | z.ai (GLM), Kimi/Moonshot (`kimi-coding` or `kimi-coding-cn`), MiniMax, or Xiaomi MiMo (first-class providers) |\n \n :::tip\n You can switch between providers at any time with `hermes model` — no restart required. Your conversation history, memory, and skills carry over regardless of which provider you use.","@@ -929,7 +934,7 @@ fallback_model:\n \n When activated, the fallback swaps the model and provider mid-session without losing your conversation. It fires **at most once** per session.\n \n-Supported providers: `openrouter`, `nous`, `openai-codex`, `copilot`, `copilot-acp`, `anthropic`, `huggingface`, `zai`, `kimi-coding`, `minimax`, `minimax-cn`, `deepseek`, `ai-gateway`, `opencode-zen`, `opencode-go`, `kilocode`, `xiaomi`, `alibaba`, `custom`.\n+Supported providers: `openrouter`, `nous`, `openai-codex`, `copilot`, `copilot-acp`, `anthropic`, `huggingface`, `zai`, `kimi-coding`, `kimi-coding-cn`, `minimax`, `minimax-cn`, `deepseek`, `ai-gateway`, `opencode-zen`, `opencode-go`, `kilocode`, `xiaomi`, `alibaba`, `custom`.\n \n :::tip\n Fallback is configured exclusively through `config.yaml` — there are no environment variables for it. For full details on when it triggers, supported providers, and how it interacts with auxiliary tasks and delegation, see [Fallback Providers](/docs/user-guide/features/fallback-providers)."]},{"file":"website/docs/reference/environment-variables.md","hunks":["@@ -31,6 +31,7 @@ All variables go in `~/.hermes/.env`. You can also set them with `hermes config\n | `GLM_BASE_URL` | Override z.ai base URL (default: `https://api.z.ai/api/paas/v4`) |\n | `KIMI_API_KEY` | Kimi / Moonshot AI API key ([moonshot.ai](https://platform.moonshot.ai)) |\n | `KIMI_BASE_URL` | Override Kimi base URL (default: `https://api.moonshot.ai/v1`) |\n+| `KIMI_CN_API_KEY` | Kimi / Moonshot China API key ([moonshot.cn](https://platform.moonshot.cn)) |\n | `MINIMAX_API_KEY` | MiniMax API key — global endpoint ([minimax.io](https://www.minimax.io)) |\n | `MINIMAX_BASE_URL` | Override MiniMax base URL (default: `https://api.minimax.io/v1`) |\n | `MINIMAX_CN_API_KEY` | MiniMax API key — China endpoint ([minimaxi.com](https://www.minimaxi.com)) |","@@ -67,7 +68,7 @@ For native Anthropic auth, Hermes prefers Claude Code's own credential files whe\n \n | Variable | Description |\n |----------|-------------|\n-| `HERMES_INFERENCE_PROVIDER` | Override provider selection: `auto`, `openrouter`, `nous`, `openai-codex`, `copilot`, `copilot-acp`, `anthropic`, `huggingface`, `zai`, `kimi-coding`, `minimax`, `minimax-cn`, `kilocode`, `xiaomi`, `alibaba`, `deepseek`, `opencode-zen`, `opencode-go`, `ai-gateway` (default: `auto`) |\n+| `HERMES_INFERENCE_PROVIDER` | Override provider selection: `auto`, `openrouter`, `nous`, `openai-codex`, `copilot`, `copilot-acp`, `anthropic`, `huggingface`, `zai`, `kimi-coding`, `kimi-coding-cn`, `minimax`, `minimax-cn`, `kilocode`, `xiaomi`, `alibaba`, `deepseek`, `opencode-zen`, `opencode-go`, `ai-gateway` (default: `auto`) |\n | `HERMES_PORTAL_BASE_URL` | Override Nous Portal URL (for development/testing) |\n | `NOUS_INFERENCE_BASE_URL` | Override Nous inference API URL |\n | `HERMES_NOUS_MIN_KEY_TTL_SECONDS` | Min agent key TTL before re-mint (default: 1800 = 30min) |"]},{"file":"website/docs/user-guide/configuration.md","hunks":["@@ -601,7 +601,7 @@ Every model slot in Hermes — auxiliary tasks, compression, fallback — uses t\n \n When `base_url` is set, Hermes ignores the provider and calls that endpoint directly (using `api_key` or `OPENAI_API_KEY` for auth). When only `provider` is set, Hermes uses that provider's built-in auth and base URL.\n \n-Available providers for auxiliary tasks: `auto`, `openrouter`, `nous`, `codex`, `copilot`, `anthropic`, `main`, `zai`, `kimi-coding`, `minimax`, any provider registered in the [provider registry](/docs/reference/environment-variables), or any named custom provider from your `custom_providers` list (e.g. `provider: \"beans\"`).\n+Available providers for auxiliary tasks: `auto`, `openrouter`, `nous`, `codex`, `copilot`, `anthropic`, `main`, `zai`, `kimi-coding`, `kimi-coding-cn`, `minimax`, any provider registered in the [provider registry](/docs/reference/environment-variables), or any named custom provider from your `custom_providers` list (e.g. `provider: \"beans\"`).\n \n :::warning `\"main\"` is for auxiliary tasks only\n The `\"main\"` provider option means \"use whatever provider my main agent uses\" — it's only valid inside `auxiliary:`, `compression:`, and `fallback_model:` configs. It is **not** a valid value for your top-level `model.provider` setting. If you use a custom OpenAI-compatible endpoint, set `provider: custom` in your `model:` section. See [AI Providers](/docs/integrations/providers) for all main model provider options.\n"]}]}],"trust":{"default_tier":"verified","includes_suggested":false}}