Compare
Doorman vs LiteLLM
Both are open-source, self-hosted gateways that put one endpoint in front of your AI providers. LiteLLM is a Python proxy and SDK built to reach as many models as possible. Doorman is a Rust gateway built for rolling AI out to a company, and it also manages your regular APIs.
In short
- Choose LiteLLM if you need the widest model and endpoint coverage (100+ providers, plus images, audio, batches and files), response caching, or a Python SDK inside your own code.
- Choose Doorman if you want personal AI keys and dollar allowances for employees with a self-service page, built-in guardrails, and the same gateway for your REST, GraphQL, gRPC and SOAP APIs.
- Both are self-hosted. Doorman is Apache 2.0 with every feature included and runs as one container with no database required; LiteLLM's proxy uses PostgreSQL for keys and spend tracking and sells an enterprise license for some features.
At a glance
How they compare.
| Feature | Doorman | LiteLLM proxy |
|---|---|---|
| Built for | Company rollout of AI and APIs | Calling many LLMs through one OpenAI-style API |
| Language | Rust, one container | Python |
| License | Apache 2.0, every feature | Open source, with a paid enterprise license for some features |
| AI providers | OpenAI, Anthropic, Gemini, Azure OpenAI, OpenAI-compatible | 100+ providers |
| AI endpoints | OpenAI chat, Responses and embeddings; Anthropic messages; Gemini generation and embeddings | Also images, audio, batches, files and more |
| Per-person keys | Yes, created by each employee on a My AI page | Yes, virtual keys, usually issued by an admin or via API |
| Budgets | Dollars, tokens or requests per person, group, tier, API or company | Dollars per key, user, team or end customer, plus rate limits |
| At the limit | Block, warn, or switch to a cheaper model | Block; soft budgets can send alerts |
| Guardrails | Built in: secrets and personal data, redact, block or log | Integrations with guardrail providers, plus some built-in checks |
| Non-AI APIs | REST, GraphQL, gRPC and SOAP with auth, quotas and logs | Not in scope |
| Storage | In memory with encrypted snapshots, or MongoDB and Redis | PostgreSQL for keys and spend; Redis for multiple instances |
Where LiteLLM fits better
Pick LiteLLM when model coverage matters most.
- More providers and endpoints
- LiteLLM supports far more providers, including Bedrock and Vertex AI natively, and endpoints Doorman does not support today: images, audio, batches, files, fine-tuning and assistants.
- A library as well as a proxy
- Python teams can call LiteLLM directly in code without running a server. Doorman is only a gateway.
- Caching and routing options
- LiteLLM offers response caching and several load-balancing strategies across deployments.
- Customer-facing budgets
- If you resell AI to your own customers, LiteLLM tracks budgets per end customer. Doorman is built around your employees and internal apps.
Where Doorman fits better
Pick Doorman for an employee rollout with governance built in.
- Self-service for employees
- People open My AI, create their own key, see their allowance and what is left, and copy setup for Python, Node.js, curl or their tool. Admins do not hand out keys.
- Allowances that match budgets
- Give everyone the same monthly amount, share a team pool, or vary it by group or tier. At the limit, block, warn, or downgrade to a cheaper allowed model.
- Guardrails without another vendor
- Detect emails, US Social Security numbers, credit cards, AWS keys, private keys and API keys, and redact, block or log them. Test in dry-run first.
- One gateway for every API
- The same users, roles, groups, rate limits and logs cover your REST, GraphQL, gRPC and SOAP services, not just AI.
- Small to run
- One Rust container. A single node runs in memory with encrypted snapshots; add MongoDB and Redis only when you need several instances.
- Nothing behind a paywall
- Every feature is in the Apache 2.0 repository. Paid help is optional and scoped as a pilot.
Moving from LiteLLM
Switching is a base URL and a key.
Both gateways speak the OpenAI API, so applications keep the official SDK. Point the base URL at Doorman and use the person's Doorman key instead of a LiteLLM virtual key.
import os
from openai import OpenAI
# Before: OpenAI(api_key=os.environ["OPENAI_API_KEY"])
client = OpenAI(
base_url="https://gw.example.com/api/ai/corp-openai/v1/v1",
api_key=os.environ["DOORMAN_AI_KEY"], # your own dk_ key
)Connect providers
Add your OpenAI, Anthropic, Gemini or Azure OpenAI keys to Doorman and list the allowed models.
Recreate budgets
Map LiteLLM user and team budgets to Doorman allowances for a person or group.
Hand out keys
Employees create their own keys on My AI; apps get a key from an admin.
Swap the base URL
Change the client's base URL and key. Run both gateways side by side until usage matches.
FAQ
Common questions.
Can't find your answer? The documentation covers setup, operations, and the AI gateway in detail.
Read the documentationIs Doorman a drop-in replacement for LiteLLM?
For OpenAI chat, Responses and embeddings, Anthropic messages, Gemini generation and embeddings, and Azure OpenAI or OpenAI-compatible chat, usually yes: change the base URL and key. For images, audio, batches, files, fine-tuning, or native Bedrock and Vertex AI, no; Doorman does not support those today.
Does Doorman need PostgreSQL?
No. One instance runs in memory and saves encrypted snapshots to disk. Several instances share state through MongoDB and Redis.
Can I run Doorman and LiteLLM together?
Yes. Doorman can route to any OpenAI-compatible server, including a LiteLLM proxy, so you can keep LiteLLM for model coverage and use Doorman for employee keys, allowances and guardrails.
Which one is cheaper?
Both are free to self-host, and you pay your AI providers directly either way. Doorman includes every feature under Apache 2.0; LiteLLM sells an enterprise license for some features, so check which ones you need.
Related
Keep reading.
Try Doorman next to what you run today.
The demo includes a keyless local model, so you can see keys, allowances and blocking in a few minutes.