fork of the olla repository to fix ipv6 binding
  • Go 86.9%
  • Python 6.9%
  • Shell 5.6%
  • Makefile 0.6%
Find a file
2026-05-05 13:50:20 -06:00
.claude/skills add language tags to skill code fences 2026-04-23 12:27:23 +10:00
.github Bump actions/upload-pages-artifact from 4 to 5 2026-04-19 12:02:28 +00:00
.vscode renormalise 2025-08-06 17:57:25 +10:00
assets doc update 2026-02-14 10:55:10 +11:00
config doc updates and lmdeploy TPS is still in the works. 2026-04-27 20:20:51 +10:00
data move model rules to models.yml 2025-07-18 10:12:27 +10:00
docs doc updates and lmdeploy TPS is still in the works. 2026-04-27 20:20:51 +10:00
examples initial documentation updates 2026-02-12 12:19:48 +11:00
internal fix host string parsing to fix ipv6 wildcards 2026-05-05 13:50:20 -06:00
pkg update readme 2026-03-30 23:03:45 +11:00
scripts line endings 2025-08-03 11:30:10 +10:00
test pin aimock image digest for reproducible tests 2026-04-23 12:26:52 +10:00
theme flags for all. 2025-06-13 11:22:49 +10:00
.coderabbit.yaml renormalise 2025-08-06 17:57:25 +10:00
.gitattributes line ending normalisation 2025-08-06 17:52:31 +10:00
.gitignore lets you build docker image locally without goreleaser 2026-04-21 08:15:33 +10:00
.golangci.yml wrong template . 2026-04-12 09:27:41 +10:00
.goreleaser.yml update version signature to be a bit more robust 2026-03-31 22:13:30 +11:00
.gosec.json update remaining constants 2025-08-06 18:14:31 +10:00
CLAUDE.md make docker builds portable across arm and amd 2026-04-21 08:44:28 +10:00
docker-compose.yaml renormalise 2025-08-06 17:57:25 +10:00
Dockerfile renormalise 2025-08-06 17:57:25 +10:00
go.mod Bump github.com/puzpuzpuz/xsync/v4 from 4.4.0 to 4.5.0 2026-04-24 16:06:00 +00:00
go.sum Bump github.com/puzpuzpuz/xsync/v4 from 4.4.0 to 4.5.0 2026-04-24 16:06:00 +00:00
install.sh beef up installer script 2025-07-26 19:12:02 +10:00
LICENSE fixes goreleaser and updates dockerfile, adds LICENSE 2025-06-06 18:16:06 +10:00
main.go feat: add model alias validation, test coverage, and byte-preserving JSON rewrite 2026-02-17 20:03:25 +01:00
makefile use docker compose --wait instead of custom poll 2026-04-23 12:27:03 +10:00
readme.md doc updates and lmdeploy TPS is still in the works. 2026-04-27 20:20:51 +10:00

Olla - Smart LLM Load Balancer & Proxy

License Go CI Go Report Card Latest Release
llama.cpp: Native Support vLLM: Native Support SGLang: Native Support LiteLLM: Native Support LM Deploy: Native Support
vLLM-MLX: Native Support Docker Model Runner: Native Support
Ollama: Native Support LM Studio: Native Support LemonadeSDK: Native Support


Recorded with VHS - see demo tape

Documentation   Issues   Releases

Olla is a high-performance, low-overhead, low-latency proxy and load balancer for managing LLM infrastructure. It intelligently routes LLM requests across local and remote inference nodes with a wide variety of natively supported endpoints and extensible enough to support others. Olla provides model discovery and unified model catalogues within each provider, enabling seamless routing to available models on compatible endpoints.

Olla works alongside API gateways like LiteLLM or orchestration platforms like GPUStack, focusing on making your existing LLM infrastructure reliable through intelligent routing and failover. You can choose between two proxy engines: Sherpa for simplicity and maintainability or Olla for maximum performance with advanced features like circuit breakers and connection pooling.

Olla Single OpenAI

Single CLI application and config file is all you need to go Olla!

For Large GPU deployments, Enterprise & Data-Centre use, see TensorFoundry FoundryOS.

Key Features

Platform Support

Olla runs on multiple platforms and architectures:

Platform AMD64 ARM64 Notes
Linux Full support including Raspberry Pi 4+
macOS Intel and Apple Silicon (M1/M2/M3/M4)
Windows Windows 10/11 and Windows on ARM
Docker Multi-architecture images (amd64/arm64)

Quick Start

Installation

# Download latest release (auto-detects your platform)
bash <(curl -s https://raw.githubusercontent.com/thushan/olla/main/install.sh)
# Docker (automatically pulls correct architecture)
docker run -t \
  --name olla \
  -p 40114:40114 \
  ghcr.io/thushan/olla:latest

# Or explicitly specify platform (e.g., for ARM64)
docker run --platform linux/arm64 -t \
  --name olla \
  -p 40114:40114 \
  ghcr.io/thushan/olla:latest
# Install via Go
go install github.com/thushan/olla@latest
# Build from source
git clone https://github.com/thushan/olla.git && cd olla && make build-release
# Run Olla
./bin/olla
# Build Docker image locally (no goreleaser required)
git clone https://github.com/thushan/olla.git && cd olla && make docker-build-local
docker run -p 40114:40114 ghcr.io/thushan/olla:local

Verification

When you have everything running, you can check it's all working with:

# Check health of Olla
curl http://localhost:40114/internal/health

# Check endpoints
curl http://localhost:40114/internal/status/endpoints

# Check models available
curl http://localhost:40114/internal/status/models

For detailed installation and deployment options, see Getting Started Guide.

Querying Olla

Olla exposes multiple API paths depending on your use case:

Path Format Use Case
/olla/proxy/ OpenAI Routes to any backend — universal endpoint
/olla/openai/ OpenAI Routes to any backend — universal endpoint
/olla/anthropic/ Anthropic Claude-compatible clients (passthrough or translated)
/olla/{provider}/ OpenAI Target a specific backend type (e.g. /olla/vllm/, /olla/ollama/)

OpenAI-Compatible (Universal Proxy)

You can use /olla/openai or /olla/proxy

# Chat completion (routes to best available backend)
curl http://localhost:40114/olla/proxy/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{"model": "llama3.2", "messages": [{"role": "user", "content": "Hello"}], "max_tokens": 100}'

# Streaming
curl http://localhost:40114/olla/proxy/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{"model": "llama3.2", "messages": [{"role": "user", "content": "Hello"}], "max_tokens": 100, "stream": true}'

# List all models across backends
curl http://localhost:40114/olla/proxy/v1/models

Anthropic Messages API

# Chat completion (passthrough for supported backends, translated for others)
curl http://localhost:40114/olla/anthropic/v1/messages \
  -H "Content-Type: application/json" \
  -H "x-api-key: not-needed" \
  -H "anthropic-version: 2023-06-01" \
  -d '{"model": "llama3.2", "max_tokens": 100, "messages": [{"role": "user", "content": "Hello"}]}'

# Streaming
curl http://localhost:40114/olla/anthropic/v1/messages \
  -H "Content-Type: application/json" \
  -H "x-api-key: not-needed" \
  -H "anthropic-version: 2023-06-01" \
  -d '{"model": "llama3.2", "max_tokens": 100, "messages": [{"role": "user", "content": "Hello"}], "stream": true}'

Provider-Specific Endpoints

# Target a specific backend type directly
curl http://localhost:40114/olla/ollama/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{"model": "llama3.2", "messages": [{"role": "user", "content": "Hello"}], "max_tokens": 100}'

# Other providers: /olla/vllm/, /olla/vllm-mlx/, /olla/lm-studio/, /olla/llamacpp/, etc.

Examples

We've also got ready-to-use Docker Compose setups for common scenarios:

Common Architectures

  • Home Lab: Olla → Multiple Ollama (or OpenAI Compatible - eg. vLLM) instances across your machines
  • Hybrid Cloud: Olla → Local endpoints + LiteLLM → Cloud APIs (OpenAI, Anthropic, Bedrock, etc.)
  • Enterprise: Olla → GPUStack cluster + vLLM servers + LiteLLM (cloud overflow)
  • Development: Olla → Local + Shared team endpoints + LiteLLM (API access)

See integration patterns for detailed architectures.

For a robust enterprise setup, consider TensorFoundry FoundryOS.

🌐 OpenWebUI Integration

Complete setup with OpenWebUI + Olla load balancing multiple Ollama instances or unify all OpenAI compatible models.

  • See: examples/ollama-openwebui/
  • Services: OpenWebUI (web UI) + Olla (proxy/load balancer)
  • Use Case: Web interface with intelligent load balancing across multiple Ollama servers with Olla
  • Quick Start:
    cd examples/ollama-openwebui
    # Edit olla.yaml to configure your Ollama endpoints
    docker compose up -d
    # Access OpenWebUI at http://localhost:3000
    

You can learn more about OpenWebUI Ollama with Olla or see OpenWebUI OpenAI with Olla.

🤖 Anthropic Message API / CLI Tools - Claude Code, OpenCode, Crush

Olla's Anthropic Messages API support (v0.0.20+) is enabled by default, allowing you to use CLI tools like Claude Code with local AI models on your machine via /olla/anthropic. It operates in two modes depending on your backend:

  • Passthrough: requests are forwarded as-is for backends with native Anthropic support (vLLM, llama.cpp, Ollama, LM Studio, Lemonade)
  • 🔄 Translation: Anthropic ↔ OpenAI format conversion for backends that don't natively support the Anthropic Messages API

Still actively being improved -- please report any issues or feedback.

We have examples for:

Learn more about Anthropic API Translation.

Documentation

Full documentation is available at https://thushan.github.io/olla/

🤝 Contributing

We welcome contributions! Please open an issue first to discuss major changes.

🤖 AI Disclosure

This project has been built with the assistance of AI tools for documentation, test refinement, and code reviews.

We've utilised GitHub Copilot, Anthropic Claude, JetBrains Junie, Codex & TensorFoundry Kaizen for documentation, code reviews, test refinement and troubleshooting.

We also utilise CodeRabbit for AI-driven code reviews for PRs prior to human review.

🙏 Acknowledgements

📄 License

Licensed under the Apache License 2.0. See LICENSE for details.


Made with ❤️ for the LLM community

🏠 Homepage📖 Documentation🐛 Issues🚀 Releases