Every gateway routes. Ask what comes back.
Most of the gateways below ship complexity routing, and one ships it free and open source. We would rather you heard that from us than found it in their docs.
| Picks a model for you | Tells the caller why | Cost in the response | Prices the road not taken | |
|---|---|---|---|---|
| OpenRouter | Routes | Yes — opt-in header | Yes — usage.cost, always on | No |
| LiteLLM | Routes · beta | Model only; tier stays in logs | Yes — response header | Yes — to the operator, aggregated |
| Portkey | No routing | Your own rules | No — dashboard only | No |
| Lobstack | Yes — complexity tiers with a spend ceiling | Yes — on every response, no opt-in | Yes — response headers | Yes — per request, on the response |
Follow a name for the full answer, the quote it came from, and a link to the page it is on. Ours carries two qualifications: on stream: true the cost and savings figures move to the final frame, because our headers go out before the provider has counted a token — the same constraint everyone here is under. And asking for auto names no model, so the baseline becomes the most expensive one your plan allows; baseline_reason says which you are reading and never travels without the figure. Both in the metering docs.
OpenRouter
OpenRouter will tell you which models it considered and which one it picked. It will not tell you what the others would have cost.
Read the comparison →Lobstack vsLiteLLM
LiteLLM computes the counterfactual too. The difference is where it goes: their savings figure reaches the operator, in a rollup, after the fact — ours reaches the caller, on the request, in the response.
Read the comparison →Lobstack vsPortkey
Portkey is not trying to pick a model for you, and does not pretend to be. It computes cost accurately and keeps it in the dashboard — the response carries four headers and none of them is money.
Read the comparison →Three comparisons, not one.
The table above compares us with three other gateways. Most people who get this far are not choosing between gateways at all: they are calling one provider directly, or they are looking at somebody who will host the agent for them. Those are different comparisons, and only the middle one is the table.
You call one vendor directly
The answer comes back and the price does not. What one call cost is settled later, in that vendor’s console, added to every other call that month. Send the same request here, in the same OpenAI shape, and x-lobstack-cost-usd comes back on it — with a baseline saying what the model you named would have charged for the same tokens. If you would rather keep paying your provider yourself, BYOK routes on your key and marks nothing up.
One key over many vendors
That is the table above, answered claim by claim with a link to each vendor’s own page. We do not argue that we serve more models — some of them serve far more and say so on their own pages. The argument is where the number goes: the counterfactual arrives in the response the caller already has. And the path can stay on your machine. lobstack proxy --port 8787 is a loopback OpenAI-compatible endpoint; the tool you point at it never holds your Lobstack key, because the proxy process does.
A machine with your credentials on it
We sold that and stopped. Nothing of yours runs on our infrastructure now — a plan is a key and an allowance, and no machine is created for you. The agent runs where you run it: Lob Bot is a desktop application that stops in front of every action that changes something and waits for you to approve that exact call. It is in development, and there is no build to download today.
What the approval gate is →What a routing receipt is.
Savings percentages are the currency of this category, and almost none of them are proved on a single request. The difference between a marketing number and a measurement is the whole argument.


