<?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: Japneet Kalkat</title>
    <description>The latest articles on DEV Community by Japneet Kalkat (@jassskalkat).</description>
    <link>https://dev.to/jassskalkat</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%2F3945024%2Fd3a97888-4d31-45cf-a0b9-00600afb5310.jpeg</url>
      <title>DEV Community: Japneet Kalkat</title>
      <link>https://dev.to/jassskalkat</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jassskalkat"/>
    <language>en</language>
    <item>
      <title>I built Agentyc to make browser automation for AI agents more predictable</title>
      <dc:creator>Japneet Kalkat</dc:creator>
      <pubDate>Fri, 22 May 2026 01:31:07 +0000</pubDate>
      <link>https://dev.to/jassskalkat/i-built-agentyc-to-make-browser-automation-for-ai-agents-more-predictable-4pf5</link>
      <guid>https://dev.to/jassskalkat/i-built-agentyc-to-make-browser-automation-for-ai-agents-more-predictable-4pf5</guid>
      <description>&lt;p&gt;A lot of browser tools for AI agents look impressive in demos but become hard to trust in real work.&lt;/p&gt;

&lt;p&gt;They click around, extract something fuzzy, and when they fail, it is not obvious why.&lt;/p&gt;

&lt;p&gt;I built &lt;a href="https://github.com/distillation-labs/agentyc" rel="noopener noreferrer"&gt;Agentyc&lt;/a&gt; to make this simpler.&lt;/p&gt;

&lt;p&gt;Agentyc is an MCP-first browser runtime for coding agents. The goal is straightforward:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;give the agent a real browser&lt;/li&gt;
&lt;li&gt;make the actions deterministic&lt;/li&gt;
&lt;li&gt;make the page state inspectable&lt;/li&gt;
&lt;li&gt;avoid hidden LLM fallback for common extraction tasks&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;I wanted something that felt closer to debuggable browser automation than a black-box browser agent.&lt;/p&gt;

&lt;p&gt;If an agent opens a page, clicks a button, types into a form, or extracts a table, I want to know:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;what page state it saw&lt;/li&gt;
&lt;li&gt;which element it targeted&lt;/li&gt;
&lt;li&gt;what changed after the action&lt;/li&gt;
&lt;li&gt;what the console and network looked like if it broke&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is the problem Agentyc tries to solve.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it can do
&lt;/h2&gt;

&lt;p&gt;With the default MCP server, a coding agent can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;navigate pages&lt;/li&gt;
&lt;li&gt;click, type, scroll, and upload files&lt;/li&gt;
&lt;li&gt;inspect page state with stable element refs&lt;/li&gt;
&lt;li&gt;take screenshots&lt;/li&gt;
&lt;li&gt;read HTML&lt;/li&gt;
&lt;li&gt;inspect cookies&lt;/li&gt;
&lt;li&gt;inspect console and network logs&lt;/li&gt;
&lt;li&gt;extract links, tables, lists, form fields, and key-value blocks in a deterministic way&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Quick start
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;uv tool &lt;span class="nb"&gt;install &lt;/span&gt;agentyc
agentyc init
agentyc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;agentyc init&lt;/code&gt; writes a guide file your coding agent can read.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;agentyc&lt;/code&gt; starts the MCP server.&lt;/p&gt;

&lt;h2&gt;
  
  
  A simple example
&lt;/h2&gt;

&lt;p&gt;One of the most useful parts is &lt;code&gt;browser_get_state&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Instead of dumping a whole page every time, the agent can ask for a compact state view, get stable refs like &lt;code&gt;e123&lt;/code&gt;, and act on those refs.&lt;/p&gt;

&lt;p&gt;That makes loops like this possible:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;open a page&lt;/li&gt;
&lt;li&gt;get compact state&lt;/li&gt;
&lt;li&gt;click or type using stable refs&lt;/li&gt;
&lt;li&gt;poll with &lt;code&gt;since_hash&lt;/code&gt; until the page changes&lt;/li&gt;
&lt;li&gt;extract only the thing you need&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That ends up being cheaper in tokens and easier to debug.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why deterministic matters
&lt;/h2&gt;

&lt;p&gt;A lot of browser + AI workflows break because the tool quietly switches from structured automation to fuzzy interpretation.&lt;/p&gt;

&lt;p&gt;Agentyc takes the opposite approach for common tasks like extracting a table, list, links, or form fields:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;if there is a deterministic route, use it&lt;/li&gt;
&lt;li&gt;if there is not, return a clear error&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That tradeoff is less magical, but much easier to trust.&lt;/p&gt;

&lt;h2&gt;
  
  
  Shared browser mode
&lt;/h2&gt;

&lt;p&gt;Another feature I wanted was the ability to attach to an existing Chrome or Chromium session.&lt;/p&gt;

&lt;p&gt;That means a human and an agent can work in the same browser more naturally:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;launch a browser with remote debugging&lt;/li&gt;
&lt;li&gt;attach Agentyc to it&lt;/li&gt;
&lt;li&gt;let the agent work in a tab or window&lt;/li&gt;
&lt;li&gt;keep visibility into what is happening&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Who this is for
&lt;/h2&gt;

&lt;p&gt;Agentyc is useful if you are building:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;coding agents that need browser access&lt;/li&gt;
&lt;li&gt;MCP tools for web workflows&lt;/li&gt;
&lt;li&gt;automation that needs better debugging than a black-box agent gives you&lt;/li&gt;
&lt;li&gt;browser workflows where predictable behavior matters more than magic&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What I want feedback on
&lt;/h2&gt;

&lt;p&gt;Agentyc is open source and still early.&lt;/p&gt;

&lt;p&gt;I would love feedback on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the MCP tool surface&lt;/li&gt;
&lt;li&gt;the state model&lt;/li&gt;
&lt;li&gt;shared-browser workflows&lt;/li&gt;
&lt;li&gt;places where the browser loop still feels too heavy&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;GitHub: &lt;a href="https://github.com/distillation-labs/agentyc" rel="noopener noreferrer"&gt;https://github.com/distillation-labs/agentyc&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>python</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
