Hermes Agent is an open-source, terminal-native autonomous coding and task agent built by Nous Research. It features persistent memory, agent-created skills, and a messaging gateway that supports 21+ platforms including Telegram, Discord, Slack, WhatsApp, Signal, SMS, Matrix, and more.
Hermes runs on local, Docker, SSH, Daytona, Modal, Vercel Sandbox, or Singularity backends and works with multiple LLM providers — including OpenRouter for multi-model access through a single API key.
The easiest way to configure Hermes with OpenRouter:
Select OpenRouter from the provider list, enter your API key, and choose your preferred model. This is the recommended approach for new users.
If you already have your OpenRouter API key:
Then start a chat:
Advanced users only: The following manual configuration is for users who need to edit config files directly. For most users, we recommend using hermes model above.
sk-or-...)Add your OpenRouter API key to ~/.hermes/.env:
Hermes separates secrets from non-secret settings. API keys go in ~/.hermes/.env, while model and provider configuration goes in ~/.hermes/config.yaml.
Edit ~/.hermes/config.yaml:
Browse all available models at openrouter.ai/models.
Your agent will now route all requests through OpenRouter to your chosen model.
When using OpenRouter as a provider, Hermes uses the standard OpenRouter model format <author>/<slug> (optionally prefixed with ~ for the latest version in a family):
~anthropic/claude-sonnet-latest~google/gemini-flash-latestdeepseek/deepseek-chatopenrouter/auto (auto-routes to an optimal/best-fit model for your prompt)You can find the exact model ID for each model on the OpenRouter models page.
OpenRouter routes your requests across multiple infrastructure providers for each model. You can control this routing behavior in ~/.hermes/config.yaml:
Shortcuts: Append :nitro to any model name for throughput sorting (e.g., ~anthropic/claude-sonnet-latest:nitro), or :floor for price sorting.
For a full breakdown of routing options, see the Provider Routing docs.
Configure a chain of backup providers Hermes tries when the primary model fails:
This provides an additional layer of reliability. When activated, the fallback swaps the model mid-session without losing your conversation.
Hermes uses “auxiliary models” for side tasks like context compression, vision analysis, session titles, and web summarization. By default these use your main model, but you can route them to cheaper models via OpenRouter:
This keeps your main model focused on complex reasoning while cheaper models handle lightweight tasks.
OpenRouter’s experimental coding-model router auto-routes requests to the cheapest model meeting a coding-quality threshold. Configure it in ~/.hermes/config.yaml:
This is useful for cost optimization on coding tasks — the router picks the cheapest model that meets your quality bar.
Hermes uses its own openrouter: config key to set min_coding_score. This maps to the plugins array in the OpenRouter API — you don’t need to construct the plugins payload yourself.
Track your Hermes usage in real-time:
Hermes can’t find your OpenRouter API key.
Fix:
cat ~/.hermes/.env | grep OPENROUTERhermes config set OPENROUTER_API_KEY sk-or-...hermes modelFix:
Fix:
<author>/<slug>, optionally prefixed with ~ for the latest version in a family (e.g., ~anthropic/claude-sonnet-latest)Hermes requires a model with at least 64K context tokens. Models with smaller context windows will be rejected at startup, since the system prompt and tool schemas can fill smaller windows and leave no room for conversation. If you see context-related errors, switch to a model with a larger context window.