Rust Migration
LiteLLM is moving to Rust
See what already runs on Rust and what is next.
Migration tracker
Where we are today
5% of migrated to Rust, shown as a .
Foundation16%
Auth100%
- AWS
- Azure
- Google Cloud
- HTTP client
- Streaming
- Model catalog
- Cost tracking
- Logging
Caching0%
- In-memory
- Redis
- Redis semantic
- Valkey semantic
- Qdrant semantic
- S3
- Google Cloud Storage
- Azure Blob Storage
- Disk
Secret managers0%
- AWS Secrets Manager
- AWS KMS
- Azure Key Vault
- Google Secret Manager
- Google KMS
- HashiCorp Vault
- CyberArk
- Environment variables
- Custom
- Callbacks
Messages2%
- Anthropic
- Bedrock
- Vertex AI
- Azure AI
- GitHub Copilot
- DeepSeek
- MiniMax
- OpenAI
- Azure OpenAI
- Gemini
- Mistral
- Groq
- xAI
- Together AI
- Fireworks AI
- OpenRouter
- Databricks
- Ollama
- vLLM
- OpenAI-compatible
Responses0%
- OpenAI
- Azure OpenAI
- Azure AI
- Anthropic
- Bedrock
- Vertex AI
- Gemini
- xAI
- Mistral
- Groq
- DeepSeek
- Together AI
- Fireworks AI
- OpenRouter
- Databricks
- Perplexity
- GitHub Copilot
- Ollama
- vLLM
- OpenAI-compatible
Chat completions0%
- OpenAI
- Azure OpenAI
- Anthropic
- Bedrock
- Vertex AI
- Gemini
- Azure AI
- Mistral
- Cohere
- Groq
- xAI
- DeepSeek
- Together AI
- Fireworks AI
- OpenRouter
- Databricks
- watsonx
- Perplexity
- DeepInfra
- Cerebras
- NVIDIA NIM
- SageMaker
- Ollama
- vLLM
- OpenAI-compatible
Engineering updates
How we are getting there
FAQ
Frequently asked questions
How does a feature move to Rust?
Each feature starts on Python and moves through these stages one release at a time. For the two middle stages, the
LITELLM_RUSTenvironment variable flips the default for the whole process.Opt-in
Python runs by default. Turn Rust on to try it, with Python as the fallback.
LITELLM_RUST=1Run on RustRust default
Rust runs by default, with Python as the fallback. Turn Rust off to stay on Python.
LITELLM_RUST=0Stay on PythonRust only
Always runs on Rust. The Python path is gone and the switch has no effect.
Done
Shared work like cloud auth has no rollout of its own. It is done once every Rust path can use it.