<?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: Vadim</title>
    <description>The latest articles on DEV Community by Vadim (@vaad2).</description>
    <link>https://dev.to/vaad2</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F437055%2F852c8af4-0464-40bc-a66a-d672b73048c7.png</url>
      <title>DEV Community: Vadim</title>
      <link>https://dev.to/vaad2</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/vaad2"/>
    <language>en</language>
    <item>
      <title>I built Agent Shield an open-source traffic control layer for AI coding agents.</title>
      <dc:creator>Vadim</dc:creator>
      <pubDate>Tue, 28 Apr 2026 20:48:31 +0000</pubDate>
      <link>https://dev.to/vaad2/i-built-agent-shield-an-open-source-traffic-control-layer-for-ai-coding-agents-1pjd</link>
      <guid>https://dev.to/vaad2/i-built-agent-shield-an-open-source-traffic-control-layer-for-ai-coding-agents-1pjd</guid>
      <description>&lt;p&gt;The idea is simple: AI agents send a lot of stuff over the network: prompts, code snippets, logs, tool output, telemetry, sometimes secrets. Most of that is hidden inside the CLI.&lt;/p&gt;

&lt;p&gt;Agent Shield sits between the agent and the network, so you can see and control what goes out.&lt;/p&gt;

&lt;h3&gt;
  
  
  What you can do with it
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;See traffic&lt;/strong&gt; — inspect HTTP, WebSocket, and SSE traffic from AI tools in real time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Audit and observability&lt;/strong&gt; — record what was sent, where it went, which tool produced it, when it happened, and which decision was applied.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data protection and DLP&lt;/strong&gt; — stop secrets, private code, customer data, internal logs, or environment details before they leave the machine; run traffic through custom rules, a local classifier, a DLP service, or a local LLM.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Modify packets&lt;/strong&gt; — redact, replace, block, or reroute requests and responses.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Model routing&lt;/strong&gt; — send simple work to a local model via Ollama or llama.cpp, route harder tasks to external APIs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cost control&lt;/strong&gt; — attach counters, budgets, latency rules, and project-specific policies outside the AI client itself.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agent orchestration&lt;/strong&gt; — observe and coordinate multiple CLI agents through one traffic layer instead of writing a custom integration per client.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Worker status&lt;/strong&gt; — see which agent is busy, which is free, what task it is on, and where it may be blocked.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Alerts&lt;/strong&gt; — plug in listeners for Telegram, dashboards, logs, or analytics.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Client independence&lt;/strong&gt; — keep control outside the vendor UI, pricing model, telemetry settings, and protocol changes.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;

&lt;p&gt;There are two extension points:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Listeners&lt;/strong&gt; get a copy of the event. They do not block traffic. Good for logs, alerts, dashboards, and analytics.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Decision handlers&lt;/strong&gt; run before traffic continues. They can allow, block, modify, replace, or route it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Current pieces:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;MITM proxy for explicitly routed traffic&lt;/li&gt;
&lt;li&gt;HTTP, websocket, and SSE handling&lt;/li&gt;
&lt;li&gt;normalized events&lt;/li&gt;
&lt;li&gt;REST listeners and handlers&lt;/li&gt;
&lt;li&gt;NATS event flow&lt;/li&gt;
&lt;li&gt;dashboard for captured traffic&lt;/li&gt;
&lt;li&gt;worker status signals&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.amazonaws.com%2Fuploads%2Farticles%2Fej0yb3s4dn6dgyh2zo1j.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.amazonaws.com%2Fuploads%2Farticles%2Fej0yb3s4dn6dgyh2zo1j.png" alt="AS architecture" width="800" height="475"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I built it
&lt;/h2&gt;

&lt;p&gt;AI agents are becoming part of the dev workflow, but we still treat their network traffic like a black box.&lt;/p&gt;

&lt;p&gt;Terminal control is useful, but it does not answer the important question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What did the agent actually send out?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Agent Shield gives that traffic a clear control point.&lt;/p&gt;

&lt;p&gt;Repo: &lt;a href="https://github.com/bytepiper/agent-shield" rel="noopener noreferrer"&gt;agent-shield&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
