<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Muralidharan Deenathayalan</title>
    <description>The latest articles on DEV Community by Muralidharan Deenathayalan (@muralidharand).</description>
    <link>https://dev.to/muralidharand</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F273763%2F966b6a77-175c-4ae6-8ae0-27242e3a7544.png</url>
      <title>DEV Community: Muralidharan Deenathayalan</title>
      <link>https://dev.to/muralidharand</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/muralidharand"/>
    <language>en</language>
    <item>
      <title>What Is AgentGateway? The AI-Native Gateway, Explained for Newbies and Pros</title>
      <dc:creator>Muralidharan Deenathayalan</dc:creator>
      <pubDate>Fri, 03 Jul 2026 04:29:41 +0000</pubDate>
      <link>https://dev.to/muralidharand/what-is-agentgateway-the-ai-native-gateway-explained-for-newbies-and-pros-4m0d</link>
      <guid>https://dev.to/muralidharand/what-is-agentgateway-the-ai-native-gateway-explained-for-newbies-and-pros-4m0d</guid>
      <description>&lt;h1&gt;
  
  
  What Is AgentGateway? The AI-Native Gateway, Explained for Newbies and Pros
&lt;/h1&gt;

&lt;p&gt;Spend a week building with AI agents and you hit the same wall I did. The moment there's more than one agent, model, or tool in play, nothing is actually in charge of the traffic moving between them.&lt;/p&gt;

&lt;p&gt;Two protocols took a swing at the chaos. &lt;strong&gt;MCP&lt;/strong&gt; (&lt;strong&gt;M&lt;/strong&gt;odel &lt;strong&gt;C&lt;/strong&gt;ontext &lt;strong&gt;P&lt;/strong&gt;rotocol) standardizes how an agent talks to tools; think of it as a USB-C port for tools. &lt;strong&gt;A2A&lt;/strong&gt; (&lt;strong&gt;A&lt;/strong&gt;gent-to-&lt;strong&gt;A&lt;/strong&gt;gent) standardizes how agents hand work off to each other. Both are genuinely useful. The problem is that they only describe how the messages are &lt;em&gt;shaped&lt;/em&gt;. They say nothing about who's allowed to call what, what it costs you, or how you'd debug any of it in production. No authentication, no authorization, no spend control, no audit trail.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AgentGateway&lt;/strong&gt; is the layer that fills that gap. This is Post 1 of the series, so I'll keep it grounded: what AgentGateway actually is, the four modes it runs in, and the two bits of jargon you'll trip over everywhere else, data plane and control plane.&lt;/p&gt;




&lt;h2&gt;
  
  
  The short version
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;AgentGateway is an open-source, Rust-based proxy that sits between your apps and everything they talk to (LLMs, tools, and other agents) and adds the security, governance, and observability the raw protocols leave out.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A few things worth knowing before we go deeper:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;It's open source under &lt;strong&gt;Apache 2.0&lt;/strong&gt;, and it's written in Rust, which matters here because a lot of agent traffic rides on long-lived connections that a slower proxy would choke on.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It's hosted by the &lt;strong&gt;Linux Foundation&lt;/strong&gt; and recently joined the Agentic AI Foundation (&lt;strong&gt;AAIF&lt;/strong&gt;).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It speaks &lt;strong&gt;MCP&lt;/strong&gt; and &lt;strong&gt;A2A&lt;/strong&gt; natively, but it also handles ordinary &lt;strong&gt;HTTP&lt;/strong&gt; and &lt;strong&gt;gRPC&lt;/strong&gt;. So it isn't a bolt-on "AI sidebar" living next to your real infrastructure.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That last point is really the whole pitch. One gateway for your AI traffic and your normal API traffic, instead of running and securing two separate things.&lt;/p&gt;




&lt;h2&gt;
  
  
  The four modes
&lt;/h2&gt;

&lt;p&gt;I find the easiest way to hold AgentGateway in your head is "&lt;em&gt;three agentic patterns&lt;/em&gt;, plus the &lt;em&gt;boring traditional one&lt;/em&gt;." But before the picture of it working, look at the picture of life without it.&lt;/p&gt;

&lt;p&gt;With no gateway, every app wires straight to every backend. Each one carries its own API keys, its own auth, its own retry logic, its own logging, all of it duplicated, and nothing anywhere has a full view of what's calling what. With &lt;em&gt;N&lt;/em&gt; apps and &lt;em&gt;M&lt;/em&gt; backends, you've built yourself an &lt;strong&gt;&lt;em&gt;N × M&lt;/em&gt;&lt;/strong&gt; tangle:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fck7lx702if3ho597e8ya.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fck7lx702if3ho597e8ya.png" alt="Gateway" width="368" height="479"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AgentGateway&lt;/strong&gt; collapses that mesh down to a single governed front door. Same proxy, same policies, four kinds of backend behind it:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqh4yxmv5nm8mbsi0neze.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqh4yxmv5nm8mbsi0neze.png" alt="AgentGateway" width="781" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  1. LLM mode (agent to LLM)
&lt;/h3&gt;

&lt;p&gt;This is the mode most teams reach for first. You point your apps at one OpenAI-compatible endpoint, and AgentGateway deals with the mess behind it: spreading requests across OpenAI, Anthropic, Gemini, Bedrock, or whatever model you're self-hosting, and failing over when one of them falls down.&lt;/p&gt;

&lt;p&gt;The load balancing is smarter than round-robin. It uses &lt;strong&gt;Power of Two Choices (P2C)&lt;/strong&gt;: it samples two providers and sends the request to whichever looks healthier on latency and pending load, so a struggling provider quietly sheds traffic on its own. On top of that you get token-based rate limits per user, team, or key. That's your guard against what folks have started calling "denial-of-wallet," a runaway agent loop chewing through your budget while you sleep.&lt;/p&gt;

&lt;p&gt;Here's a minimal two-provider config, OpenAI and Gemini behind a single route:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# yaml-language-server: $schema=https://agentgateway.dev/schema/config&lt;/span&gt;
&lt;span class="na"&gt;binds&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;port&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;3000&lt;/span&gt;
  &lt;span class="na"&gt;listeners&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;routes&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;backends&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;ai&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;groups&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;providers&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;openai&lt;/span&gt;
              &lt;span class="na"&gt;provider&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
                &lt;span class="na"&gt;openAI&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
                  &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;gpt-3.5-turbo&lt;/span&gt;        &lt;span class="c1"&gt;# optional; overrides the model in requests&lt;/span&gt;
              &lt;span class="na"&gt;backendAuth&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
                &lt;span class="na"&gt;key&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;$OPENAI_API_KEY"&lt;/span&gt;
            &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;gemini&lt;/span&gt;
              &lt;span class="na"&gt;provider&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
                &lt;span class="na"&gt;gemini&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
                  &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;gemini-1.5-flash-latest&lt;/span&gt;
              &lt;span class="na"&gt;backendAuth&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
                &lt;span class="na"&gt;key&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;$GEMINI_API_KEY"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Your app code never changes. It keeps calling a normal &lt;code&gt;/chat/completions&lt;/code&gt; endpoint, and the failover, key handling, and cost attribution all happen at the gateway.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. MCP mode (agent to tool)
&lt;/h3&gt;

&lt;p&gt;Picture an agent that needs GitHub, a database, and a search API. The obvious move is to wire it directly to all three MCP servers. AgentGateway lets it talk to one MCP endpoint instead, and federates the servers behind that.&lt;/p&gt;

&lt;p&gt;The security payoff is per-session tool filtering. A given client only ever sees the tools it's allowed to use, which is where RBAC and defenses against tool-poisoning attacks come into play.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# yaml-language-server: $schema=https://agentgateway.dev/schema/config&lt;/span&gt;
&lt;span class="na"&gt;binds&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;port&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;3000&lt;/span&gt;
  &lt;span class="na"&gt;listeners&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;routes&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;policies&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;cors&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;allowOrigins&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;*"&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
          &lt;span class="na"&gt;allowHeaders&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;*"&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
          &lt;span class="na"&gt;exposeHeaders&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Mcp-Session-Id"&lt;/span&gt;   &lt;span class="c1"&gt;# required so sessions persist across calls&lt;/span&gt;
      &lt;span class="na"&gt;backends&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;mcp&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;targets&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;mcp&lt;/span&gt;
            &lt;span class="na"&gt;mcp&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
              &lt;span class="na"&gt;host&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;http://localhost:3005/mcp/&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Worth a note for anyone who's run gateways before, because this is exactly where the older ones fall over. MCP is stateful. A client and server hold a long-lived session, messages travel both directions, and one "list tools" call can fan out to several backends and come back aggregated. AgentGateway pins each session to a backend and packs the session state into the &lt;code&gt;Mcp-Session-Id&lt;/code&gt; (encrypted with AES-256-GCM), so every follow-up call lands back on the same server. A gateway designed around stateless request/response simply can't model that, which is why so many of them buckle the first time you point real MCP traffic at them.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. A2A mode (agent to agent)
&lt;/h3&gt;

&lt;p&gt;Agent A hands a long-running task to Agent B. A2A defines the shape of that handoff, but not the governance around it: who's allowed to delegate to whom, and how you trace the thing once it's running. Put AgentGateway in the middle and you get authentication, authorization, and end-to-end tracing across that boundary. Those happen to be the parts A2A leaves entirely up to you.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. HTTP/gRPC mode (the unified part)
&lt;/h3&gt;

&lt;p&gt;This is the mode people forget, and it's arguably the reason adopting AgentGateway pays off at all. Your plain REST and microservice traffic runs through the same gateway, with the same load balancing, timeouts, retries, TLS, and authorization you've configured everywhere else. You can even take an existing REST API and expose it as an MCP tool. No standing up a separate "AI gateway" beside your "real" one. It's one proxy and one policy set covering both.&lt;/p&gt;




&lt;h2&gt;
  
  
  Data plane vs. control plane
&lt;/h2&gt;

&lt;p&gt;These two terms turn up in every gateway and service-mesh doc going, and they reliably trip people up. Here's the version that finally stuck for me.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Picture a restaurant:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The data plane is the floor staff and the kitchen. They take every order and carry every plate, handling each table (each request) in real time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The control plane is the manager in the back office. They never serve a table themselves. They write the menu, set the rules, decide which section each server covers, update the specials, then push all that out to the floor.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqvbjplmxgna2tfht0bjx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqvbjplmxgna2tfht0bjx.png" alt="Data plane" width="359" height="481"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mapped onto the product&lt;/strong&gt;: AgentGateway itself is the data plane, the Rust proxy doing the real-time work on every request, from routing to auth to rate limiting to tracing. The control plane is whatever configures those proxies. AgentGateway accepts config dynamically over an xDS interface with no downtime, and it conforms to the Kubernetes Gateway API. On Kubernetes, the recommended control plane for spinning up and managing AgentGateway proxies is kgateway.&lt;/p&gt;

&lt;p&gt;If you remember one sentence, make it this: the data plane handles and secures every request in real time, and the control plane decides the rules and pushes them down. You can run &lt;strong&gt;AgentGateway&lt;/strong&gt; standalone with a static &lt;code&gt;config.yaml&lt;/code&gt; (the snippets above are exactly that) or let a control plane drive it inside Kubernetes. Same proxy underneath, either way.&lt;/p&gt;




&lt;h2&gt;
  
  
  Key terms, in one place
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Term&lt;/th&gt;
&lt;th&gt;What it means here&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;MCP&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Model Context Protocol. How agents call tools and data. Stateful, JSON-RPC.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;A2A&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Agent-to-Agent. How agents delegate tasks to each other.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Data plane&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;The proxy that moves and inspects every request. AgentGateway itself.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Control plane&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;The component that configures the proxies, e.g. kgateway on Kubernetes.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;xDS&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;The interface for pushing config to the proxy live, with no restart.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;P2C&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Power of Two Choices. The load-balancing strategy across LLM providers.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Tool federation&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Exposing many MCP servers through one endpoint, filtered per client.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Denial-of-wallet&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;A cost attack via runaway token usage. Stopped with token rate limits.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Where this is going
&lt;/h2&gt;

&lt;p&gt;So that's the idea. AgentGateway gives your agents, models, tools, and ordinary APIs one governed front door, running in four modes (LLM, MCP, A2A, HTTP/gRPC), with a clean split between the proxy that does the work and the control plane that sets the rules.&lt;/p&gt;

&lt;p&gt;Next time I'll get hands-on: install the binary, run the LLM config from above, and actually watch failover and spend limits kick in. Bring a couple of API keys.&lt;/p&gt;




&lt;h3&gt;
  
  
  Further reading
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;AgentGateway docs, Introduction&lt;/strong&gt;: &lt;a href="https://agentgateway.dev/docs/standalone/main/about/introduction/" rel="noopener noreferrer"&gt;https://agentgateway.dev/docs/standalone/main/about/introduction/&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Multiple LLM providers (P2C load balancing)&lt;/strong&gt;: &lt;a href="https://agentgateway.dev/docs/standalone/main/llm/providers/multiple-llms/" rel="noopener noreferrer"&gt;https://agentgateway.dev/docs/standalone/main/llm/providers/multiple-llms/&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Connect to MCP servers (Streamable HTTP)&lt;/strong&gt;: &lt;a href="https://agentgateway.dev/docs/standalone/main/mcp/connect/http/" rel="noopener noreferrer"&gt;https://agentgateway.dev/docs/standalone/main/mcp/connect/http/&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;GitHub&lt;/strong&gt;: &lt;a href="https://github.com/agentgateway/agentgateway" rel="noopener noreferrer"&gt;https://github.com/agentgateway/agentgateway&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Linux Foundation announcement&lt;/strong&gt;: &lt;a href="https://www.linuxfoundation.org/press/linux-foundation-welcomes-agentgateway-project-to-accelerate-ai-agent-adoption-while-maintaining-security-observability-and-governance" rel="noopener noreferrer"&gt;https://www.linuxfoundation.org/press/linux-foundation-welcomes-agentgateway-project-to-accelerate-ai-agent-adoption-while-maintaining-security-observability-and-governance&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>agentgateway</category>
      <category>mcp</category>
      <category>llmgateway</category>
    </item>
    <item>
      <title>Understanding DORA Metrics: A Beginner's Guide to Measuring DevOps Performance</title>
      <dc:creator>Muralidharan Deenathayalan</dc:creator>
      <pubDate>Sat, 02 Nov 2024 09:38:03 +0000</pubDate>
      <link>https://dev.to/muralidharand/understanding-dora-metrics-a-beginners-guide-to-measuring-devops-performance-cdf</link>
      <guid>https://dev.to/muralidharand/understanding-dora-metrics-a-beginners-guide-to-measuring-devops-performance-cdf</guid>
      <description>&lt;p&gt;DORA (DevOps Research &amp;amp; Assessment) metrics consist of  essential measurements used to evaluate a software development team’s performance. Developed by Google’s DORA team over six years, these metrics are based on insights gathered from more than 31,000 professionals worldwide.&lt;br&gt;
The key metrics are below.&lt;/p&gt;

&lt;h1&gt;
  
  
  1. Deployment Frequency (DF)
&lt;/h1&gt;

&lt;h1&gt;
  
  
  2. Lead Time for changes (LT)
&lt;/h1&gt;

&lt;h1&gt;
  
  
  3. Mean Time To Recovery (MTTR)
&lt;/h1&gt;

&lt;h1&gt;
  
  
  4. Change Failure Rate (CFR)
&lt;/h1&gt;

&lt;p&gt;Why DORA metrics are important?&lt;/p&gt;

&lt;p&gt;Helps you to predict software delivery performance&lt;br&gt;
It focuses on Outcomes and not on Outputs&lt;br&gt;
It is language and technology agnostic&lt;br&gt;
Helps you to identify improvement areas &lt;br&gt;
Let's start look into each metric in detail.&lt;/p&gt;

&lt;h1&gt;
  
  
  1. Deployment Frequency (DF)
&lt;/h1&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Deployment Frequency measures how often code changes are deployed to production, reflecting the agility of the development team in delivering updates, new features, and bug fixes. This metric directly indicates the team’s ability to bring value to end-users quickly and is essential for assessing the efficiency of the deployment process. This can be daily, daily, weekly, or monthly. This metrics gives insight on how frequently the team can deliver incremental improvements to users.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Why DF is important ? &lt;br&gt;
    The higher value of Deployment Frequency shows that the team can deliver new features, bug fixes, and enhancements will be quick and consistent. Frequent deployments suggest a team can respond quickly to customer feedback, market changes, critical bug fixes and security vulnerabilities. &lt;/p&gt;

&lt;p&gt;How to Calculate? &lt;br&gt;
    To determine this metric value, count the total number of deployments made into production for a given time period and this can be daily, weekly, or monthly.&lt;br&gt;
Performance Levels&lt;/p&gt;

&lt;p&gt;Elite: Teams in this category perform at the highest level of efficiency, deploying multiple times per day. This level indicates a highly automated and well-maintained deployment pipeline with minimal or no friction.&lt;/p&gt;

&lt;p&gt;High: Teams deploying between once per day to once per week. High-frequency deployments demonstrate the team’s capability to roll out updates regularly without needing daily releases.&lt;/p&gt;

&lt;p&gt;Medium: Teams deploying between once per week to once per month. This level suggests some stability in the deployment process but may indicate manual steps or longer testing cycles that slow down deployment.&lt;/p&gt;

&lt;p&gt;Low: Teams deploying less than once per month or higher. This low value indicates that the team uses more traditional approach, with longer release cycles. There are opportunities for increasing automation, testing speed, or process improvement.&lt;/p&gt;

&lt;h1&gt;
  
  
  2 .Lead Time for Changes (LT)
&lt;/h1&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Lead Time for Changes measures the time it takes for code changes to progress from the first commit to production deployment. This metric reflects the team's ability to respond to business needs effectively and deliver updates quickly.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Why it is Important? &lt;br&gt;
    A shorter Lead Time for Changes indicates that the team can address business requirements, bug fixes, customer feedback, and market changes more swiftly.&lt;/p&gt;

&lt;p&gt;How to Measure ? &lt;br&gt;
    To calculate this metric, determine the median time from code commit to production deployment. Using the median minimizes the influence of outliers, providing a clearer view of typical lead times.&lt;br&gt;
Performance Levels:&lt;/p&gt;

&lt;p&gt;Elite: Less than one hour. This level indicates a highly optimized process with efficient pipelines and minimal bottlenecks.&lt;/p&gt;

&lt;p&gt;High: Between one day and one week. Teams at this level balance speed with quality, demonstrating a well-managed release process.&lt;/p&gt;

&lt;p&gt;Medium: Between one week and one month. This level reflects a stable process with potential for improvement, such as reducing manual steps or dependencies that may be causing delays.&lt;/p&gt;

&lt;p&gt;Low: More than one month. higher lead times at this level highlight areas for improvement, including opportunities for enhanced automation, dependency reduction, or more streamlined testing.&lt;/p&gt;

&lt;h1&gt;
  
  
  3. Mean Time to Recovery (MTTR)
&lt;/h1&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Mean Time to Recovery (MTTR) measures the average time required to restore service after an incident is detected or reported. This metric indicates the team's effectiveness in managing and resolving issues promptly.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Why it is important?&lt;br&gt;
    A shorter MTTR reflects a team’s readiness and capability to manage unexpected failures, minimizing downtime and its impact on users and the business. Lower recovery times demonstrate a robust incident management process and enhance reliability.&lt;/p&gt;

&lt;p&gt;How to Calculate?&lt;br&gt;
    To calculate MTTR, find the average time taken from the identification of a problem to the resolution or fix. This average provides a realistic view of the typical recovery time, helping teams identify and reduce bottlenecks in their incident response process.&lt;/p&gt;

&lt;p&gt;Performance Levels&lt;/p&gt;

&lt;p&gt;Elite: Less than one hour. This level represents a highly effective and streamlined incident response process, ensuring rapid recovery.&lt;/p&gt;

&lt;p&gt;High: Less than one day. Teams at this level demonstrate solid recovery processes, restoring service within a reasonable timeframe.&lt;/p&gt;

&lt;p&gt;Medium: Less than one week. This level indicates a moderate response time, but there may be opportunities to improve processes and reduce dependencies causing delays.&lt;/p&gt;

&lt;p&gt;Low: More than one week. Extended recovery times suggest a need for process improvements, such as refining detection, response procedures, or streamlining incident management workflows.&lt;/p&gt;

&lt;h1&gt;
  
  
  4. Change Failure Rate (CFR)
&lt;/h1&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Change Failure Rate (CFR) measures the percentage of code changes that result in service degradation or require remediation. This metric indicates the stability and reliability of the deployment process.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Why it is important?&lt;br&gt;
    A lower Change Failure Rate reflects a stable and mature delivery process with minimal disruptions caused by new deployments. CFR helps identify areas for improvement, guiding teams to enhance testing, deployment practices, and quality assurance.&lt;/p&gt;

&lt;p&gt;How to Calculate?&lt;br&gt;
    To calculate CFR, divide the number of failed changes by the total number of changes and multiply by 100. This percentage shows the likelihood of failures occurring with each deployment, highlighting process quality.&lt;/p&gt;

&lt;p&gt;Performance Levels&lt;/p&gt;

&lt;p&gt;Elite: 0–15%. This level demonstrates an exceptionally stable process, with most changes deployed smoothly and minimal need for rollbacks or fixes.&lt;/p&gt;

&lt;p&gt;High: 16–30%. Teams at this level maintain a strong process, though occasional issues may arise that need attention.&lt;/p&gt;

&lt;p&gt;Medium: 31–45%. This level suggests that while deployments are generally stable, there is room for process and quality improvements to reduce failures.&lt;/p&gt;

&lt;p&gt;Low: 46% and above. High failure rates indicate the need for significant improvements in testing, quality control, or deployment practices to enhance stability.&lt;/p&gt;

&lt;p&gt;Summary:&lt;/p&gt;

&lt;p&gt;By understanding and optimizing Deployment Frequency (DF), teams can better align their practices with DevOps principles, promoting agility, rapid feedback, and faster delivery of value.&lt;/p&gt;

&lt;p&gt;Lead Time for Changes (LT) is crucial for aligning development speed with business agility, helping teams deliver high-impact updates faster.&lt;/p&gt;

&lt;p&gt;Mean Time to Recovery (MTTR) is a key metric for measuring reliability and responsiveness, helping teams focus on improving resilience and reducing downtime.&lt;/p&gt;

&lt;p&gt;Change Failure Rate (CFR) is a key indicator of delivery reliability and supports continuous improvement efforts by reducing disruptions caused by deployments.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
