One OpenAI-compatible chat endpoint for Claude, Gemini, OpenAI and free models on OpenRouter.
How it works
The model name chooses the provider. Claude, Gemini and OpenAI requests go to their respective APIs. OpenRouter requests are limited to free models. This is explicit routing, not automatic model selection.
For Claude, an adapter translates OpenAI-format messages into Anthropic's Messages API and translates responses back. It handles streaming, tool calls and images.
Running it
The gateway runs on Node.js and Vercel, with PostgreSQL for shared state. A CLI provides health checks, provider-key management, usage and cost tracking, and recent error reports.
API access is password-protected. Stored provider keys are encrypted, and failed-password limits are shared across server instances. Separate user and admin credentials keep chat access apart from administrative controls.
Performance notes
The repository includes benchmark tooling and historical measurements. Those measurements used mocked services and an older storage setup. They do not establish the current PostgreSQL-backed deployment's latency.