Provider Routing
توجيه الطلبات بين المزوّدين
What this page is, and what it holds.
This page covers Provider Routing. About 4 minutes to read. The priciest model is not always best for your task. Compare on one task and set a spend cap.
Configure OpenRouter or Nous Portal provider preferences to optimize for cost, speed, or quality.
Outcomes taken from this page, not a template.
- Understand what المزوّد والنموذج is and when you need it.
- Read the table and take only the row that applies to you.
- Know the common mistake before you hit it.
Jump to the part you need.
Nothing summarised away.
The documentation body below is reproduced from the official source so commands and identifiers stay exact. Each section carries a short note describing what it contains.
When using OpenRouter ↗ or Nous Portal as your LLM provider, Hermes Agent supports provider routing — fine-grained control over which underlying AI providers handle your requests and how they're prioritized.
OpenRouter routes requests to many providers (e.g., Anthropic, Google, AWS Bedrock, Together AI). Provider routing lets you optimize for cost, speed, quality, or enforce specific provider requirements.
Configuration
Settings you configure once. Change one at a time so you can see what each does.
Add a provider_routing section to your ~/.hermes/config.yaml:
provider_routing:
sort: "price" # How to rank providers
only: [] # Whitelist: only use these providers
ignore: [] # Blacklist: never use these providers
order: [] # Explicit provider priority order
require_parameters: false # Only use providers that support all parameters
data_collection: null # Control data collection ("allow" or "deny")Options
Settings you configure once. Change one at a time so you can see what each does.
sort
Controls how OpenRouter ranks available providers for your request.
| Value | Description |
|---|---|
"price" | Cheapest provider first |
"throughput" | Fastest tokens-per-second first |
"latency" | Lowest time-to-first-token first |
provider_routing:
sort: "price"only
Whitelist of provider slugs. When set, only these providers will be used. All others are excluded. Use the lowercase slug shown by OpenRouter for each provider.
provider_routing:
only:
- "anthropic"
- "google"ignore
Blacklist of provider names. These providers will never be used, even if they offer the cheapest or fastest option.
provider_routing:
ignore:
- "together"
- "deepinfra"order
Explicit priority order. Providers listed first are preferred. Unlisted providers are used as fallbacks.
provider_routing:
order:
- "anthropic"
- "google"
- "amazon-bedrock"requireparameters
When true, OpenRouter will only route to providers that support all parameters in your request (like temperature, top_p, tools, etc.). This avoids silent parameter drops.
provider_routing:
require_parameters: truedatacollection
Controls whether providers can use your prompts for training. Options are "allow" or "deny".
provider_routing:
data_collection: "deny"Practical Examples
Settings you configure once. Change one at a time so you can see what each does.
Optimize for Cost
Route to the cheapest available provider. Good for high-volume usage and development:
provider_routing:
sort: "price"Optimize for Speed
Prioritize low-latency providers for interactive use:
provider_routing:
sort: "latency"Optimize for Throughput
Best for long-form generation where tokens-per-second matters:
provider_routing:
sort: "throughput"Lock to Specific Providers
Ensure all requests go through a specific provider for consistency:
provider_routing:
only:
- "anthropic"Avoid Specific Providers
Exclude providers you don't want to use (e.g., for data privacy):
provider_routing:
ignore:
- "together"
- "lepton"
data_collection: "deny"Preferred Order with Fallbacks
Try your preferred providers first, fall back to others if unavailable:
provider_routing:
order:
- "anthropic"
- "google"
require_parameters: trueHow It Works
Settings you configure once. Change one at a time so you can see what each does.
Provider routing preferences are passed to OpenRouter or Nous Portal on agent chat requests and iteration-limit summaries via the extra_body.provider field. (extra_body is the OpenAI Python SDK argument; it becomes the top-level provider object in the JSON request.) Auxiliary tasks such as compression and title generation are configured independently under auxiliary.<task>.extra_body.
- CLI mode — configured in
~/.hermes/config.yaml, loaded at startup - Gateway mode — same config file, loaded when the gateway starts
The routing config is read from config.yaml and passed as parameters when creating the AIAgent:
providers_allowed ← from provider_routing.only
providers_ignored ← from provider_routing.ignore
providers_order ← from provider_routing.order
provider_sort ← from provider_routing.sort
provider_require_parameters ← from provider_routing.require_parameters
provider_data_collection ← from provider_routing.data_collectionDefault Behavior
Explains the idea itself. Read it slowly; the later sections build on it.
When no provider_routing section is configured (the default), the aggregator uses its own default routing logic, which generally balances cost and availability automatically.
3 questions answered by this page alone.
Every option is a real identifier from the Hermes documentation. The wrong ones are real too, just from other pages.