diff --git a/website/docs/integrations/providers.md b/website/docs/integrations/providers.md index a44483a005..22deca6381 100644 --- a/website/docs/integrations/providers.md +++ b/website/docs/integrations/providers.md @@ -49,6 +49,17 @@ The OpenAI Codex provider authenticates via device code (open a URL, enter a cod Even when using Nous Portal, Codex, or a custom endpoint, some tools (vision, web summarization, MoA) use a separate "auxiliary" model — by default Gemini Flash via OpenRouter. An `OPENROUTER_API_KEY` enables these tools automatically. You can also configure which model and provider these tools use — see [Auxiliary Models](/docs/user-guide/configuration#auxiliary-models). ::: +### Two Commands for Model Management + +Hermes has **two** model commands that serve different purposes: + +| Command | Where to run | What it does | +|---------|-------------|--------------| +| **`hermes model`** | Your terminal (outside any session) | Full setup wizard — add providers, run OAuth, enter API keys, configure endpoints | +| **`/model`** | Inside a Hermes chat session | Quick switch between **already-configured** providers and models | + +If you're trying to switch to a provider you haven't set up yet (e.g. you only have OpenRouter configured and want to use Anthropic), you need `hermes model`, not `/model`. Exit your session first (`Ctrl+C` or `/quit`), run `hermes model`, complete the provider setup, then start a new session. + ### Anthropic (Native) Use Claude models directly through the Anthropic API — no OpenRouter proxy needed. Supports three auth methods: @@ -252,7 +263,15 @@ Both approaches persist to `config.yaml`, which is the source of truth for model ### Switching Models with `/model` -Once a custom endpoint is configured, you can switch models mid-session: +:::warning hermes model vs /model +**`hermes model`** (run from your terminal, outside any chat session) is the **full provider setup wizard**. Use it to add new providers, run OAuth flows, enter API keys, and configure custom endpoints. + +**`/model`** (typed inside an active Hermes chat session) can only **switch between providers and models you've already set up**. It cannot add new providers, run OAuth, or prompt for API keys. If you've only configured one provider (e.g. OpenRouter), `/model` will only show models for that provider. + +**To add a new provider:** Exit your session (`Ctrl+C` or `/quit`), run `hermes model`, set up the new provider, then start a new session. +::: + +Once you have at least one custom endpoint configured, you can switch models mid-session: ``` /model custom:qwen-2.5 # Switch to a model on your custom endpoint diff --git a/website/docs/reference/cli-commands.md b/website/docs/reference/cli-commands.md index 2e054482f2..fb93cf6480 100644 --- a/website/docs/reference/cli-commands.md +++ b/website/docs/reference/cli-commands.md @@ -109,22 +109,31 @@ hermes chat --worktree -q "Review this repo and open a PR" ## `hermes model` -Interactive provider + model selector. +Interactive provider + model selector. **This is the command for adding new providers, setting up API keys, and running OAuth flows.** Run it from your terminal — not from inside an active Hermes chat session. ```bash hermes model ``` Use this when you want to: -- switch default providers -- log into OAuth-backed providers during model selection +- **add a new provider** (OpenRouter, Anthropic, Copilot, DeepSeek, custom, etc.) +- log into OAuth-backed providers (Anthropic, Copilot, Codex, Nous Portal) +- enter or update API keys - pick from provider-specific model lists - configure a custom/self-hosted endpoint - save the new default into config +:::warning hermes model vs /model — know the difference +**`hermes model`** (run from your terminal, outside any Hermes session) is the **full provider setup wizard**. It can add new providers, run OAuth flows, prompt for API keys, and configure endpoints. + +**`/model`** (typed inside an active Hermes chat session) can only **switch between providers and models you've already set up**. It cannot add new providers, run OAuth, or prompt for API keys. + +**If you need to add a new provider:** Exit your Hermes session first (`Ctrl+C` or `/quit`), then run `hermes model` from your terminal prompt. +::: + ### `/model` slash command (mid-session) -Switch models without leaving a session: +Switch between already-configured models without leaving a session: ``` /model # Show current model and available options @@ -136,6 +145,16 @@ Switch models without leaving a session: /model openrouter:anthropic/claude-sonnet-4 # Switch back to cloud ``` +By default, `/model` changes apply **to the current session only**. Add `--global` to persist the change to `config.yaml`: + +``` +/model claude-sonnet-4 --global # Switch and save as new default +``` + +:::info What if I only see OpenRouter models? +If you've only configured OpenRouter, `/model` will only show OpenRouter models. To add another provider (Anthropic, DeepSeek, Copilot, etc.), exit your session and run `hermes model` from the terminal. +::: + Provider and base URL changes are persisted to `config.yaml` automatically. When switching away from a custom endpoint, the stale base URL is cleared to prevent it leaking into other providers. ## `hermes gateway` diff --git a/website/docs/reference/faq.md b/website/docs/reference/faq.md index 6950fb1e94..c39f510b1f 100644 --- a/website/docs/reference/faq.md +++ b/website/docs/reference/faq.md @@ -187,6 +187,32 @@ curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scri ### Provider & Model Issues +#### `/model` only shows one provider / can't switch providers + +**Cause:** `/model` (inside a chat session) can only switch between providers you've **already configured**. If you've only set up OpenRouter, that's all `/model` will show. + +**Solution:** Exit your session and use `hermes model` from your terminal to add new providers: + +```bash +# Exit the Hermes chat session first (Ctrl+C or /quit) + +# Run the full provider setup wizard +hermes model + +# This lets you: add providers, run OAuth, enter API keys, configure endpoints +``` + +After adding a new provider via `hermes model`, start a new chat session — `/model` will now show all your configured providers. + +:::tip Quick reference +| Want to... | Use | +|-----------|-----| +| Add a new provider | `hermes model` (from terminal) | +| Enter/change API keys | `hermes model` (from terminal) | +| Switch model mid-session | `/model ` (inside session) | +| Switch to different configured provider | `/model provider:model` (inside session) | +::: + #### API key not working **Cause:** Key is missing, expired, incorrectly set, or for the wrong provider. diff --git a/website/docs/reference/slash-commands.md b/website/docs/reference/slash-commands.md index 8e65d81f78..2ad3c62d81 100644 --- a/website/docs/reference/slash-commands.md +++ b/website/docs/reference/slash-commands.md @@ -46,7 +46,7 @@ Type `/` in the CLI to open the autocomplete menu. Built-in commands are case-in | Command | Description | |---------|-------------| | `/config` | Show current configuration | -| `/model [model-name]` | Show or change the current model. Supports: `/model claude-sonnet-4`, `/model provider:model` (switch providers), `/model custom:model` (custom endpoint), `/model custom:name:model` (named custom provider), `/model custom` (auto-detect from endpoint). Use `--global` to persist the change to config.yaml. | +| `/model [model-name]` | Show or change the current model. Supports: `/model claude-sonnet-4`, `/model provider:model` (switch providers), `/model custom:model` (custom endpoint), `/model custom:name:model` (named custom provider), `/model custom` (auto-detect from endpoint). Use `--global` to persist the change to config.yaml. **Note:** `/model` can only switch between already-configured providers. To add a new provider, exit the session and run `hermes model` from your terminal. | | `/provider` | Show available providers and current provider | | `/personality` | Set a predefined personality | | `/verbose` | Cycle tool progress display: off → new → all → verbose. Can be [enabled for messaging](#notes) via config. | @@ -124,7 +124,7 @@ The messaging gateway supports the following built-in commands inside Telegram, | `/reset` | Reset conversation history. | | `/status` | Show session info. | | `/stop` | Kill all running background processes and interrupt the running agent. | -| `/model [provider:model]` | Show or change the model. Supports provider switches (`/model zai:glm-5`), custom endpoints (`/model custom:model`), named custom providers (`/model custom:local:qwen`), and auto-detect (`/model custom`). Use `--global` to persist the change to config.yaml. | +| `/model [provider:model]` | Show or change the model. Supports provider switches (`/model zai:glm-5`), custom endpoints (`/model custom:model`), named custom providers (`/model custom:local:qwen`), and auto-detect (`/model custom`). Use `--global` to persist the change to config.yaml. **Note:** `/model` can only switch between already-configured providers. To add a new provider or set up API keys, use `hermes model` from your terminal (outside the chat session). | | `/provider` | Show provider availability and auth status. | | `/personality [name]` | Set a personality overlay for the session. | | `/fast [normal\|fast\|status]` | Toggle fast mode — OpenAI Priority Processing / Anthropic Fast Mode. |