Automatic failover
Key rotation and provider failover keep trying while another configured candidate is available.
Self-hosted OpenAI/Anthropic-compatible AI gateway with smart routing, key rotation, local-model fallback, tool/vision-aware routing, caching, budgets, and observability.
curl -fsSL https://raw.githubusercontent.com/Shaf2665/Hermes-router/main/get.sh | bashLIVE ROUTE LOGDEMO DATA
200 /v1/chat/completions gemini-2.5-flash 184ms200 /v1/messages openrouter/claude 291ms↻ provider retry groq → codex 422ms200 /v1/embeddings ollama/local 38msScope: Hermes Router handles AI inference routing. Applications and agent frameworks such as Hall of Wisdom, Copilot, or custom clients remain responsible for tools, filesystem access, command execution, memory, and task orchestration.
Automatic failover
Key rotation and provider failover keep trying while another configured candidate is available.
Smart model routing
Routes to the best-fitting configured model, including multiple models per provider.
Tool + vision aware
Prefers models capable of function calling or image input; Hermes transports tool calls but never executes them.
Local + cloud routing
Use Ollama or LM Studio locally, with cloud providers as automatic fallback.
Quota + cost control
Response, semantic, and persistent caching plus per-key rate limits, budgets, and estimated cost tracking.
Dashboard + observability
Built-in dashboard, request logs, circuit breaker, Prometheus metrics, and multi-instance management.
OpenAI + Anthropic compatible
Compatible chat, streaming, embeddings, and Messages APIs, including Codex provider support.
Self-hosted + VS Code
Run it yourself and use the provider pool from the VS Code extension or Copilot Chat.
Already comfortable? Jump to How it works for internals or explore the full documentation in the sidebar.
from openai import OpenAI
client = OpenAI(base_url="http://localhost:8319/v1", api_key="YOUR_ROUTER_KEY")resp = client.chat.completions.create( model="hermes-router", messages=[{"role": "user", "content": "Hello!"}],)print(resp.choices[0].message.content)On Windows or hosting in the cloud? See Deployment.