Skip to content

Day 2 · Pick a Brain: Model Selection and API Setup

Configure a provider and model, then send Hermes a reasoning question and get the correct answer.


Day 1 complete — the hermes command runs without errors.


Hermes has two “model commands” with completely different jobs:

CommandWhere to runWhat it does
hermes modelTerminal (outside Hermes)Full wizard: add a provider, enter API key, OAuth login, set default model
/modelInside a Hermes conversationQuick-switch between already-configured providers only — cannot add new ones

For first-time setup or adding a new provider, use hermes model. Exit your current session first (Ctrl+C or /quit), then run it in a regular terminal.


  1. Choose a provider

    Find your row:

    Your situationRecommended providerHow to configure
    Have a Kimi API keykimi-codingSet KIMI_API_KEY in .env
    Have a DeepSeek keydeepseekSet DEEPSEEK_API_KEY in .env
    Have a Qwen (Alibaba) keyalibaba (Qwen)Set DASHSCOPE_API_KEY in .env
    Have a GLM (Zhipu) keyzaiSet GLM_API_KEY in .env
    First time, want the easiest startNous Portalhermes model → OAuth
    Have an Anthropic API keyanthropichermes model → enter key
    Have ChatGPT / OpenAIopenai-codexhermes model → OAuth
    Have a GitHub Copilot subscriptioncopilothermes model → OAuth (no extra cost)
    Want to route multiple modelsOpenRouterSet OPENROUTER_API_KEY in .env
    Local private deploymentCustom endpoint (Ollama)hermes model → Custom endpoint
  2. Run the configuration wizard

    Terminal window
    hermes model

    The wizard walks you through: choose provider → enter API key (or OAuth browser login) → select default model from the list → save to config.

    Prefer writing config by hand? Use hermes config set directly:

    Terminal window
    # Example: Kimi (swap the key name and provider name for any other provider)
    hermes config set KIMI_API_KEY sk-xxx
    hermes config set model.provider kimi-coding
    hermes config set model.default kimi-for-coding
  3. Verify your config

    View the full active configuration:

    Terminal window
    hermes config

    Hermes stores everything under ~/.hermes/:

    ~/.hermes/
    ├── config.yaml ← non-secret settings (provider name, model name, feature flags, etc.)
    └── .env ← secrets (API keys, bot tokens, etc. — never commit to git)
  4. Verify: send a reasoning test

    Start Hermes:

    Terminal window
    hermes

    Send a classic decimal reasoning test:

    You: Which is larger: 9.8 or 9.11?

    Correct answer: Hermes should reply that 9.8 is larger, with reasoning (9.8 = 9.80 > 9.11).

    If the reply is empty or wrong, the API key is invalid or the model is misconfigured — see troubleshooting below.

  5. Switch models mid-conversation

    Inside a conversation, /model lets you quickly switch between configured providers and models:

    You: /model

    Add --global to persist the switch to config.yaml; without it, the switch lasts only for the current session:

    You: /model deepseek/deepseek-chat --global

    Check current token usage:

    You: /usage


After this chapter, hermes config shows your provider and model, and Hermes answers the reasoning test correctly:

$ hermes config
Provider: kimi-coding
Model: kimi-for-coding
Status: ✓ Connected
$ hermes
You: Which is larger: 9.8 or 9.11?
Hermes: 9.8 is larger. Since 9.8 = 9.80 and 9.11 = 9.11, we have 9.80 > 9.11.