<?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: Shubham</title>
    <description>The latest articles on DEV Community by Shubham (@shubham_f98d63c2451d6e035).</description>
    <link>https://dev.to/shubham_f98d63c2451d6e035</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%2F2438331%2F574f78ae-312b-4602-8308-26f61208983c.png</url>
      <title>DEV Community: Shubham</title>
      <link>https://dev.to/shubham_f98d63c2451d6e035</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/shubham_f98d63c2451d6e035"/>
    <language>en</language>
    <item>
      <title>Browser automation for AI agents, in a single 7 MB binary</title>
      <dc:creator>Shubham</dc:creator>
      <pubDate>Mon, 27 Jul 2026 03:29:06 +0000</pubDate>
      <link>https://dev.to/shubham_f98d63c2451d6e035/browser-automation-for-ai-agents-in-a-single-7-mb-binary-1pmm</link>
      <guid>https://dev.to/shubham_f98d63c2451d6e035/browser-automation-for-ai-agents-in-a-single-7-mb-binary-1pmm</guid>
      <description>&lt;p&gt;Kitewright gives LLM agents a real browser — navigate, screenshot, extract, PDF — without the Node.js and Playwright weight. Written in Rust, installs in one line.&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%2Focpc5kqjhxmnrdnjkuz8.gif" 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%2Focpc5kqjhxmnrdnjkuz8.gif" alt=" " width="800" height="452"&gt;&lt;/a&gt;&lt;br&gt;
AI agents are getting good at using tools, and "drive a real browser" is one of the most useful tools you can give them: log into a dashboard, pull a number, fill a form, turn a page into a PDF.The&lt;br&gt;
problem is what it costs to set up. Almost every option drags in the full Node.js + Playwright stack — a runtime to install and 100+ MB of memory sitting idle before the agent does anything.&lt;/p&gt;

&lt;p&gt;Kitewright is a lighter answer. It's an MCP server — the standard way agents call tools — that gives an LLM a real Chromium browser through a single ~7 MB static binary written in Rust. No Node runtime, no heavyweight install. One line and it's running:&lt;/p&gt;

&lt;p&gt;npx @kitewright/mcp&lt;/p&gt;

&lt;p&gt;## Small and fast, measured&lt;/p&gt;

&lt;p&gt;I care about honest numbers, so here they are, head to head against the Node/Playwright equivalent on the same machine and the same Chromium:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cold start to listening: 75 ms vs ~350 ms&lt;/li&gt;
&lt;li&gt;Idle memory: ~8 MB vs 100–125 MB&lt;/li&gt;
&lt;li&gt;Distribution: one 6.9 MB binary vs an 18 MB package plus a Node runtime&lt;/li&gt;
&lt;li&gt;The browser is reaped when idle and pre-warmed again on the next session, so idle cost stays near zero And the honest caveat, because trust matters: once a page is actually loading, navigation latency is a tie — everyone is speaking the same protocol to the same browser, and the network is the network.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The wins are startup, memory, and shipping as one binary. That's exactly what matters when you're running a browser next to a local model, in a container, or across a fleet.&lt;/p&gt;

&lt;p&gt;## Built for agents, not just scripts&lt;/p&gt;

&lt;p&gt;An LLM driving a browser fails differently than a human does, so the reliability model is different too. Clicks and typing don't fire blindly — Kitewright waits for the target element to be present, visible, enabled, un-covered, and settled, then either acts or returns a specific reason it couldn't: not found, not visible, disabled, covered, or unstable. No silent misclicks, and the agent gets an error it can actually reason about.&lt;/p&gt;

&lt;p&gt;There are 23 tools in total: navigate, screenshot, extract and extract-to-markdown, accessibility snapshots, form filling, clicks and typing, key presses, network and console inspection, HTML→PDF, and save/restore of session state so a login survives across runs. It speaks both stdio and Streamable HTTP, and it's in the official MCP registry.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;Kitewright is MIT-licensed and open source.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;npx @kitewright/mcp&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;or add it to an MCP client directly:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;claude mcp add kitewright -- npx -y @kitewright/mcp&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Repo, benchmarks, and a demo GIF: &lt;a href="https://github.com/kitewright/kitewright" rel="noopener noreferrer"&gt;https://github.com/kitewright/kitewright&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you're building anything where an agent needs to touch the web, I'd love your feedback — especially on the tool surface.&lt;/p&gt;

</description>
      <category>devops</category>
      <category>ai</category>
      <category>genai</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
