How wei-shaw/claude-relay-service works
Claude Relay Service is a self-hosted, multi-account API relay with API-key access control and a web administration interface. The main workflow is: a client sends an authenticated model request; a provider route selects an eligible account; the relay contacts the upstream service and returns the response. Operators manage accounts and keys and inspect usage through the admin interface. The README documents additional provider and compatibility paths; sampled source confirms selected Gemini and OpenAI flows, but not every route-to-relay connection.
Main entry points: redis.js Redis state · app.js HTTP application · openaiRoutes.js OpenAI routes · claudeRelayService.js Claude relay
Components 21
Request relay
- HTTP application
src/app.js - OpenAI routes
src/routes/openaiRoutes.js - Gemini handlers
src/handlers/geminiHandlers.js - OpenAI Gemini
src/routes/openaiGeminiRoutes.js - Claude relay
src/services/relay/claudeRelayService.js - Gemini relay
src/services/relay/geminiRelayService.js
Accounts and access
- API key service
src/services/apiKeyService.js - User routes
src/routes/userRoutes.js - Claude accounts
src/services/account/claudeAccountService.js - Gemini accounts
src/services/account/geminiAccountService.js - OpenAI scheduler
src/services/scheduler/unifiedOpenAIScheduler.js - Gemini scheduler
src/services/scheduler/unifiedGeminiScheduler.js
Administration
- Admin routes
src/routes/admin/index.js - Admin interface
web/admin-spa/src/App.vue - Admin state
web/admin-spa/src/stores/accounts.js
Persistence and metering
- Redis state
src/models/redis.js - Pricing service
src/services/pricingService.js
Other components
- Claude clients
- Gemini clients
- Operator
- Model providers
Connections 26
- Claude clients → HTTP application: sends requests
- Gemini clients → HTTP application: sends requests
- Operator → Admin interface: manages service
- HTTP application → OpenAI routes: dispatches
- HTTP application → Admin routes: dispatches
- HTTP application → User routes: dispatches
- OpenAI routes → OpenAI scheduler: selects account
- OpenAI routes → Claude relay: relays request
- Gemini handlers → Gemini scheduler: selects account
- OpenAI Gemini → Gemini scheduler: selects account
- OpenAI Gemini → Gemini accounts: loads account
- Gemini handlers → Gemini accounts: loads account
- OpenAI routes → Model providers: sends request
- Claude relay → Claude accounts: loads account
- Claude relay → Model providers: sends request
- Gemini relay → Model providers: sends request
- User routes → API key service: manages keys
- API key service → Redis state: reads and writes
- Claude accounts → Redis state: reads and writes
- Gemini accounts → Redis state: reads and writes
- OpenAI scheduler → Redis state: reads state
- Gemini scheduler → Redis state: reads state
- Admin interface → Admin state: uses state
- Admin state → Admin routes: calls API
- Admin routes → Redis state: reads and writes
- API key service → Pricing service: uses pricing