# Providers & Model Aliases Set via `hermes model` (picker) or `hermes setup`. 35+ provider profiles ship as plugins under `plugins/model-providers/`; user plugins of the same name override. Full docs: https://hermes-agent.nousresearch.com/docs/integrations/providers ### Providers | Provider | Auth | Key env var(s) | |----------|------|----------------| | openrouter | API key | `OPENROUTER_API_KEY` | | anthropic | API key | `ANTHROPIC_API_KEY` (also `CLAUDE_CODE_OAUTH_TOKEN`) | | nous | OAuth device code | `hermes auth add nous` (or `NOUS_API_KEY`) | | openai-codex | OAuth | `hermes auth add openai-codex` | | qwen-oauth | OAuth | `hermes auth add qwen-oauth` | | minimax-oauth | OAuth | `hermes auth add minimax-oauth` | | copilot | Token | `COPILOT_GITHUB_TOKEN` / `GH_TOKEN` (Copilot device flow — `gh auth login` tokens do NOT work) | | copilot-acp | External CLI | Copilot CLI on PATH or `COPILOT_CLI_PATH` | | gemini | API key | `GOOGLE_API_KEY` or `GEMINI_API_KEY` | | xai | API key | `XAI_API_KEY` (SuperGrok OAuth also supported) | | deepseek | API key | `DEEPSEEK_API_KEY` | | zai (GLM) | API key | `GLM_API_KEY` / `ZAI_API_KEY` | | minimax / minimax-cn | API key | `MINIMAX_API_KEY` / `MINIMAX_CN_API_KEY` | | kimi-coding / -cn | API key | `KIMI_API_KEY` / `KIMI_CN_API_KEY` | | alibaba (+coding-plan) | API key | `DASHSCOPE_API_KEY` / `ALIBABA_CODING_PLAN_API_KEY` | | xiaomi | API key | `XIAOMI_API_KEY` | | huggingface | Token | `HF_TOKEN` | | fireworks / novita / nvidia / deepinfra / gmi / arcee / stepfun / upstage / kilocode / ai-gateway / opencode-zen / opencode-go / ollama-cloud | API key | `_API_KEY` | | bedrock / vertex / azure-foundry | Cloud SDK / key | AWS SDK creds / Vertex ADC / `AZURE_FOUNDRY_API_KEY` | | custom | Config | `model.base_url` + `model.api_key` in config.yaml | Multiple credentials per provider pool and rotate automatically (`hermes auth`). Fallback chain when the primary fails: `hermes fallback add|remove|list`. ### User-defined model aliases Work with `/model ` in CLI and every gateway platform. Resolved by `hermes_cli/model_switch.py::resolve_alias()`; user aliases are checked BEFORE the built-in table, so a user `sonnet`/`grok` shadows the built-in. ```yaml # Full form model_aliases: fav: model: claude-sonnet-4.6 provider: anthropic local-qwen: model: qwen3.5:397b provider: custom base_url: "https://ollama.com/v1" # Short form ("provider/model"), also via CLI: # hermes config set model.aliases.fav openrouter/anthropic/claude-sonnet-4.6 model: aliases: fav: openrouter/anthropic/claude-sonnet-4.6 ``` `/model fav` — session-scoped; add `--global` to persist as default. Built-in aliases (catalog-resolved against the active provider): `sonnet`, `opus`, `haiku`, `claude`, `gpt5`, `gpt`, `codex`, `o3`, `o4`, `gemini`, `deepseek`, `grok`, `llama`, `qwen`, `minimax`, `nemotron`, `kimi`, `glm`, `step`, `mimo`, `trinity`.