Skip to main content

Overview

The Model Router is responsible for transforming incoming model requests from various API formats (OpenAI, Anthropic, Gemini) into the appropriate upstream format and vice versa.

Key Responsibilities

  1. Model ID Mapping - Transform client model IDs to upstream IDs
  2. Protocol Conversion - Convert request/response between formats
  3. Dynamic Forwarding - Route deprecated models to new ones
  4. Parameter Adaptation - Adjust parameters for upstream compatibility

Model Mapping System

Location: src-tauri/src/proxy/common/model_mapping.rs

Standard ID Normalization

Custom Mapping

Users can define custom model ID mappings in the configuration:
Example Configuration:

Dynamic Forwarding Rules

Purpose: Automatically redirect deprecated models to new ones Location: src-tauri/src/proxy/token_manager.rs:511
Global Forwarding Table:

Protocol Conversion

Request Flow

OpenAI → Gemini Conversion

Location: src-tauri/src/proxy/handlers/openai.rs

Gemini → OpenAI Conversion

Claude → Gemini Conversion

Location: src-tauri/src/proxy/handlers/claude.rs

Streaming Response Handling

SSE Stream Conversion

OpenAI Streaming:

Image Generation Model Routing

Size and Quality Mapping

Location: src-tauri/src/proxy/handlers/openai.rs

Model Suffix Parsing

Parameter Adaptation

Thinking Mode Conversion

Anthropic Thinking Level → Gemini Budget:

Token Limit Enforcement

Location: src-tauri/src/proxy/token_manager.rs:500
Clamping at request time:

Request Routing Decision Tree

Error Handling

Model Not Found

Fallback Chain

Summary

The Model Router provides:
  • Multi-protocol support - OpenAI, Anthropic, Gemini
  • Flexible mapping - Custom + dynamic forwarding
  • Protocol conversion - Bidirectional transformation
  • Parameter adaptation - Enforce model-specific limits
  • Streaming support - SSE conversion for all protocols
Related Documentation: