RelayPlane vs LiteLLM vs OpenRouter: an honest comparison for cost caps and routing A developer who built RelayPlane published an honest comparison of three LLM routing and cost-control tools: RelayPlane, LiteLLM, and OpenRouter. The writeup positions RelayPlane as a free, MIT-licensed local proxy for a single machine that enforces a hard daily spend cap before requests leave the host and keeps a per-request cost ledger in a local SQLite file, while LiteLLM is framed as the better fit for teams needing virtual keys and multi-tenant budgets across 100+ providers, and OpenRouter as the hosted option spanning 500+ models with a 5.5% fee on credit purchases. If you want a hard daily spend cap and a per-request cost ledger on one machine with no database server to run, RelayPlane https://relayplane.com is the smallest install of the three @relayplane/proxy https://www.npmjs.com/package/@relayplane/proxy on npm, free, MIT . If you want 100+ providers behind one gateway for a team, LiteLLM https://github.com/BerriAI/litellm is the better tool. If you want a hosted API you don't run yourself, OpenRouter https://openrouter.ai is the better tool. All three are real, none of them is a straight replacement for the other two, and this piece is an honest breakdown of where each one actually wins. I built RelayPlane, so I'm biased. Every RelayPlane line below matches its code or docs, and the LiteLLM and OpenRouter lines come from their own docs, linked under the table, so you can check them yourself. localhost:4100 . | | RelayPlane | LiteLLM | OpenRouter | |---|---|---|---| | What it is | Local proxy for one machine | Self-hosted gateway for a team | Hosted model marketplace | | Install | npm install -g @relayplane/proxy | pip install or uv , run the proxy | No install, API key only | | Runs locally | Yes | Yes self-hosted | No, cloud only | | Native providers | 6 Anthropic, OpenAI, Gemini, xAI, Ollama, and OpenRouter passthrough | 100+ | 500+ it IS the aggregator | | Per-request cost ledger on your machine | Yes, a local SQLite file, nothing to deploy | Spend logs live in the proxy's database | Dashboard on their cloud | | Hard daily spend cap enforced before the request leaves | Yes relayplane cap set --day 50 , returns 429 | Budgets per virtual key, team, user | Per-key credit limits, enforced in their cloud | | Kill switch | Yes, one command, survives a restart | Block a virtual key via the admin API | Disable the key in their dashboard | | Routing by task complexity | Yes, one config field, hot reloads | Router strategies you configure per deployment | No, you pick the model per call | | Virtual keys / multi-tenant budgets | No | Yes, this is its core job | Per-key limits, cloud side | | Self-hosted | Yes | Yes | No | | Where your data lives | Your machine only | Wherever you deploy it | Their servers | | License / model | MIT, everything free | MIT + enterprise license and hosted option | Proprietary, 5.5% fee on credit purchases https://openrouter.ai/pricing | The LiteLLM column comes from github.com/BerriAI/litellm https://github.com/BerriAI/litellm and docs.litellm.ai https://docs.litellm.ai , the OpenRouter column from openrouter.ai/docs https://openrouter.ai/docs , and the RelayPlane column from github.com/RelayPlane/proxy https://github.com/RelayPlane/proxy and relayplane.com/docs https://relayplane.com/docs . Provider breadth and the multi-tenant model. If you're running a platform team with multiple apps and want virtual keys, per-team budgets, load balancing across many deployments, and an admin dashboard for the whole org, that's what LiteLLM is built for. RelayPlane has none of that, it tracks one machine, not a tenant hierarchy. Zero infrastructure. You get an API key and you're calling 500+ models in one format, with nothing to run or maintain. The tradeoff is you don't get a local, offline-readable cost ledger or a hard cap enforced before the request leaves your machine, you're working from their dashboard and their usage API. Three things. I use all of them daily on a pipeline that routes real production traffic. relayplane kills --last 7d shows every blocked request with the agent and session that caused it. relayplane cap set --day 50 returns 429 budget exceeded on the request that would cross $50. Choose block, downgrade to a cheaper model, or warn. relayplane kill returns 503 kill switch active on every routed request until relayplane resume . You don't need a database server or an account for any of it. It's a single npm install. npm install -g @relayplane/proxy relayplane init relayplane start export ANTHROPIC BASE URL=http://localhost:4100 That's the whole setup. Source is at github.com/RelayPlane/proxy https://github.com/RelayPlane/proxy , MIT licensed, free, no paid tier.