<?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: yin shen</title>
    <description>The latest articles on DEV Community by yin shen (@yin_shen_da63da1b36a19d13).</description>
    <link>https://dev.to/yin_shen_da63da1b36a19d13</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%2F4184854%2F4802531d-0632-48a2-8e2d-84a9ba3ce22c.png</url>
      <title>DEV Community: yin shen</title>
      <link>https://dev.to/yin_shen_da63da1b36a19d13</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/yin_shen_da63da1b36a19d13"/>
    <language>en</language>
    <item>
      <title>I open-sourced DomA: an AI automation agent for the browser</title>
      <dc:creator>yin shen</dc:creator>
      <pubDate>Wed, 14 Oct 2026 16:14:12 +0000</pubDate>
      <link>https://dev.to/yin_shen_da63da1b36a19d13/i-open-sourced-doma-an-ai-automation-agent-for-the-browser-pff</link>
      <guid>https://dev.to/yin_shen_da63da1b36a19d13/i-open-sourced-doma-an-ai-automation-agent-for-the-browser-pff</guid>
      <description>&lt;p&gt;Most “AI browser” products ask you to abandon the browser you already live in.&lt;/p&gt;

&lt;p&gt;New Chromium fork. New profile. Friction with passwords, extensions, and muscle memory. Your logged-in sessions don’t come along for the ride.&lt;br&gt;
DomA takes the opposite bet: &lt;strong&gt;stay in Chrome (or Edge)&lt;/strong&gt;, keep the tab you’re already on, and run an agent from a side panel.&lt;/p&gt;

&lt;p&gt;That’s why we open-sourced it.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/dom-actions/doma" rel="noopener noreferrer"&gt;https://github.com/dom-actions/doma&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Idea we mean literally: &lt;em&gt;conversation is action&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The real pain isn’t “can it click?” — it’s accuracy
&lt;/h2&gt;

&lt;p&gt;Browser agents often look impressive in demos and fall apart on real sites:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Every micro-step round-trips to the main LLM (slow + context drift)&lt;/li&gt;
&lt;li&gt;Overlays, suggest boxes, shadow DOM, and CSP break brittle selectors&lt;/li&gt;
&lt;li&gt;Successful workflows don’t compound — you re-solve the same site next week&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;DomA’s open core is built around two answers to that pain: &lt;strong&gt;Jev inner loops&lt;/strong&gt; and &lt;strong&gt;solidified Skills&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Meet you where you are (extension, not a fork)
&lt;/h2&gt;

&lt;p&gt;DomA is a &lt;strong&gt;Chrome/Edge extension&lt;/strong&gt;, not a standalone AI browser and not a hosted “cloud browser.”&lt;br&gt;
You keep:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;bookmarks and extensions&lt;/li&gt;
&lt;li&gt;existing logins / cookies&lt;/li&gt;
&lt;li&gt;the browser you already trust day-to-day
You chat in the side panel. The agent grounds on the page, then acts: click, type, navigate, collect, multi-step flows.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  BYOK (secondary, but intentional)
&lt;/h3&gt;

&lt;p&gt;The open edition is &lt;strong&gt;Bring Your Own Key&lt;/strong&gt;: OpenAI-compatible providers (and similar endpoints).&lt;br&gt;&lt;br&gt;
You’re not locked into our model marketplace. Keys stay in your setup; model calls go to &lt;em&gt;your&lt;/em&gt; chosen provider.&lt;br&gt;
(That’s important for developers — but the product thesis is still “agent in your browser,” not “BYOK for its own sake.”)&lt;/p&gt;

&lt;h2&gt;
  
  
  How DomA perceives and acts
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Set-of-Mark (SoM) grounding
&lt;/h3&gt;

&lt;p&gt;Interactive elements get numbered overlays. The model sees a screenshot with markers and chooses &lt;strong&gt;index-based&lt;/strong&gt; actions instead of guessing fragile CSS selectors.&lt;/p&gt;

&lt;h3&gt;
  
  
  Multi-strategy execution
&lt;/h3&gt;

&lt;p&gt;Synthetic events for speed, CDP fallbacks for stubborn widgets, and coordinate-level interaction when needed.&lt;/p&gt;

&lt;h3&gt;
  
  
  Context hygiene
&lt;/h3&gt;

&lt;p&gt;Large tool payloads can be spilled out of the chat transcript and re-read via refs — so long tasks don’t drown the model in noise.&lt;/p&gt;

&lt;h2&gt;
  
  
  Accuracy lever #1 — Jev inner loops
&lt;/h2&gt;

&lt;p&gt;Classic agent loops look like:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;screenshot → main LLM → click → screenshot → main LLM → type → …&lt;br&gt;
That burns latency and invites inconsistency between steps.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Jev&lt;/strong&gt; is DomA’s optional inner loop on &lt;code&gt;browser_screenshot&lt;/code&gt; (act/verify):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Given a &lt;strong&gt;goal&lt;/strong&gt;, it can decide and execute &lt;strong&gt;multiple&lt;/strong&gt; grounded steps inside the tool&lt;/li&gt;
&lt;li&gt;Refresh SoM → choose click/type → act → continue until the goal progresses or it must hand back&lt;/li&gt;
&lt;li&gt;Verify passes can check whether the page actually moved toward the goal
Net effect: fewer main-LLM round trips for the boring middle of a form/flow, and tighter coupling between perception and action — which is where a lot of “almost right” failures come from.
Jev doesn’t magically solve every site. It attacks the failure mode of &lt;strong&gt;over-delegating every micro-action to a chatty outer loop&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Accuracy lever #2 — solidified Skills
&lt;/h2&gt;

&lt;p&gt;Even with good grounding, accuracy compounds only if &lt;strong&gt;successful procedures become reusable&lt;/strong&gt;.&lt;br&gt;
DomA supports &lt;strong&gt;Agent Skills&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Capture a workflow that worked on a real site (instructions, constraints, host rules)&lt;/li&gt;
&lt;li&gt;Load it later with &lt;code&gt;browser_invoke_agent_skill&lt;/code&gt; instead of re-deriving the plan from scratch&lt;/li&gt;
&lt;li&gt;Treat skills as living playbooks — site-specific heuristics, not one-off chat luck
This is how you move from “the model might figure it out” to “this site has a known reliable path.”
If browser automation feels unreliable, it’s often because the system has &lt;strong&gt;perception + actions&lt;/strong&gt;, but no durable &lt;strong&gt;procedural memory&lt;/strong&gt;. Skills are that layer.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  What’s in the open-source edition
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Side-panel chat → tool-calling browser agent&lt;/li&gt;
&lt;li&gt;SoM screenshot loop + click/type/navigate tools&lt;/li&gt;
&lt;li&gt;Jev-style inner act/verify looping (when enabled)&lt;/li&gt;
&lt;li&gt;Skills for reusable site/task procedures&lt;/li&gt;
&lt;li&gt;Build from source or load a prebuilt package from Releases&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;There is also a commercial store build with extras (video download, userscripts, ad blocking, …). This post is about the &lt;strong&gt;open core&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>opensource</category>
      <category>chromeextension</category>
      <category>ai</category>
      <category>agents</category>
    </item>
  </channel>
</rss>
