Available now β€’ Open Source β€’ Apache 2.0

Olla: open-source LLM proxy and load balancer

The open-source LLM proxy for small businesses, development teams and growing organisations. One endpoint in front of 12 local inference backends plus any OpenAI-compatible server, with load balancing, automatic failover, Claude Code support and a built-in dashboard. Deploy in minutes with Docker.

The built-in Olla dashboard watching a mixed herd of vLLM, SGLang, LM Studio, Ollama and oMLX backends
86.4K+
GHCR container pulls
Image pulls of ghcr.io/thushan/olla
300+
GitHub Stars
Active open source project
50+
GitHub Forks
Forked by the community
Apache 2.0
Open Source
Free forever, enterprise-friendly

Quick Start

Get up and running with Olla in minutes using containers.

$ docker run -t --name olla -p 40114:40114 ghcr.io/thushan/olla:v0.1.0
Unable to find image 'ghcr.io/thushan/olla:v0.1.0' locally v0.1.0: Pulling from thushan/olla a280336c5efa: Pull complete c439f8aafbda: Download complete 4f4fb700ef54: Pull complete 28ca2a5cf8b5: Download complete 8066e87b2613: Pull complete Digest: sha256:e03b64577b3794d3b31d76640dc93d2bfaf184796915fcbbca37dc4fcff140f7 Status: Downloaded newer image for ghcr.io/thushan/olla:v0.1.0
$ curl http://localhost:40114/olla/models
{"object":"list","data":[{"olla":{"family":"","variant":"","parameter_size":"","quantization":"","aliases":["ai/gpt-oss"],"availability":[{"endpoint":"local-docker","state":"unknown"}],"capabilities":["text-generation"]},"id":"ai/gpt-oss","object":"model","owned_by":"olla","created":1762542266}]}

Your whole herd on one screen

A read-only dashboard is built into Olla and served on the same port as the proxy. There is no extra service to run, and no curling JSON to find out which backend is slow.

  • Overview tiles, a live requests-per-second sparkline and a herd table you can filter and pick columns for
  • Endpoints view with type, priority, latency range, requests and health-check timing for every backend
  • Models view showing which models are loaded on which backends
  • Links straight to any view or endpoint, in light or dark
Dashboard guide
The Endpoints view across vLLM, SGLang, LM Studio, Ollama and two oMLX laptops

Spot an unhealthy node at a glance

Olla health-checks every backend and routes around the ones that fail. Circuit breakers and exponential backoff stop a struggling node being hammered while it recovers, and it rejoins on its own once it is healthy again.

  • Unhealthy endpoints sort to the top of the herd table
  • One click filters the table down to the endpoints that need attention
  • Hover a status for its issues, last probe and next check
Health checking
One oMLX laptop marked unhealthy and sorted to the top of the herd table

Point Claude Code at your own GPUs Beta

Olla serves the Anthropic Messages API alongside the OpenAI API. Requests pass straight through to backends that speak Anthropic natively and are translated to OpenAI chat for the rest, so Claude Code and other Anthropic clients can run against your local models.

  • Native passthrough to 9 backends, including vLLM, SGLang, LMDeploy, llama.cpp, LM Studio, Ollama and oMLX
  • Translation to OpenAI chat for everything else, with reasoning output mapped to thinking blocks
  • Anthropic routes share the proxy's per-IP and global rate limits and answer in Anthropic's own error format, so Claude Code backs off and retries cleanly
  • A runtime card shows how much traffic is passed through and how much is translated
Claude Code with Olla
Runtime cards for sticky sessions, Anthropic passthrough and the Olla process

Product Overview

Built as a dedicated LLM proxy, Olla routes every request from your tools to the right backend, and steps around the ones that fail, from a single binary.

Unified Model Registry

Olla discovers the models on every backend and lists them through one API, merging models that share a name. Where runtimes name the same model differently, such as qwen3.8:27b on Ollama and Qwen/Qwen3.8-27B on vLLM, a model alias maps them to one name so a request can land on any of them.

Model Unification

Intelligent Load Balancing

Pick priority for tiered hardware, round-robin for an even spread, or least-connections, the default, for latency-sensitive work. When a backend fails before the reply starts, Olla moves the request to the next one, and it never replays a request once the response has begun. The proxy.retry settings control that failover.

Load Balancing

High Performance

One Go binary with per-endpoint connection pooling, object pooling to keep garbage-collection pressure low and lock-free statistics. It adds well under a millisecond to a request and idles at around 20 MB of memory.

Performance

Health Monitoring

Continuous health checks and circuit breakers detect failing backends and route around them. Exponential backoff gives a struggling node room to recover, and healed endpoints rejoin automatically.

Health Monitoring

Security & Rate Limiting

Per-IP and global rate limits, applied as independent tiers and shared by the Claude Code routes, and request size limits protect your backends. Backends that need credentials get per-endpoint bearer, API key or basic auth, kept out of status output, and CORS can be switched on for browser clients.

Security

Observability

A Prometheus endpoint exposes per-endpoint health, latency, routing and security metrics, ready for Grafana. Every proxied request is logged with its status, request and failure counts tally each backend attempt once with a backend 5xx counted as a failure, and the built-in dashboard shows the behaviour of the whole herd live.

Observability

Built for Mixed Fleets

Real herds run more than one kind of server. Olla keeps them working together.

One name, many runtimes

Model aliases map differently named copies of a model across Ollama, vLLM, LM Studio and oMLX to one name your clients use.

Read more

Embeddings and rerankers

Hugging Face Text Embeddings Inference is a backend, and embed and rerank requests without a model name go to a host that can serve them.

Read more

Sticky sessions

Opt in to keep a multi-turn conversation on the backend that already holds its KV-cache, so follow-up turns can reuse the cached prompt instead of recomputing it.

Read more

Apple Silicon too

oMLX and vLLM-MLX sit alongside vLLM, SGLang and llama.cpp, so a Mac Studio or MacBook can join the same herd as your GPU servers.

Read more

Vision and tool models

Ollama vision and tool-calling models are recognised, so requests with images or tools prefer the hosts that can handle them.

Read more

Check before you restart

olla --validate-config reports pass, warn or fail with exit codes for CI, and flags misspelt keys with the line they are on.

Read more

Blazing Fast Performance

Every figure below comes from a real benchmark run on a single dev box, not a spec sheet. A small Go binary, low overhead, and routing that stays out of your way.

<1ms
Proxy overhead
About 0.30 ms added over a direct call (p50, ai mock).
~20MB
Idle memory
Resident memory at rest; ~42-57 MB under concurrent load.
14.4MB
Single binary
One static Go binary, nothing to install.
10,200req/s
Throughput ceiling
Proxy routing ceiling at c=32 against a zero-delay mock.
67ns
Endpoint selection
Lock-free routing decision at two endpoints.
7.6Γ—
Faster cold turns
Sticky KV-cache routing vs round-robin at 32k context (turn 2).
14.8Γ—
Lighter than LiteLLM
Idle memory vs the LiteLLM Python proxy, same mock backend.
0
Requests dropped on failover
Across 20,223 requests with a backend killed mid-run.

Measured on Olla v0.0.28, Windows 11 dev box (Ryzen 9 5950X); mock backends isolate the proxy from inference. Conditions stated - see the full benchmarks.

Prometheus Metrics and Structured Logs

Scrape /internal/metrics for per-endpoint health, latency, routing and security metrics, ready for Grafana. Every proxied request is logged with its status, from startup through health checks to completion.

olla
╔─────────────────────────────────────────────────────────╗
β”‚                                      β €β €β£€β£€β €β €β €β €β €β£€β£€β €β €    β”‚
β”‚                                      ⠀⒰⑏Ⓓ⑆⠀⠀⠀⒰⑏Ⓓ⑆⑀   β”‚
β”‚   β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•— β–ˆβ–ˆβ•—     β–ˆβ–ˆβ•—      β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—    β €β’Έβ‘‡β£Έβ‘·β Ÿβ ›β »β’Ύβ£‡β£Έβ‘‡    β”‚
β”‚  β–ˆβ–ˆβ•”β•β•β•β–ˆβ–ˆβ•—β–ˆβ–ˆβ•‘     β–ˆβ–ˆβ•‘     β–ˆβ–ˆβ•”β•β•β–ˆβ–ˆβ•—   β’ β‘Ύβ ›β ‰β β €β €β €β ˆβ ‰β ›β’·β‘„   β”‚
β”‚  β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘     β–ˆβ–ˆβ•‘     β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•‘   ⣿⠀⒀⣄⒀⣠⣀⣄⑀⣠⑀⠀⣿   β”‚
β”‚  β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘     β–ˆβ–ˆβ•‘     β–ˆβ–ˆβ•”β•β•β–ˆβ–ˆβ•‘   β’»β£„β ˜β ‹β‘žβ ‰β’€β ‰β’³β ™β ƒβ’ β‘Ώβ‘€ β”‚
β”‚  β•šβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•”β•β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ•‘  β–ˆβ–ˆβ•‘   β£Όβ ƒβ €β €β ³β €β ¬β €β žβ €β €β ˜β£·   β”‚
β”‚                                      β’Έβ‘Ÿβ €β €β €β €β €β €β €β €β €β’Έβ‘‡    β”‚
β”‚  github.com/thushan/olla   v0.1.0    β’Έβ‘…β €β €β €β €β €β €β €β €β €β’€β‘Ώ    β”‚
β•šβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β•
β–ˆ

Supported Backends

Olla works with 12 local inference backends plus any OpenAI-compatible server. The ik_llama.cpp fork is supported via the llama.cpp backend.

See Integrations
OllamaLM StudiovLLMSGLangllama.cppvLLM-MLXLiteLLMLemonadeLMDeployDocker MRoMLXHF TEIOpenAI-like

Frequently Asked Questions

Who is Olla designed for?

Olla is built for small businesses, development teams, startups and growing organisations that want reliable routing across their own inference servers without enterprise complexity. It suits a single workstation through to a handful of GPU servers. For multi-node GPU fleets that need a control plane, per-GPU telemetry and an operator console, FoundryOS is now in early access.

What is Olla?

Olla is a high-performance, open-source LLM proxy and load balancer. It puts one endpoint in front of 12 local inference backends plus any OpenAI-compatible server, including Ollama, LM Studio, vLLM, SGLang, llama.cpp and oMLX. It provides unified model discovery, automatic failover, a built-in dashboard and Prometheus metrics.

How do I install Olla?

Olla can be installed using Docker or Podman with a single command: docker run -t --name olla -p 40114:40114 ghcr.io/thushan/olla:v0.1.0. This pulls the image and starts the proxy on port 40114 (4 OLLA), see our Quickstart Guide.

Is Olla free and open source?

Yes, Olla is completely free and open source software under the Apache License, Version 2.0. The source code is available on GitHub.

What license is Olla distributed as?

Olla is distributed under the Apache-2.0. Learn about Olla Licensing.

What inference backends does Olla support?

Olla supports 12 local inference backends plus any OpenAI-compatible server. The named backends are Ollama, LM Studio, vLLM, vLLM-MLX, SGLang, llama.cpp, Lemonade, LMDeploy, LiteLLM, Docker Model Runner, oMLX and Hugging Face Text Embeddings Inference (TEI). The ik_llama.cpp fork works through the llama.cpp backend. Learn more about Olla Integrations.

Can I use Claude Code with Olla?

Yes, in beta. Olla serves the Anthropic Messages API alongside the OpenAI API. Requests pass straight through to backends that support it natively, including vLLM, SGLang, LMDeploy, llama.cpp, LM Studio, Ollama and oMLX, and are translated to OpenAI chat for the rest. Claude Code traffic takes the same rate limits as the proxy routes, so many sessions behind one IP may need the per-IP limit raised. See Claude Code with Olla.

Does Olla have a dashboard?

Yes. The release binaries and Docker image include a read-only dashboard at /internal/ui/ on the proxy's own port, showing endpoint health, latency, traffic and loaded models. For alerting and history, scrape the Prometheus endpoint at /internal/metrics. See the Dashboard guide.

What are the main features of Olla?

Olla provides a unified model registry with model aliases, load balancing (priority, round-robin and least-connections), health checks and circuit breakers with automatic failover and configurable retries, opt-in KV-cache-aware sticky sessions, rate limiting, a built-in dashboard and a Prometheus metrics endpoint. Olla also has an extensive list of other features you can learn more in the Olla Concepts.

Does Olla work with local LLM deployments?

Yes, Olla is specifically designed to work with local LLM deployments. It can route requests across local inference nodes running Ollama, LM Studio, or other local backends, providing load balancing and failover capabilities for self-hosted AI infrastructure.

OPEN SOURCE

Join the Olla Community

Olla is open source and growing fast. Perfect for small businesses, development teams, and organisations building reliable, unified AI infrastructure at any scale.

Active Development

300+ GitHub stars
86.4K+ GHCR container pulls

Growing community with regular updates and improvements.

Star on GitHub

Contribute

We welcome contributions of all sizes. Every improvement matters!

  • πŸ› Report bugs and issues
  • ✨ Suggest new features
  • πŸ“ Improve documentation
  • πŸ”§ Submit pull requests
Contributing Guide

Perfect For

  • Small Businesses Reliable AI infrastructure for growing teams
  • Development Teams Unified API for multiple AI backends
  • Startups Build without cloud dependencies
  • Homelabs & Researchers Test and compare different models

Ready to optimise your LLM infrastructure?

Get started with Olla today and experience intelligent load balancing for your AI workloads.