OmniRoute Route Optimization Algorithms: How the Auto-Combo Engine Balances AI Traffic
OmniRoute uses 16 configurable routing strategies—including priority, weighted, power-of-two-choices (p2c), cost-optimized, and context-aware algorithms—to optimize traffic distribution, minimize latency, and balance load across AI providers.
The open-source OmniRoute repository (diegosouzapw/OmniRoute) implements a sophisticated auto-combo engine that dynamically selects the optimal provider-model target for each request. These route optimization algorithms are defined in src/shared/constants/routingStrategies.ts and validated through Zod schemas, giving operators granular control over traffic routing, cost management, and fault tolerance.
Core Routing Strategies Explained
OmniRoute organizes its routing logic into three distinct categories. Each strategy implements a specific optimization goal, from simple load balancing to complex cost minimization.
User-Facing Strategies
The primary route optimization algorithms exposed through the UI and API include sixteen distinct strategies:
priority– Walks the target list sequentially until a healthy provider succeeds.weighted– Distributes traffic proportionally based on static weights defined in the combo configuration.fill-first– Saturates the first healthy target before moving to the next.round-robin– Evenly rotates across all available targets.p2c(Power-of-Two-Choices) – Randomly selects two candidates and picks the less loaded option.random– Selects targets using simple uniform randomness.least-used– Routes to the provider with the lowest current request count.reset-awareandreset-window– Respect provider rate-limit reset windows to avoid throttling.cost-optimized– Minimizes monetary spend by selecting the cheapest viable option viasrc/lib/pricingSync.ts.strict-random– Enforces cryptographic randomness without fallbacks.auto– Delegates strategy selection to the system based on runtime metrics.lkgp(Last-Known-Good-Provider) – Falls back to the most recently successful provider.context-optimizedandcontext-relay– Optimize for token-count limits and context window availability.headroom– Preserves token capacity for future requests.fusion– Combines multiple criteria into a weighted scoring function.
Internal and Auto-Routing Strategies
Beyond the user-facing set, OmniRoute implements quota-share for internal use. This algorithm distributes a global quota among multiple combos, automatically throttling traffic when the quota exhausts.
When a combo's strategy is set to auto, the engine dynamically selects from the full user-facing strategy set based on real-time telemetry and combo configuration.
How the Routing Engine Executes Algorithms
Understanding the execution flow reveals how these abstract algorithms translate into routing decisions.
Combo Resolution Process
Each combo represents an ordered list of provider-model targets. When a request arrives, the engine first invokes resolveComboTargets in open-sse/services/combo.ts to expand the combo into a concrete ResolvedComboTarget[] array.
The system then applies the selected route optimization algorithm to this array:
- Combo resolution – Validates targets and health status.
- Strategy execution – Applies the specific algorithm logic.
- Fallback handling – Retries with the next candidate if the selected target fails.
Algorithm Execution Examples
Different strategies implement distinct selection mechanisms:
- Priority and Fill-First use deterministic iteration through the target array.
- P2C probes load metrics for two random candidates before selecting the lighter load.
- Cost-Optimized queries pricing data to find the minimum-cost viable provider.
- Context-Optimized evaluates current token usage against model limits to prevent context-window exhaustion.
Implementing Route Optimization in Code
Configure these algorithms when creating or updating combos via the database layer.
Creating a Cost-Optimized Combo
import { createCombo, updateCombo } from '@/src/lib/db/combos.ts';
import { ROUTING_STRATEGY_VALUES } from '@/src/shared/constants/routingStrategies';
// Create a combo that minimizes costs
await createCombo({
name: 'cheap-combo',
strategy: 'cost-optimized' as typeof ROUTING_STRATEGY_VALUES[number],
targets: [
{ providerId: 'openai', modelId: 'gpt-4o-mini' },
{ providerId: 'anthropic', modelId: 'claude-3-5-sonnet' },
],
});
Switching to Load-Balanced Routing
// Switch to p2c for better load distribution
await updateCombo('cheap-combo', {
strategy: 'p2c' as typeof ROUTING_STRATEGY_VALUES[number],
});
Handling Requests with Optimized Routing
When processing chat completions, the route handler delegates to the combo service:
import { handleComboChat } from '@omniroute/open-sse/services/combo';
// Inside a Next.js API route
const response = await handleComboChat({
comboId: 'cheap-combo',
body: requestBody,
// authentication and abort signals omitted for brevity
});
The handleComboChat function reads the strategy field from the combo configuration stored in src/lib/db/combos.ts, validates it against the Zod schema in src/shared/validation/schemas/combo.ts, and executes the corresponding algorithm logic.
Key Source Files for Route Optimization
| File | Purpose |
|---|---|
src/shared/constants/routingStrategies.ts |
Declares all strategy identifiers (ROUTING_STRATEGY_VALUES, INTERNAL_ROUTING_STRATEGY_VALUES, AUTO_ROUTING_STRATEGY_VALUES). |
open-sse/services/combo.ts |
Core routing engine; implements resolveComboTargets and strategy execution logic. |
src/shared/validation/schemas/combo.ts |
Zod schema validation for combo configurations. |
src/lib/db/combos.ts |
Database persistence layer for combo CRUD operations. |
src/sse/handlers/chat.ts |
Example API route consuming the combo service. |
Summary
- OmniRoute implements 16 distinct routing strategies ranging from simple round-robin to sophisticated cost and context optimization.
- The auto-combo engine in
open-sse/services/combo.tsresolves targets and applies the selected algorithm at request time. - Strategies are type-safe, validated through Zod schemas in
src/shared/validation/schemas/combo.ts. - Operators can mix deterministic (priority), probabilistic (p2c, random), and economic (cost-optimized) algorithms within the same deployment.
- The
autostrategy enables dynamic selection based on runtime metrics without manual configuration changes.
Frequently Asked Questions
How does OmniRoute choose between different route optimization algorithms?
OmniRoute selects algorithms based on the strategy field defined in a combo's configuration. When set to auto, the system evaluates runtime metrics—including provider health, current load, and token usage—to dynamically pick the most appropriate algorithm from the available set.
What is the difference between the p2c and least-used strategies?
p2c (Power-of-Two-Choices) randomly samples two providers and selects the less loaded one, providing probabilistic load balancing with minimal coordination overhead. least-used maintains global counters to always select the provider with the absolute lowest current request count, offering stricter distribution but requiring synchronized state.
Can I combine multiple route optimization goals in OmniRoute?
Yes. The fusion strategy allows combining multiple criteria—such as cost, latency, and token availability—into a unified scoring function. Additionally, you can implement custom logic by chaining combos or using the context-optimized strategy to balance token constraints against provider performance.
Where are the routing algorithms validated in the codebase?
All strategy identifiers are validated against the ROUTING_STRATEGY_VALUES array in src/shared/constants/routingStrategies.ts. The Zod schema in src/shared/validation/schemas/combo.ts enforces these constraints at runtime when creating or updating combos via src/lib/db/combos.ts.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →