Skip to content

Hermes Router

One endpoint. Multiple AI providers. Automatic failover.
OPEN SOURCESELF-HOSTEDPROVIDER-AGNOSTIC

Self-hosted OpenAI/Anthropic-compatible AI gateway with smart routing, key rotation, local-model fallback, tool/vision-aware routing, caching, budgets, and observability.

HERMES // CONTROL PLANElocalhost:8319/dashboard● ONLINE
REQUESTS ROUTED12,804↑ 18.6% / 24H
SUCCESS RATE99.98%HEALTHY
P95 LATENCY284ms− 31ms

LIVE 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 38ms

Scope: 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.