Inspiration
Every AI provider ships its own SDK, auth scheme and error format, so switching models means rewriting the integration. We wanted one endpoint that speaks all of them.
What it does
UnoRouter is an open-source LLM gateway. It puts 278+ models from OpenAI, Anthropic, Google, Meta, Mistral and others behind a single OpenAI-compatible endpoint, so you can change models by changing a string. It adds automatic failover when a provider is down or rate limited, live pricing and latency comparison, and a local-first chat UI.
How I built it
Next.js and TypeScript on the front end, a Go gateway for request routing and quota accounting, PostgreSQL for persistence, all containerised with Docker and deployed on Kubernetes.
Challenges I ran into
Normalising streaming responses was the hard part. Providers disagree on chunk shape, tool-call encoding and how they report mid-stream errors, so the gateway translates each one into a single consistent stream.
Accomplishments that I'm proud of
278+ models behind one key, with failover that survives a provider outage without the client noticing.
What I learned
Provider APIs drift constantly. Treating the adapter layer as the product, rather than an implementation detail, is what keeps the gateway stable.
What's next for UnoRouter
Wider model coverage, smarter cost-aware routing, and better observability for teams running it self-hosted.
Built With
- docker
- go
- llm
- next.js
- openai
- postgresql
- typescript
Log in or sign up for Devpost to join the conversation.