Built by engineers from high-frequency trading

Exchange-grade
infrastructure for
LLM inference.

We don't add to your latency, we establish best price-performance.

llmbridge, our open-source gateway in C++ (Apache 2.0), is a drop-in OpenAI-compatible proxy that adds microseconds, not milliseconds. Kottos AI measures what each venue delivered and establishes best price-performance for the next request: routed by us when we host, recommended to your gateway when you do.

Kottos AI the tape for inference measure · rank · route best venue what it delivered your app unchanged OpenAI SDK prompt tokens, streamed llmbridge translate · stream · failover 0.045 ms of an 815 ms request Anthropic · OpenAI Bedrock · Vertex · Azure Groq · Together · Fireworks one model, many venues — ~10× apart on price

llmbridge, the open-source hop in your request path. Microseconds, zero dependencies, Apache 2.0.

Kottos AI, the tape: it measures what each venue delivered and returns the best one available per request. Hosted, we route on it. In your VPC, your gateway decides.

The venues, the providers themselves. Which one serves the request is what moves your latency and your bill.

External benchmark · nine gateways · one harness we did not write
Added latency per request, chat completions, p50
llmbridge is our open-source gateway. The other rows are the gateways you could run instead.
ENTERPILOT / ai-gateway-reproducible-benchmark ↗
gatewayruntime non-streamingstreaming peak req/scores used req/s per 1% CPU
llmbridge v0.53.0 ours, Kottos AIC++0.07 ms0.18 ms40,6770.98354
GoModel 0.1.86Go0.47 ms0.75 ms16,4685.9623
Bifrost 2.0.0Go0.80 ms2.77 ms10,0437.9011
Portkey 1.15.2Node7.56 ms27.60 ms1,2321.2010
LiteLLM 1.99.1Python10.77 ms46.06 ms8807.051
socat byte pipe the floorC0.06 ms0.27 ms43,9732.17157

Not our harness: the AI gateway reproducible benchmark by Jakub A. Wąsek of ENTERPILOT, every gateway from its public Docker image against the same in-memory mock, run by us on a 12-CPU laptop with llmbridge added. Compare rows within this table only; the socat byte pipe parses nothing and is the cost of being in the path at all. Setup, exclusions and raw data: the benchmarks page.

Drop it in

# Front a provider and translate OpenAI ↔ provider on the fly:
llmbridge --listen 8088 --upstream https://api.anthropic.com --upstream-dialect anthropic --workers 4

# Clients keep speaking the OpenAI API. Point them at :8088, nothing else changes.

Build and run in a few minutes → Apache 2.0, C++20, Linux.

01 / The problem

Two things your gateway costs you.

The milliseconds it adds to every request, and the venue it picks for you. The first is measurable to the microsecond. The second shows up on the bill, and only a per-request record shows you where.

// latency

The gateway in front of you

LiteLLM, the default choice, is Python: on an independent harness it adds 11 ms at the median per request and 46 ms streamed, on seven cores, and caps out at a few hundred requests per second per worker. Voice agents have ~300 ms turn budgets; agentic workflows chain 5–30× more calls per task than a chatbot. The overhead compounds on exactly the workloads growing fastest.

// the bill

Routing on posted price, blind to your cache

A router that picks the venue on the quoted $/M ignores what the request actually costs you. A prompt cache lives at one venue: switch to the one that looks cheaper and the cache misses, so the $0.25 cache read becomes a $10 input token (Claude Fable 5.1, direct). OpenRouter's router chose Bedrock for us at +251 ms median over the pinned venue (our measurement, Aug 2026), and its default weighting is by posted price alone. The quoted price and the paid price part ways, and nothing on a price page tells you by how much. Replayed on 6,361 requests of our own traffic, that rule cost 21% more for no price gain (how we measured it).

02 / Proof

The gateway adds almost nothing.

The external table above is one harness we did not write. These two are ours: llmbridge against LiteLLM doing the same OpenAI↔Anthropic translation, request by request and then streamed. The full set, the sweep to 24,576 concurrent streams, the stamp-by-stamp timeline of one request, the methodology and the raw data are on the benchmarks page.

llmbridge vs LiteLLM: added p99 latency

Added p99 per request, one worker each, same translation work against the same mock. LiteLLM 1.95.0 pinned; ~1,000× at 100 RPS.

Streaming: time to first token vs concurrent streams

Streaming time to first token the gateway adds, swept over concurrent streams. llmbridge stays on the no-gateway floor through 512; LiteLLM delivers 4% of the tokens there.

// common question

Isn't the model the bottleneck, not the gateway?

For a single request, yes, generation takes seconds and the gateway is invisible. The efficiency shows up at scale: at millions of requests a day, LiteLLM's ~250 RPS per worker means dozens of processes burning CPU and memory, while llmbridge handles the same volume on a fraction of the hardware. It compounds in agentic workloads (dozens of calls per task) and on real-time budgets like voice, which is exactly what the streaming benchmark above shows: at 512 concurrent streams LiteLLM's first token arrives after ~12.6 seconds and 96% of the tokens never arrive at all, while llmbridge stays on the no-gateway floor. And most of all, it's what powers best price-performance across providers (the same model is priced up to ~10× apart, an estimated 15–40% lower cost) without adding latency of its own.

03 / Architecture

Built the way a trading system would be.

No GC, no locks on the hot path, no third-party runtime dependencies. Designed by someone who spent nine years in high-frequency and electronic trading, where latency budgets and tail distributions are the job.

// event loop

Single-threaded io_uring

Completion-driven I/O (multishot accept/recv, provided buffers) with a keep-alive upstream pool, and epoll fallback for older kernels. One core sustains ~84k RPS, and scales out with SO_REUSEPORT.

// zero deps

Hand-rolled everything

A tiny dependency-free JSON parser/serializer scoped to the chat-completion shapes, and zero-copy string_view over input buffers.

// deterministic

No GC pauses

It's C++. Tail latency is bounded by malloc, not garbage collection, so p99.9 stays flat under load.

The flags

#  --upstream-dialect openai|anthropic|gemini|cohere|bedrock|azure   --io auto|epoll|uring   --workers N
#  --upstream-timeout SECONDS   (upstream silence before a request/stream is aborted)
#  TLS on either leg needs a TLS build (-DLLMBRIDGE_TLS=ON); the default build is dependency-free.
#  --listen-tls --tls-cert CERT --tls-key KEY terminates the client's TLS. --config FILE names an upstream table.

Prefer a library? Call the translation functions directly from C++: llmbridge::provider::openai_to_anthropic_request(...) and back. Same zero-dependency core.

04 / Open source

Open source at the core

llmbridge is the fast gateway core, free under Apache 2.0. We maintain it; you use it without restriction.

Available now v0.54.1 · beta

  • Chat completions, drop-in OpenAI-compatible
  • SSE streaming (token-by-token) for OpenAI ↔ Anthropic, with back-pressure and usage passthrough
  • OpenAI ↔ Anthropic, Gemini and Cohere translation; AWS Bedrock (SigV4) and Azure OpenAI as venues
  • Byte-forward for OpenAI-compatible providers (Groq, Together, Fireworks, DeepInfra, Mistral, ...) and for Anthropic clients on an Anthropic venue
  • Tool calling: declarations, tool_choice, parallel calls, tool_result round-trip, streaming and non-streaming, and cache_control forwarded byte for byte
  • TLS on both legs: to real providers with credential passthrough, and --listen-tls for the client’s connection; verification is always on
  • An upstream table with per-request venue selection through a policy seam, and a failure hook that can re-dispatch a request
  • Per-request timing headers (gateway vs connect vs provider), time to first token and first thinking delta, the provider’s own token counts, and a request sink for a tape
  • Zero runtime dependencies · Linux · io_uring (epoll fallback)

On the roadmap next

  • Bedrock streaming: the AWS event-stream decoder, so a streamed request to Bedrock is served instead of refused
  • An Anthropic-speaking client to a Bedrock venue, which is what makes cross-venue routing for Claude reachable from Claude Code and the Anthropic SDKs
  • Vision / multimodal, Anthropic-in translation (an Anthropic client on an OpenAI venue), and streaming for Gemini / Cohere
  • Python / Go / Rust bindings
05 / The commercial layer

Run it hosted, or run it yourself.

The paid product is the intelligence, not the hosting. Two ways to take it: hosted, i.e. point your client at our endpoint and we operate the data plane; or self-hosted, the same container in your own VPC, so prompts and provider keys never leave your network, connected to our control plane for the routing intelligence. Same engine and same intelligence either way; the only difference is where the data plane runs. And llmbridge itself stays free under Apache 2.0 whichever you choose.

Best price-performance

The price book runs live today: the same model tracked across providers in real time (see the ~10× spread below). The latency/error book is measured on every hosted request: a rolling p95 per venue that routing consults. The cross-provider comparison is in build with design partners: venue selection routed by us when we host, recommended to your gateway when you host. At-cost token passthrough and a separate charge for the routing, never a percentage of token spend and never a token markup.

Production observability

Per-request tracing, token-cost attribution by team/project, budgets, and audit logs. Anonymized routing metadata only. prompt content is never logged.

Founder support

You work with us directly. Drop-in migration from LiteLLM/OpenRouter/Portkey: change your base URL and key, existing code works.

06 / Market

One model, many venues, one market.

The same model (say Llama-3.3-70B) is served by 15+ providers at up to ~10× price dispersion and 5–20× latency variance. That's a commodity market structure. We think it should be priced and executed like one. The people who execute in a commodity market best are the ones who've spent years pricing, executing, and measuring latency inside one.

Llama 3.3 70B · price per 1M tokens · same model, every provider loading live prices...
ProviderInput $/MOutput $/MQuantContextUptime
Fetching live prices from OpenRouter...

Live from OpenRouter when this page loads: the same model, priced up to ~10× apart across providers (Llama-3.3-70B today). But they differ on quantization, context, and uptime (columns at right), so the cheapest is often the quantized / smaller-context one. Routing captures the gap among providers that meet your SLA, not the cheapest overall. See the hosted gateway →

Inference has ratings agencies for the issuer and no tape for the fill.

Evals grade the model; nobody publishes what a given venue delivered on a given request. Corporate bonds traded that way until TRACE made the fills public in 2002, and spreads compressed without anyone adding a bid side. The full thesis: how inference trades, the inference map, and where the analogy breaks →

Kottos AI is building exchange-grade infrastructure for LLM inference: an open-source microsecond gateway today, real-time intelligence that establishes best price-performance next, and (as GPU compute financializes) price discovery for inference capacity itself. The open core is how you start; the routing intelligence is where it compounds.

07 / Contact

Run your first request through Kottos AI.

The hosted gateway is in private beta with a few design-partner slots open. Voice agents, agentic systems and high-volume APIs, anything where latency and venue choice show up in the bill, are the workloads we want to see first.