Benchmark snapshot
This page is a short reference for our latest public benchmark: GoModel against LiteLLM, Portkey, and Bifrost, all pointed at the same instant mock backend so the numbers reflect gateway overhead, not model latency. The benchmark is rerun periodically from the ai-gateway-reproducible-benchmark repository, which keeps every recorded run and a chart of how the numbers move over time. The full narrative write-up is the June 2026 article: AI Gateway Benchmark 2026: GoModel vs LiteLLM, Portkey & Bifrost.The table below is the August 20, 2026 run on AWS. Treat it as data, not
dogma. Gateway performance depends on your workload, provider mix, deployment
setup, and tuning. Older runs (June and July 2026 on the same hardware, March
2026 LiteLLM-only on localhost) are in the repository’s history and on the blog.
What we tested
A simple, like-for-like setup:- One gateway at a time, in Docker, on an AWS
c7i.large(2 vCPU, 4 GiB), each from its latest public image (enterpilot/gomodel,litellm/litellm:main-stable,portkeyai/gateway,maximhq/bifrost). The version and image digest each run measured are recorded next to its results in the repository. - The same shared mock backend for everyone, so we measure only gateway overhead.
- Six workloads: chat completions, the Responses API, and Anthropic messages - each streaming and non-streaming.
20,000requests per workload at concurrency10, across five randomized-order trials (latency is the median across them).- Fair config: retries off for everyone, GoModel’s circuit breaker off, and LiteLLM run at its recommended one worker per CPU core.
At a glance
GoModel came out ahead on every operational signal most teams care about: the tightest latency tail, the highest sustained throughput, the smallest image and memory, and the fastest cold start.
Latency is chat completions, non-streaming (representative). Throughput is the
sustained rate from a separate concurrency sweep. Image size is the compressed
pull size.
Key readouts
- GoModel has both the lowest median (
2.1 ms) and the tightest tail (7.8 ms). - It pushes the most traffic per box (
~4,200 req/s) and is the most CPU-efficient:42req/s per CPU-% under sustained load, versus21for Bifrost,8for Portkey, and1.4for LiteLLM. - It is the smallest to ship and run: a
14 MBcompressed image and60 MBof RAM under load, ready to serve0.76 safter launch. - LiteLLM, even at its recommended multi-worker config, uses
~2.1 GBof RAM and takes~26 sto start - the cost of Python on the hot path. - Portkey did not serve the Anthropic messages dialect in this single-provider setup, so it covers 4 of the 6 workloads.
Reproduce it yourself
The benchmark lives in its own repository, ENTERPILOT/ai-gateway-reproducible-benchmark, together with every recorded run and a chart of how the numbers move over time. One command provisions a small AWS box, runs all four gateways from their latest public Docker images against the same mock backend, records the results, and tears the infrastructure back down on its own.N=20000 requests per workload, REPEATS=5 trials, and
concurrency C=10; override them as env vars, e.g. N=5000 REPEATS=2 ./run.sh
for a quicker, noisier run. GOMODEL_SOURCE=../gomodel benchmarks a local
checkout instead of the published image.
That measures whatever the four images resolve to today. To repeat the
August 20, 2026 snapshot on the same gateway releases, pass their versions:
results/<run>/*_image.json files, so any past run can be repeated the same way. The repository README
also shows how to run the harness on any Docker host without AWS. For a quick
local check against just LiteLLM, the older localhost harness is still in
docs/about/benchmark-tools/.