<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>The Frontier Wire: Tools</title><description>Reviews and field notes on the models, frameworks and products people actually build with.</description><link>https://thefrontierwire.com/</link><language>en</language><atom:link href="https://thefrontierwire.com/tools/rss.xml" rel="self" type="application/rss+xml"/><image><url>https://thefrontierwire.com/icon-512.png</url><title>The Frontier Wire: Tools</title><link>https://thefrontierwire.com/</link></image><lastBuildDate>Fri, 25 Sep 2026 20:07:10 GMT</lastBuildDate><item><title>Field notes: running an AI gateway in front of every model call</title><link>https://thefrontierwire.com/articles/running-an-ai-gateway-in-front-of-every-model-call/</link><guid isPermaLink="true">https://thefrontierwire.com/articles/running-an-ai-gateway-in-front-of-every-model-call/</guid><description>What an AI gateway does, what it costs you in latency, and the four features that turned out to matter after six months in production.</description><pubDate>Fri, 18 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;An AI gateway is a proxy that sits between your applications and the model providers they call. Every request goes through it, and in exchange it gives you one place to handle keys, routing, retries, budgets and logging. This piece is about what that looked like for a mid-sized engineering team that put one in front of everything, and which of the promised benefits materialised.&lt;/p&gt;
&lt;h2&gt;Why we did it&lt;/h2&gt;
&lt;p&gt;We had four services calling three providers with keys scattered through environment variables. A pricing change at one provider took a week to fully roll out because each team had hard-coded model names. When one provider had an outage, three of the four services simply failed. None of this was exotic; it was the natural state of a team that had adopted models quickly.&lt;/p&gt;
&lt;h2&gt;What the gateway gave us&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;One interface.&lt;/strong&gt; Every service now speaks a single request format and names a model by an alias. Swapping the model behind an alias is a configuration change, not a deploy. This alone paid for the migration.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fallbacks and retries.&lt;/strong&gt; When a provider returns an error or times out, the gateway retries and then fails over to a second provider. Outages became latency blips rather than incidents.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Budgets by team.&lt;/strong&gt; Each service authenticates with its own virtual key, and each key has a monthly spend limit and a rate limit. Finance can see who spent what without asking engineering.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;A single log.&lt;/strong&gt; Every request, its latency, token counts and cost land in one place. This turned out to be the feature we used most: it is where we found the two endpoints responsible for most of our spend.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The gateway did not make the models better. It made our use of them legible.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;What it cost&lt;/h2&gt;
&lt;p&gt;Latency overhead was small: single-digit milliseconds per request once the gateway was deployed in the same region as our services. The larger costs were organisational. Someone has to own the gateway&apos;s configuration, and the routing rules become a thing that can be wrong. We had one incident where a fallback rule silently sent traffic to a model that was cheaper but noticeably worse, and nobody noticed for two days because the requests were succeeding.&lt;/p&gt;
&lt;p&gt;That incident is why evaluation now sits beside the gateway. Routing changes are tested against a fixed set of real prompts before they ship.&lt;/p&gt;
&lt;h2&gt;Choosing one&lt;/h2&gt;
&lt;p&gt;The category is crowded and the feature lists look similar. Four things separated the options for us:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Criterion&lt;/th&gt;
&lt;th&gt;What to check&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Overhead&lt;/td&gt;
&lt;td&gt;Measure p99 latency added at your real request rate, not the vendor&apos;s number.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Provider coverage&lt;/td&gt;
&lt;td&gt;Every provider you use today and the two you are evaluating.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Governance&lt;/td&gt;
&lt;td&gt;Per-key budgets, rate limits, and an audit log that survives a restart.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Deployment&lt;/td&gt;
&lt;td&gt;Self-hosted in your own network, or managed. Data residency usually decides this.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;We shortlisted three, ran a week of shadow traffic through each, and chose on overhead and governance. The exact product matters less than the discipline of testing it with your own traffic before you commit.&lt;/p&gt;
</content:encoded><dc:creator>The Frontier Wire editors</dc:creator><media:content url="https://thefrontierwire.com/og/running-an-ai-gateway-in-front-of-every-model-call.png" type="image/png" width="1200" height="630" medium="image"/><category>Tools</category><category>AI gateways</category><category>Infrastructure</category><category>Field notes</category></item></channel></rss>