Everyone calls their product a "gateway" now. LiteLLM markets itself as both a proxy and a gateway. Portkey is a gateway. Helicone's docs use proxy and gateway interchangeably. There's a well-cited Medium post by Bijit Ghosh that ranks on Google for this comparison — correct high-level definitions, but it stops before the implementation details that tell you what to actually choose and deploy.
Here's the precise version: three different layers, concrete Go code for each, and a decision framework based on team size.
TL;DR:
Proxy = transport layer. Pipes requests from your app to the provider
Router = decision layer. Chooses which model or provider handles the request
Gateway = policy layer. Auth, rate limits, budget enforcement, audit trails
They're not separate products — they're three layers of the same stack
The Proxy: Transport Layer
A proxy intercepts your HTTP request and forwards it to the provider. Your app changes one thing: the base_url.
// Before
Discussion
Start the conversation
Your voice can be the first to spark an engaging conversation.