<?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: ricuicui</title>
    <description>The latest articles on DEV Community by ricuicui (@ricuicui).</description>
    <link>https://dev.to/ricuicui</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%2F4214428%2F5f8a54b7-6f67-47de-bbfe-15518cf3e7fa.png</url>
      <title>DEV Community: ricuicui</title>
      <link>https://dev.to/ricuicui</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ricuicui"/>
    <language>en</language>
    <item>
      <title>Building a browser where a local LLM clicks and types for you, in Rust</title>
      <dc:creator>ricuicui</dc:creator>
      <pubDate>Thu, 29 Oct 2026 06:20:04 +0000</pubDate>
      <link>https://dev.to/ricuicui/building-a-browser-where-a-local-llm-clicks-and-types-for-you-in-rust-59c8</link>
      <guid>https://dev.to/ricuicui/building-a-browser-where-a-local-llm-clicks-and-types-for-you-in-rust-59c8</guid>
      <description>&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%2Fw0gsd5fug6jxkz6h7wdr.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%2Fw0gsd5fug6jxkz6h7wdr.png" alt=" " width="799" height="304"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I've been building &lt;strong&gt;Ricuicui&lt;/strong&gt;, a desktop web browser for Mac and Windows with an AI and agents built in. The AI reads the page, clicks, fills in forms and drafts replies while you watch, and it can run entirely on your own machine. Here is how it is put together, and what I learned on the way.&lt;/p&gt;

&lt;h2&gt;
  
  
  One Rust binary, two rendering engines
&lt;/h2&gt;

&lt;p&gt;Ricuicui is a single program written in Rust. It embeds &lt;strong&gt;Servo&lt;/strong&gt;, the Rust browser engine, to display every site, so there is no Chromium to install next to it.&lt;/p&gt;

&lt;p&gt;Next to Servo there is a second, much smaller engine of our own, &lt;strong&gt;Cotcotcodet&lt;/strong&gt;. It does not try to render pixels: it parses pages quickly so the AI can read them, and it runs the page's JavaScript isolated in a separate process. Splitting "showing a page to a human" from "reading a page for an AI" turned out to make the agent both faster and safer.&lt;/p&gt;

&lt;h2&gt;
  
  
  A local LLM, without Ollama or LM Studio
&lt;/h2&gt;

&lt;p&gt;The local AI uses &lt;strong&gt;llama.cpp&lt;/strong&gt; and models in &lt;strong&gt;GGUF&lt;/strong&gt; format. On a Mac, llama.cpp ships inside the app; on Windows it is downloaded on first use and runs on the graphics card through Vulkan. No separate runtime to install.&lt;/p&gt;

&lt;p&gt;Memory decides everything, so the app suggests a model from what you have:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Mac (unified memory)&lt;/th&gt;
&lt;th&gt;PC (VRAM)&lt;/th&gt;
&lt;th&gt;Suggested model&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;8 GB&lt;/td&gt;
&lt;td&gt;4 GB&lt;/td&gt;
&lt;td&gt;Qwen3 0.6B&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;16 GB&lt;/td&gt;
&lt;td&gt;8 GB&lt;/td&gt;
&lt;td&gt;Qwen3 4B&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;24 GB&lt;/td&gt;
&lt;td&gt;12–16 GB&lt;/td&gt;
&lt;td&gt;Qwen3 8B&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;32 GB+&lt;/td&gt;
&lt;td&gt;24 GB+&lt;/td&gt;
&lt;td&gt;Qwen3 14B&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Any other &lt;code&gt;.gguf&lt;/code&gt; file works too (Mistral, DeepSeek…), within the memory available. For the hardest tasks you can switch to an online model (Claude, GPT, Mistral) with your own key, stored in the system keychain.&lt;/p&gt;

&lt;h2&gt;
  
  
  Letting the model act, without letting it do anything
&lt;/h2&gt;

&lt;p&gt;An agent that can click is only useful if you can trust it. A few rules are enforced by the browser, not by the prompt:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the AI asks for your approval before any action that commits you (submitting a form, a purchase, sending a message);&lt;/li&gt;
&lt;li&gt;it never types a password or a card number: sensitive fields are detected from their type, but also from their placeholder, &lt;code&gt;aria-label&lt;/code&gt; or label (PIN, CVV, 2FA codes…);&lt;/li&gt;
&lt;li&gt;everything it does is shown live, and you can take the wheel at any time.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  MCP in both directions
&lt;/h2&gt;

&lt;p&gt;Ricuicui is also an &lt;strong&gt;MCP server&lt;/strong&gt;: it exposes 13 tools locally on &lt;code&gt;127.0.0.1:7878&lt;/code&gt;, so Claude Desktop, Claude Code, Cursor, VS Code or LM Studio can drive the browser while you watch. And it is an MCP client: its own AI can plug into MCP servers (files, memory…) and into A2A agents and webhooks.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where it stands
&lt;/h2&gt;

&lt;p&gt;Ricuicui is freemium: the base version contains the whole browser, and the Pro licence (EUR 12.90 a year) unlocks the local GPU server. It runs on macOS 11+ (Apple silicon and Intel) and Windows 10/11.&lt;/p&gt;

&lt;p&gt;I'd love feedback from people running local models: which sizes are actually usable for agent work on your hardware, and what you would want an AI browser to refuse to do.&lt;/p&gt;

&lt;p&gt;→ &lt;a href="https://ricuicui.com/en/" rel="noopener noreferrer"&gt;ricuicui.com&lt;/a&gt;&lt;/p&gt;

</description>
      <category>rust</category>
      <category>ai</category>
      <category>llm</category>
      <category>mcp</category>
    </item>
  </channel>
</rss>
