<?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>Forem: lsustc</title>
    <description>The latest articles on Forem by lsustc (@lsustc).</description>
    <link>https://forem.com/lsustc</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%2F923371%2F27082c54-929e-40a0-a619-ed96babd2f84.png</url>
      <title>Forem: lsustc</title>
      <link>https://forem.com/lsustc</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/lsustc"/>
    <language>en</language>
    <item>
      <title>AI Browser Development Story: How a Failed Project Found New Life</title>
      <dc:creator>lsustc</dc:creator>
      <pubDate>Sun, 07 Dec 2025 04:32:47 +0000</pubDate>
      <link>https://forem.com/lsustc/ai-browser-development-story-how-a-failed-project-found-new-life-36i</link>
      <guid>https://forem.com/lsustc/ai-browser-development-story-how-a-failed-project-found-new-life-36i</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;"Sometimes the best products come from projects that were never supposed to exist."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Hey everyone, I'm the author of AI Browser.&lt;/p&gt;

&lt;p&gt;Today, I want to share the story behind this open-source project — its birth was actually an accident.&lt;/p&gt;




&lt;h2&gt;
  
  
  I. The Beginning: A Performance-Driven Exploration
&lt;/h2&gt;

&lt;p&gt;The story starts with my day job.&lt;/p&gt;

&lt;p&gt;As the frontend lead for AI initiatives at my company, I spent the first half of 2024 maintaining a lukewarm AI project. If you're also a working professional, you know the drill: &lt;strong&gt;to get good performance reviews, you need to work on standout projects&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;So, my colleague (let's call him Tan), who was the product manager for AI applications, and I embarked on a two-month exploration.&lt;/p&gt;

&lt;p&gt;Tan wasn't entirely sure what he wanted at first. His requirements were quite "grand":&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Forget past constraints, envision the future! Our product must wow the boss!"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;After reviewing many competitor apps, we settled on a concept: &lt;strong&gt;Jarvis from Iron Man&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;User asks a question, the agent autonomously gathers information, calls different tools, and delivers the answer.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I initially benchmarked against &lt;a href="https://fellou.ai/" rel="noopener noreferrer"&gt;Fellou&lt;/a&gt; (learning from the best, you know). This AI browser's interactions and UI were truly impressive and caught my eye.&lt;/p&gt;

&lt;p&gt;And so, the first phase of exploration began.&lt;/p&gt;




&lt;h2&gt;
  
  
  II. Technical Research: Lessons Learned from $200+
&lt;/h2&gt;

&lt;h3&gt;
  
  
  The Challenge: How to Make AI Control a Browser?
&lt;/h3&gt;

&lt;p&gt;The core problem was: &lt;strong&gt;How to programmatically control a browser to automate web tasks&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;We immediately abandoned the company's ancient C++ client. As someone with a frontend background, I went straight for &lt;strong&gt;Electron&lt;/strong&gt; for desktop app development.&lt;/p&gt;

&lt;p&gt;I found many browser automation tools, like &lt;strong&gt;browser-use&lt;/strong&gt;. The popular &lt;strong&gt;Manus&lt;/strong&gt; was using browser-use, so I tried to integrate browser-use into Electron.&lt;/p&gt;

&lt;p&gt;But ultimately, &lt;strong&gt;I failed&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Insane Cursor Credit Burn
&lt;/h3&gt;

&lt;p&gt;Looking back, the scene was quite surreal.&lt;/p&gt;

&lt;p&gt;Back then, Cursor hadn't "shot itself in the foot" yet, and Claude Code (CC) wasn't popular. I used Tan's Cursor subscription to start the research, confidently asking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Can Electron + browser-use + Playwright be integrated into one application?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Cursor replied: "Yes!"&lt;/p&gt;

&lt;p&gt;Then I kept trying... Soon, Tan's subscription ran out.&lt;/p&gt;

&lt;p&gt;I gritted my teeth and subscribed to a &lt;strong&gt;$20/month plan&lt;/strong&gt;, which lasted less than half a day.&lt;/p&gt;

&lt;p&gt;I gritted my teeth again and got a &lt;strong&gt;$200 Max subscription&lt;/strong&gt;! Surely that'd be enough, right?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One day. Just one day. The entire $200 credit was gone, and I still didn't have a working demo.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  A Harsh Lesson
&lt;/h3&gt;

&lt;p&gt;I felt crushed.&lt;/p&gt;

&lt;p&gt;Since I didn't deeply understand Electron, browser-use, or Playwright's underlying principles, I had no idea what to do. That's when I learned:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;AI can greatly accelerate work in domains you already know — you can tell it what to do.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;But if you're doing something you don't understand yourself, AI probably won't succeed either. Unless many people have done it before and it's well-documented.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This lesson cost $200+.&lt;/p&gt;




&lt;h2&gt;
  
  
  III. The Turning Point: Light After Deep Learning
&lt;/h2&gt;

&lt;p&gt;Since AI couldn't help, I had to rely on myself.&lt;/p&gt;

&lt;p&gt;I dove deep into the documentation and source code of Electron, browser-use, and Playwright. After a few days, I concluded:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Electron&lt;/strong&gt; can build desktop apps (no problem there)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;browser-use&lt;/strong&gt; is an independent Python service&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Playwright&lt;/strong&gt; is another independent application&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Integrating these three into one app was basically impossible.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Finding Alternatives
&lt;/h3&gt;

&lt;p&gt;So I started looking for alternatives.&lt;/p&gt;

&lt;p&gt;First, I found the &lt;strong&gt;&lt;a href="https://github.com/FellouAI/eko" rel="noopener noreferrer"&gt;Eko&lt;/a&gt;&lt;/strong&gt; framework open-sourced by the Fellou team. After careful study, I realized:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Using Eko in Electron is feasible! It's just a matter of compatibility work.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Next, I wanted to embed a local frontend service in Electron. I chose &lt;strong&gt;Next.js&lt;/strong&gt; (because it's popular).&lt;/p&gt;

&lt;p&gt;I spent a few more days getting Cursor to help me load a Next.js service in Electron. Honestly, I thought it'd be simple, but Cursor let me down again.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No choice, I had to dig into Next.js docs myself.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Eventually, I successfully embedded Next.js in Electron using a custom server — similar to the approach used in the open-source project &lt;a href="https://github.com/stackblitz/bolt.new" rel="noopener noreferrer"&gt;bolt.diy&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The technical approach finally worked!&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  IV. Development Phase: Learning From Scratch
&lt;/h2&gt;

&lt;p&gt;After solving the Electron + Next.js problem, I entered the actual development phase.&lt;/p&gt;

&lt;h3&gt;
  
  
  Learning React and Electron
&lt;/h3&gt;

&lt;p&gt;Since my previous tech stack was &lt;strong&gt;Vue&lt;/strong&gt;, I spent a weekend learning &lt;strong&gt;React fundamentals&lt;/strong&gt; for this project.&lt;/p&gt;

&lt;p&gt;Meanwhile, I kept reading Electron's official documentation, learning about main processes, renderer processes, IPC communication, etc.&lt;/p&gt;

&lt;h3&gt;
  
  
  Adapting the Eko Framework
&lt;/h3&gt;

&lt;p&gt;Next was making the Eko framework compatible with Electron to control web pages in view windows.&lt;/p&gt;

&lt;p&gt;This work sounds simple but is all about details: window management, view switching, browser control... every step required care.&lt;/p&gt;

&lt;h3&gt;
  
  
  Implementing Various Agents
&lt;/h3&gt;

&lt;p&gt;After completing these basic capabilities, I started implementing various Agents:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;BrowserAgent&lt;/strong&gt;: Control web pages, execute automated tasks&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;FileAgent&lt;/strong&gt;: Handle file read/write and management&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ClientAgent&lt;/strong&gt;: Control the company's client application&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In the first version, I even learned from Fellou to use &lt;strong&gt;screen sharing&lt;/strong&gt;, theoretically allowing simultaneous control of multiple windows. But the window positions could never be moved off-screen. Even after Claude Code generated several macOS low-level capability extension files, the cost felt too high, so I abandoned that approach.&lt;/p&gt;

&lt;p&gt;We also tried &lt;strong&gt;fully voice-driven input/output&lt;/strong&gt;, but the results weren't ideal.&lt;/p&gt;

&lt;p&gt;Eventually, we built a "Frankenstein" demo — not perfect, but with working BrowserAgent, FileAgent, and ClientAgent.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Two months later, we finally had something!&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  V. The Crash: When It Got Rejected
&lt;/h2&gt;

&lt;p&gt;I excitedly went to demo it, expecting the boss to be impressed.&lt;/p&gt;

&lt;p&gt;The result? &lt;strong&gt;For various indescribable reasons, the project was rejected.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It felt like spending two months preparing for a confession, only to hear: "You're a nice person."&lt;/p&gt;

&lt;p&gt;The project was shelved, and I was pulled to work on other company-level AI initiatives. That demo just sat in some corner of my hard drive.&lt;/p&gt;




&lt;h2&gt;
  
  
  VI. Rebirth: A Weekend Open-Source Project
&lt;/h2&gt;

&lt;p&gt;A month later, I suddenly thought:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Are there others exploring similar capabilities — controlling web pages within an application?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If so, would they encounter the same struggles I did?&lt;/p&gt;

&lt;p&gt;So, &lt;strong&gt;I used Claude Code to rebuild a clean open-source version over a weekend&lt;/strong&gt;, based on Electron + Eko + Next.js.&lt;/p&gt;

&lt;p&gt;This time, no company baggage, no KPI pressure — just pure technical exploration.&lt;/p&gt;

&lt;p&gt;I cleaned up the code and published it to GitHub:&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://github.com/DeepFundAI/ai-browser" rel="noopener noreferrer"&gt;https://github.com/DeepFundAI/ai-browser&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Then, in my spare time, I started refining my earlier vision:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ History task playback&lt;/li&gt;
&lt;li&gt;✅ Human interaction capability&lt;/li&gt;
&lt;li&gt;✅ Voice input support&lt;/li&gt;
&lt;li&gt;✅ Multi-language internationalization&lt;/li&gt;
&lt;li&gt;✅ Agent configuration system&lt;/li&gt;
&lt;li&gt;✅ Scheduled tasks&lt;/li&gt;
&lt;li&gt;✅ Toolbox page&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every feature was completed during late nights and weekends after work.&lt;/p&gt;




&lt;h2&gt;
  
  
  VII. Reflections: The Value of a Failed Project
&lt;/h2&gt;

&lt;p&gt;Looking back, I have a few insights:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. The Boundaries of AI Tools
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;AI isn't omnipotent.&lt;/strong&gt; It can accelerate work in familiar domains, but it can't replace your understanding of underlying principles.&lt;/p&gt;

&lt;p&gt;That $200 Cursor subscription didn't buy me code — it bought me a lesson: &lt;strong&gt;When facing unfamiliar tech, you still need to learn it yourself.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Failed Projects Can Be Reborn
&lt;/h3&gt;

&lt;p&gt;The internal company project was rejected, but the technical knowledge remained.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rather than letting it gather dust on my hard drive, why not open-source it to help others?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Maybe someday, someone will find it useful, or even build something better based on it.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. The Meaning of Open Source
&lt;/h3&gt;

&lt;p&gt;Open source isn't just about sharing code — it's about sharing experience and ideas.&lt;/p&gt;

&lt;p&gt;I hope this project helps those exploring similar paths — at least they won't have to burn $200 verifying "whether Electron + browser-use + Playwright can be integrated."&lt;/p&gt;




&lt;h2&gt;
  
  
  VIII. The Future: Join Us
&lt;/h2&gt;

&lt;p&gt;Now, AI Browser is a relatively mature open-source project.&lt;/p&gt;

&lt;p&gt;But it's far from perfect. Many features are still waiting to be implemented:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🎨 Theme customization (dark mode)&lt;/li&gt;
&lt;li&gt;🔌 Plugin marketplace (MCP tool ecosystem)&lt;/li&gt;
&lt;li&gt;📊 Visual workflow editor&lt;/li&gt;
&lt;li&gt;🌐 More Agent support (Shell, Email, Notion...)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;If you're interested in this project, please give us a Star on GitHub ⭐&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;Repository&lt;/strong&gt;: &lt;a href="https://github.com/DeepFundAI/ai-browser" rel="noopener noreferrer"&gt;https://github.com/DeepFundAI/ai-browser&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stars not only encourage us but help more people discover this tool.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you're a developer, feel free to file issues, submit PRs, or join discussions.&lt;/p&gt;

&lt;p&gt;If you're a user, download it, try it out, and give us feedback.&lt;/p&gt;




&lt;h2&gt;
  
  
  Closing Thoughts
&lt;/h2&gt;

&lt;p&gt;From an internal performance-driven project, to getting rejected and shelved, to rebuilding it as open source over a weekend — &lt;strong&gt;this failed project ultimately found its value&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Perhaps that's the charm of open source:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No KPI constraints, just pure technology.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No commercial pressure, just the joy of sharing.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I hope this project shines someday and helps those who are exploring just like we did.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If this story resonates with you, please give us a Star ⭐&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Quick Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;🌟 &lt;strong&gt;GitHub Star&lt;/strong&gt;: &lt;a href="https://github.com/DeepFundAI/ai-browser" rel="noopener noreferrer"&gt;https://github.com/DeepFundAI/ai-browser&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;📥 &lt;strong&gt;Download&lt;/strong&gt;: &lt;a href="https://www.deepfundai.com/altas/download" rel="noopener noreferrer"&gt;https://www.deepfundai.com/altas/download&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;📖 &lt;strong&gt;Configuration Docs&lt;/strong&gt;: &lt;a href="https://github.com/DeepFundAI/ai-browser/blob/main/docs/CONFIGURATION.md" rel="noopener noreferrer"&gt;https://github.com/DeepFundAI/ai-browser/blob/main/docs/CONFIGURATION.md&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;💬 &lt;strong&gt;Issue Tracker&lt;/strong&gt;: &lt;a href="https://github.com/DeepFundAI/ai-browser/issues" rel="noopener noreferrer"&gt;https://github.com/DeepFundAI/ai-browser/issues&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  opensource #aibrowser #techstartup #developerlife #electrondev
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Follow me&lt;/strong&gt; for more stories about building AI tools and lessons learned from failures.&lt;/p&gt;

&lt;p&gt;See you next time!&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>agents</category>
    </item>
    <item>
      <title>AI Browser Updates: How Far Have We Come?</title>
      <dc:creator>lsustc</dc:creator>
      <pubDate>Sun, 07 Dec 2025 04:29:20 +0000</pubDate>
      <link>https://forem.com/lsustc/ai-browser-updates-how-far-have-we-come-40b3</link>
      <guid>https://forem.com/lsustc/ai-browser-updates-how-far-have-we-come-40b3</guid>
      <description>&lt;p&gt;Hey everyone! It's been a while since I last posted about this project. Thanks to Claude Code's assistance, I've been continuously iterating on this open-source project in my spare time. Today, I want to share &lt;strong&gt;what we've built and where we're heading&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Before diving in, a quick ask: &lt;strong&gt;If you're a developer and find this project valuable, please give us a Star on GitHub ⭐️&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Repository: &lt;a href="https://github.com/DeepFundAI/ai-browser" rel="noopener noreferrer"&gt;https://github.com/DeepFundAI/ai-browser&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Stars not only encourage us but also help more people discover this tool. We've gained some traction, but we need more support to keep going.&lt;/p&gt;




&lt;h2&gt;
  
  
  📊 Current Status
&lt;/h2&gt;

&lt;p&gt;Since the project launch, here's what makes me proud:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ Received valuable feedback and suggestions&lt;/li&gt;
&lt;li&gt;✅ Developers are starting to follow and explore the project&lt;/li&gt;
&lt;li&gt;✅ Cross-platform support (Mac, Windows) running stably&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But honestly, &lt;strong&gt;as a young open-source project, we need more visibility and support&lt;/strong&gt;. That's why I'm asking you to give us a Star on GitHub — it really matters.&lt;/p&gt;




&lt;h2&gt;
  
  
  🎉 What We've Built Recently
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. History Playback + Continue Conversations
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Previous pain point&lt;/strong&gt;: History was read-only, couldn't continue&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Now&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ Click any historical task to &lt;strong&gt;replay the full execution&lt;/strong&gt; (with typewriter effects)&lt;/li&gt;
&lt;li&gt;✅ Support &lt;strong&gt;play/pause/speed control&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Continue the conversation&lt;/strong&gt; from where you left off&lt;/li&gt;
&lt;li&gt;✅ Preview attached files directly&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Technical Implementation&lt;/strong&gt;:&lt;br&gt;
We built a &lt;code&gt;PlaybackEngine&lt;/code&gt; that breaks message streams into atomic fragments (AtomicFragment) — the smallest replayable units. This allows precise control over playback progress and speed. Task data is persisted via IndexedDB for offline viewing. When resuming, we restore the complete execution context (workflow, steps, attachments, etc.) to ensure seamless continuation.&lt;/p&gt;

&lt;p&gt;This dramatically improves task continuity. For example, if AI helped you collect data yesterday, you can continue analyzing it today without starting over.&lt;/p&gt;
&lt;h3&gt;
  
  
  2. Human Interaction Capability
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Scenario&lt;/strong&gt;: AI encounters situations requiring human decisions&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Solution&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ AI can &lt;strong&gt;ask questions during execution&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;✅ After you respond, AI continues&lt;/li&gt;
&lt;li&gt;✅ Useful for login confirmations, option selections, etc.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Task: Help me collect data from a login-required website

AI: Login required. Are you logged in?
You: Yes, already logged in
AI: Got it, continuing data collection...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Technical Implementation&lt;/strong&gt;:&lt;br&gt;
Based on the &lt;code&gt;eko&lt;/code&gt; framework's &lt;code&gt;HumanInteraction&lt;/code&gt; message type, AI can initiate interaction requests during execution. We established a bidirectional communication channel between the main and renderer processes via Electron IPC. When AI needs to ask, the workflow pauses and waits for user response. After answering via IPC, the Agent resumes execution. The entire process has complete state management and error handling.&lt;/p&gt;

&lt;p&gt;This gives AI Browser true complex task-handling capability.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Voice Input Support
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Features&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ Support voice input for tasks (no typing needed!)&lt;/li&gt;
&lt;li&gt;✅ Support Vosk offline speech recognition&lt;/li&gt;
&lt;li&gt;✅ Auto-switch recognition models based on language&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Technical Implementation&lt;/strong&gt;:&lt;br&gt;
We use Vosk's local offline speech recognition engine by default — no internet required, protecting user privacy. Vosk automatically loads the corresponding recognition model based on the selected language (Chinese/English). We plan to support Microsoft Azure and iFlytek cloud services as optional alternatives.&lt;/p&gt;

&lt;p&gt;This feature is especially useful for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;When you're too lazy to type&lt;/li&gt;
&lt;li&gt;Quickly inputting complex tasks&lt;/li&gt;
&lt;li&gt;Accessibility needs&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Note: Since we use offline speech recognition, we currently embed relatively simple Chinese/English models. Chinese recognition accuracy isn't ideal yet.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  4. Multi-Language Internationalization
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Support&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ Chinese/English interface switching&lt;/li&gt;
&lt;li&gt;✅ Complete translation coverage&lt;/li&gt;
&lt;li&gt;✅ Date/time localization&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Technical Implementation&lt;/strong&gt;:&lt;br&gt;
Built a complete i18n solution based on &lt;code&gt;i18next&lt;/code&gt; + &lt;code&gt;react-i18next&lt;/code&gt;. Translation resources are organized by module (&lt;code&gt;main.json&lt;/code&gt;, &lt;code&gt;history.json&lt;/code&gt;, &lt;code&gt;agent-config.json&lt;/code&gt;, etc.) with namespace isolation. Language switching uses Zustand global state management — no page refresh needed. Date/time uses &lt;code&gt;date-fns&lt;/code&gt; locale functionality for localized formatting. Future language expansion just requires adding corresponding JSON translation files.&lt;/p&gt;

&lt;p&gt;We hope this tool can serve more users beyond just Chinese speakers.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Agent Configuration System
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Features&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ Customize Agent prompts (make AI fit your needs)&lt;/li&gt;
&lt;li&gt;✅ Manage MCP tools (CRUD operations)&lt;/li&gt;
&lt;li&gt;✅ Configure different Agent capabilities&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This makes AI Browser much more flexible and customizable.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Toolbox Page
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Improvements&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ Centralized access to all system features&lt;/li&gt;
&lt;li&gt;✅ Clearer navigation&lt;/li&gt;
&lt;li&gt;✅ One-click jump to config, scheduled tasks, history, etc.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🗺️ What's Next
&lt;/h2&gt;

&lt;p&gt;Based on feedback and our roadmap, here's what we're prioritizing:&lt;/p&gt;

&lt;h3&gt;
  
  
  Phase 1 (Near-term, 1-2 weeks)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Quick wins and iterations&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Task Working Directory Isolation&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Each task uses an independent working directory&lt;/li&gt;
&lt;li&gt;Avoid file interference between tasks&lt;/li&gt;
&lt;li&gt;Clearer file management&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Windows Background Running Optimization&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Improve Windows background running characteristics&lt;/li&gt;
&lt;li&gt;Reduce resource usage&lt;/li&gt;
&lt;li&gt;Enhance stability&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Generated File Download Support&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Direct download of AI-generated files&lt;/li&gt;
&lt;li&gt;Batch download support&lt;/li&gt;
&lt;li&gt;Better file management&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Playback Speed Control&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Adjust history playback speed&lt;/li&gt;
&lt;li&gt;Fast-forward/slow-motion support&lt;/li&gt;
&lt;li&gt;More flexible playback experience&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Phase 2 (Mid-term, 2-4 weeks)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;User experience improvements&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Performance Optimization&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Virtual scrolling for long conversations (100+ messages without lag)&lt;/li&gt;
&lt;li&gt;Memory optimization&lt;/li&gt;
&lt;li&gt;Faster startup time&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Multi-Language Enhancement&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Auto-detect system language&lt;/li&gt;
&lt;li&gt;Dynamic download of language-specific offline packages&lt;/li&gt;
&lt;li&gt;Support dynamic configuration of online speech recognition (Microsoft, iFlytek)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Theme Customization&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Dark mode&lt;/li&gt;
&lt;li&gt;Multiple color schemes&lt;/li&gt;
&lt;li&gt;User-defined colors&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Phase 3 (Long-term, 1-2 months)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Core capability expansion&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Visual Workflow Editor&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Support workflow step adjustment&lt;/li&gt;
&lt;li&gt;Support saving specific workflows&lt;/li&gt;
&lt;li&gt;Import saved workflows when creating scheduled tasks&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Plugin Marketplace&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Official MCP tool library supporting HTTP, stdio, SSE&lt;/li&gt;
&lt;li&gt;Community plugin sharing&lt;/li&gt;
&lt;li&gt;One-click install/update&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;More Agent Support&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ShellAgent (command execution)&lt;/li&gt;
&lt;li&gt;EmailAgent (email send/receive)&lt;/li&gt;
&lt;li&gt;NotionAgent (Notion operations)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  🤔 What We Need
&lt;/h2&gt;

&lt;p&gt;As an open-source project, we need three types of support:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. ⭐️ Stars (Simple but Important)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why it matters?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Helps more people discover the project&lt;/li&gt;
&lt;li&gt;Attracts potential contributors&lt;/li&gt;
&lt;li&gt;Gives us motivation to keep developing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Just 5 seconds&lt;/strong&gt;: &lt;a href="https://github.com/DeepFundAI/ai-browser" rel="noopener noreferrer"&gt;https://github.com/DeepFundAI/ai-browser&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. 💬 Feedback and Suggestions
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;What's your use case?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What problems have you encountered?&lt;/li&gt;
&lt;li&gt;What features would you like to see?&lt;/li&gt;
&lt;li&gt;Any improvement suggestions?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Tell us on GitHub Issues or in comments!&lt;/p&gt;

&lt;h3&gt;
  
  
  3. 🤝 Code Contributions
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;If you're a developer&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;PRs for bug fixes are welcome&lt;/li&gt;
&lt;li&gt;Contribute new features&lt;/li&gt;
&lt;li&gt;Improve documentation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We take every contribution seriously.&lt;/p&gt;




&lt;h2&gt;
  
  
  📌 Quick Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;🌟 &lt;strong&gt;GitHub&lt;/strong&gt;: &lt;a href="https://github.com/DeepFundAI/ai-browser" rel="noopener noreferrer"&gt;https://github.com/DeepFundAI/ai-browser&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;📥 &lt;strong&gt;Download&lt;/strong&gt;: &lt;a href="https://www.deepfundai.com/altas/download" rel="noopener noreferrer"&gt;https://www.deepfundai.com/altas/download&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;📖 &lt;strong&gt;Configuration Guide&lt;/strong&gt;: &lt;a href="https://github.com/DeepFundAI/ai-browser/blob/main/docs/CONFIGURATION.md" rel="noopener noreferrer"&gt;https://github.com/DeepFundAI/ai-browser/blob/main/docs/CONFIGURATION.md&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;💬 &lt;strong&gt;Issue Tracker&lt;/strong&gt;: &lt;a href="https://github.com/DeepFundAI/ai-browser/issues" rel="noopener noreferrer"&gt;https://github.com/DeepFundAI/ai-browser/issues&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;From initial concept to a tool that solves real problems — this journey has been challenging but fulfilling.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Every Star, every piece of feedback, every user is our motivation to keep going.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you haven't tried AI Browser yet, download it and give it a spin. If you're already using it, we'd love to hear about your experience.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Most importantly&lt;/strong&gt;, if you find this project valuable, please give us a Star on GitHub ⭐&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://github.com/DeepFundAI/ai-browser" rel="noopener noreferrer"&gt;https://github.com/DeepFundAI/ai-browser&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let's make AI Browser better together!&lt;/p&gt;




&lt;h1&gt;
  
  
  artificialintelligence #browserautomation #opensource #productivity #ai
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Follow me&lt;/strong&gt; for more updates on AI tool development insights!&lt;/p&gt;

&lt;p&gt;Questions or feedback? Drop a comment below!&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>agents</category>
      <category>programming</category>
    </item>
    <item>
      <title>[Boost]</title>
      <dc:creator>lsustc</dc:creator>
      <pubDate>Thu, 04 Dec 2025 03:26:37 +0000</pubDate>
      <link>https://forem.com/lsustc/-37fd</link>
      <guid>https://forem.com/lsustc/-37fd</guid>
      <description>&lt;div class="ltag__link"&gt;
  &lt;a href="/lsustc" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&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%2Fuser%2Fprofile_image%2F923371%2F27082c54-929e-40a0-a619-ed96babd2f84.png" alt="lsustc"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/lsustc/i-built-an-open-source-ai-browser-that-automates-web-tasks-with-natural-language-2mdl" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;I built an open-source AI browser that automates web tasks with natural language&lt;/h2&gt;
      &lt;h3&gt;lsustc ・ Nov 13&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#ai&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#webdev&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#programming&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#javascript&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>javascript</category>
    </item>
    <item>
      <title>I built an open-source AI browser that automates web tasks with natural language</title>
      <dc:creator>lsustc</dc:creator>
      <pubDate>Thu, 13 Nov 2025 07:15:23 +0000</pubDate>
      <link>https://forem.com/lsustc/i-built-an-open-source-ai-browser-that-automates-web-tasks-with-natural-language-2mdl</link>
      <guid>https://forem.com/lsustc/i-built-an-open-source-ai-browser-that-automates-web-tasks-with-natural-language-2mdl</guid>
      <description>&lt;h2&gt;
  
  
  What is it?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;AI Browser (Altas)&lt;/strong&gt; is an open-source Electron app that lets you control a browser using plain English (or any language). Just describe what you want to do, and the AI figures out how to do it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🌟 GitHub&lt;/strong&gt;: &lt;a href="https://github.com/DeepFundAI/ai-browser" rel="noopener noreferrer"&gt;https://github.com/DeepFundAI/ai-browser&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;🌐 Try download it&lt;/strong&gt;: &lt;a href="https://www.deepfundai.com/altas" rel="noopener noreferrer"&gt;https://www.deepfundai.com/altas&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Why I built this
&lt;/h2&gt;

&lt;p&gt;As a developer, I got tired of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Writing Puppeteer scripts for simple web scraping tasks&lt;/li&gt;
&lt;li&gt;Manually checking websites for updates&lt;/li&gt;
&lt;li&gt;Repeating the same browser workflows every day&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I wanted something simpler: &lt;strong&gt;tell the AI what to do, and let it handle the details&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Current status&lt;/strong&gt;: I'm actively job hunting and would love feedback from the community. If this project resonates with you, a ⭐️ on GitHub would mean a lot for my portfolio!&lt;/p&gt;
&lt;h2&gt;
  
  
  What it does
&lt;/h2&gt;
&lt;h3&gt;
  
  
  1. Natural Language Task Execution
&lt;/h3&gt;

&lt;p&gt;Type something like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Collect the top 10 posts from Hacker News"&lt;/li&gt;
&lt;li&gt;"Search for 'AI news' and summarize the results"&lt;/li&gt;
&lt;li&gt;"Monitor this GitHub repo and notify me when stars increase"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The AI plans the steps and executes them automatically.&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.amazonaws.com%2Fuploads%2Farticles%2Fiuyw00qln1075eccs8aj.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%2Fiuyw00qln1075eccs8aj.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  2. Visual Task Execution
&lt;/h3&gt;

&lt;p&gt;Left side shows the AI's thought process and tool calls. Right side shows the live browser preview.&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.amazonaws.com%2Fuploads%2Farticles%2Fyq5kcmq5jd290x4qav2j.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%2Fyq5kcmq5jd290x4qav2j.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
You can see exactly what the AI is doing at each step.&lt;/p&gt;
&lt;h3&gt;
  
  
  3. Scheduled Tasks
&lt;/h3&gt;

&lt;p&gt;Set up recurring tasks to run at specific intervals.&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.amazonaws.com%2Fuploads%2Farticles%2Fmh4ldl61aikhboz7fykt.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%2Fmh4ldl61aikhboz7fykt.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Scrape news every morning at 9 AM&lt;/li&gt;
&lt;li&gt;Check crypto prices every hour&lt;/li&gt;
&lt;li&gt;Monitor competitor websites daily&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  4. Task History
&lt;/h3&gt;

&lt;p&gt;All executed tasks are saved with full logs and playback capability.&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.amazonaws.com%2Fuploads%2Farticles%2Fsv45msu3xva3i6xro9ur.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%2Fsv45msu3xva3i6xro9ur.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Tech Stack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend&lt;/strong&gt;: Next.js 15 + React 19 + Ant Design + Tailwind CSS&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Desktop&lt;/strong&gt;: Electron 33&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI Engine&lt;/strong&gt;: &lt;a href="https://github.com/FellouAI/eko" rel="noopener noreferrer"&gt;@jarvis-agent&lt;/a&gt; (based on Eko framework)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;State&lt;/strong&gt;: Zustand&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Storage&lt;/strong&gt;: IndexedDB&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Build&lt;/strong&gt;: Vite + TypeScript&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Architecture
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌─────────────────────────────────────────┐
│         Next.js UI Layer                │
│  ┌──────┐  ┌──────┐  ┌──────┐          │
│  │ Home │  │ Main │  │History│          │
│  └──────┘  └──────┘  └──────┘          │
└────────────────┬────────────────────────┘
                 │ IPC
┌────────────────▼────────────────────────┐
│      Electron Main Process              │
│  ┌────────────────────────────────┐    │
│  │   AI Agent (Eko Framework)     │    │
│  │  ┌────────┐    ┌────────┐      │    │
│  │  │Planner │───▶│Executor│      │    │
│  │  └────────┘    └────────┘      │    │
│  └────────────────────────────────┘    │
│  ┌────────────────────────────────┐    │
│  │    Browser Automation Tools    │    │
│  │  - Navigate - Click - Extract  │    │
│  └────────────────────────────────┘    │
└─────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  Supported AI Models
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;DeepSeek&lt;/strong&gt;: deepseek-chat, deepseek-reasoner&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Qwen&lt;/strong&gt;: qwen-max, qwen-plus, qwen-vl-max&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Google Gemini&lt;/strong&gt;: gemini-1.5-flash, gemini-2.0-flash, gemini-1.5-pro&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Anthropic Claude&lt;/strong&gt;: claude-3.7-sonnet, claude-3.5-sonnet, claude-3-opus&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OpenRouter&lt;/strong&gt;: Aggregates multiple providers&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Installation
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Clone the repo&lt;/span&gt;
git clone https://github.com/DeepFundAI/ai-browser.git
&lt;span class="nb"&gt;cd &lt;/span&gt;ai-browser

&lt;span class="c"&gt;# Install dependencies&lt;/span&gt;
pnpm &lt;span class="nb"&gt;install&lt;/span&gt;

&lt;span class="c"&gt;# Configure API keys&lt;/span&gt;
&lt;span class="nb"&gt;cp&lt;/span&gt; .env.template .env.local
&lt;span class="c"&gt;# Edit .env.local with your API key (at least one provider)&lt;/span&gt;

&lt;span class="c"&gt;# Build Electron dependencies&lt;/span&gt;
pnpm run build:deps

&lt;span class="c"&gt;# Start development server&lt;/span&gt;
pnpm run next

&lt;span class="c"&gt;# Start Electron app (in another terminal)&lt;/span&gt;
pnpm run electron
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Building for Distribution
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pnpm run build
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Outputs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;macOS: &lt;code&gt;.dmg&lt;/code&gt; installer&lt;/li&gt;
&lt;li&gt;Windows: &lt;code&gt;.exe&lt;/code&gt; installer&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Use Cases
&lt;/h2&gt;
&lt;h3&gt;
  
  
  1. Web Scraping
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Task&lt;/strong&gt;: "Scrape the top 20 GitHub trending repositories today"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI executes&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Navigate to GitHub trending page&lt;/li&gt;
&lt;li&gt;Extract repo names, stars, descriptions&lt;/li&gt;
&lt;li&gt;Save as JSON file&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;
  
  
  2. Monitoring
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Scheduled task&lt;/strong&gt;: "Check my website uptime every 30 minutes"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI does&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Visit the website&lt;/li&gt;
&lt;li&gt;Verify it loads successfully&lt;/li&gt;
&lt;li&gt;Log the result&lt;/li&gt;
&lt;li&gt;Alert if it fails&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  3. Data Collection
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Task&lt;/strong&gt;: "Visit these 10 URLs and extract all article titles"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI handles&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Loop through each URL&lt;/li&gt;
&lt;li&gt;Find article title elements&lt;/li&gt;
&lt;li&gt;Compile results&lt;/li&gt;
&lt;li&gt;Save to file&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  4. Automated Testing
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Task&lt;/strong&gt;: "Test the login flow on my staging site"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI workflow&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open login page&lt;/li&gt;
&lt;li&gt;Enter test credentials&lt;/li&gt;
&lt;li&gt;Click login button&lt;/li&gt;
&lt;li&gt;Verify redirect to dashboard&lt;/li&gt;
&lt;li&gt;Report success/failure&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;
  
  
  Key Features
&lt;/h2&gt;
&lt;h3&gt;
  
  
  MCP Protocol Integration
&lt;/h3&gt;

&lt;p&gt;Uses &lt;strong&gt;Model Context Protocol&lt;/strong&gt; for standardized AI-tool communication:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;tool&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;browser_navigate&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Navigate to a URL&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;parameters&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;string&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Target URL&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Streaming Responses
&lt;/h3&gt;

&lt;p&gt;Real-time updates via &lt;strong&gt;Server-Sent Events&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// API route returns SSE stream&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;stream&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;ReadableStream&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="nf"&gt;start&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;controller&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="k"&gt;await &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;chunk&lt;/span&gt; &lt;span class="k"&gt;of&lt;/span&gt; &lt;span class="nx"&gt;aiResponse&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;controller&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;enqueue&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;encoder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;encode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;chunk&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Task Persistence
&lt;/h3&gt;

&lt;p&gt;All tasks saved to &lt;strong&gt;IndexedDB&lt;/strong&gt; with full-text search:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;taskStorage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;save&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;task&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;results&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;taskStorage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;search&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;github&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Roadmap
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Short-term (Next 1-2 months)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;[ ] &lt;strong&gt;Agent Configuration&lt;/strong&gt;: Customize agent prompts and MCP tools settings&lt;/li&gt;
&lt;li&gt;[ ] &lt;strong&gt;Human Intervention&lt;/strong&gt;: Allow manual control during sessions (e.g., handling login prompts)&lt;/li&gt;
&lt;li&gt;[ ] &lt;strong&gt;Voice Input&lt;/strong&gt;: Support voice commands for task input&lt;/li&gt;
&lt;li&gt;[ ] &lt;strong&gt;More Agent Types&lt;/strong&gt;: Add ShellAgent and other specialized agents&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Long-term Vision
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;[ ] Plugin system for custom tools&lt;/li&gt;
&lt;li&gt;[ ] Cloud sync for task history&lt;/li&gt;
&lt;li&gt;[ ] Team collaboration features&lt;/li&gt;
&lt;li&gt;[ ] Mobile app (iOS/Android)&lt;/li&gt;
&lt;li&gt;[ ] Browser extension version&lt;/li&gt;
&lt;li&gt;[ ] More AI model integrations&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Credits
&lt;/h2&gt;

&lt;p&gt;Special thanks to &lt;a href="https://github.com/FellouAI/eko" rel="noopener noreferrer"&gt;Eko&lt;/a&gt; for the powerful agent framework.&lt;/p&gt;

&lt;h2&gt;
  
  
  License
&lt;/h2&gt;

&lt;p&gt;MIT License - free to use, modify, and commercialize&lt;/p&gt;




&lt;h2&gt;
  
  
  Why I'm Sharing This
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;If you find this project useful:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;⭐️ &lt;strong&gt;Star the repo&lt;/strong&gt;: &lt;a href="https://github.com/DeepFundAI/ai-browser" rel="noopener noreferrer"&gt;https://github.com/DeepFundAI/ai-browser&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  - 💬 &lt;strong&gt;Share feedback&lt;/strong&gt;: I'm actively improving this and would love to hear your thoughts
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Author&lt;/strong&gt;: lsustc&lt;br&gt;
&lt;strong&gt;Tech Stack&lt;/strong&gt;: Next.js 15 + Electron 33 + TypeScript + AI Agents&lt;br&gt;
&lt;strong&gt;GitHub&lt;/strong&gt;: &lt;a href="https://github.com/DeepFundAI/ai-browser" rel="noopener noreferrer"&gt;https://github.com/DeepFundAI/ai-browser&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a href="https://www.deepfundai.com/altas" rel="noopener noreferrer"&gt;https://www.deepfundai.com/altas&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Thanks for reading!&lt;/strong&gt; Questions, feedback, and constructive criticism are all welcome in the comments. 🙏&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>javascript</category>
    </item>
    <item>
      <title>I built an open-source AI browser that automates web tasks with natural language</title>
      <dc:creator>lsustc</dc:creator>
      <pubDate>Tue, 04 Nov 2025 03:25:30 +0000</pubDate>
      <link>https://forem.com/lsustc/i-built-an-open-source-ai-browser-that-automates-web-tasks-with-natural-language-70h</link>
      <guid>https://forem.com/lsustc/i-built-an-open-source-ai-browser-that-automates-web-tasks-with-natural-language-70h</guid>
      <description>&lt;h2&gt;
  
  
  What is it?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;AI Browser (Altas)&lt;/strong&gt; is an open-source Electron app that lets you control a browser using plain English (or any language). Just describe what you want to do, and the AI figures out how to do it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🌟 GitHub&lt;/strong&gt;: &lt;a href="https://github.com/DeepFundAI/ai-browser" rel="noopener noreferrer"&gt;https://github.com/DeepFundAI/ai-browser&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;🌐 Try download it&lt;/strong&gt;: &lt;a href="https://www.deepfundai.com/altas" rel="noopener noreferrer"&gt;https://www.deepfundai.com/altas&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Why I built this
&lt;/h2&gt;

&lt;p&gt;As a developer, I got tired of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Writing Puppeteer scripts for simple web scraping tasks&lt;/li&gt;
&lt;li&gt;Manually checking websites for updates&lt;/li&gt;
&lt;li&gt;Repeating the same browser workflows every day&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I wanted something simpler: &lt;strong&gt;tell the AI what to do, and let it handle the details&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Current status&lt;/strong&gt;: I'm actively job hunting and would love feedback from the community. If this project resonates with you, a ⭐️ on GitHub would mean a lot for my portfolio!&lt;/p&gt;
&lt;h2&gt;
  
  
  What it does
&lt;/h2&gt;
&lt;h3&gt;
  
  
  1. Natural Language Task Execution
&lt;/h3&gt;

&lt;p&gt;Type something like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Collect the top 10 posts from Hacker News"&lt;/li&gt;
&lt;li&gt;"Search for 'AI news' and summarize the results"&lt;/li&gt;
&lt;li&gt;"Monitor this GitHub repo and notify me when stars increase"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The AI plans the steps and executes them automatically.&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.amazonaws.com%2Fuploads%2Farticles%2Fiuyw00qln1075eccs8aj.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%2Fiuyw00qln1075eccs8aj.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  2. Visual Task Execution
&lt;/h3&gt;

&lt;p&gt;Left side shows the AI's thought process and tool calls. Right side shows the live browser preview.&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.amazonaws.com%2Fuploads%2Farticles%2Fyq5kcmq5jd290x4qav2j.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%2Fyq5kcmq5jd290x4qav2j.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
You can see exactly what the AI is doing at each step.&lt;/p&gt;
&lt;h3&gt;
  
  
  3. Scheduled Tasks
&lt;/h3&gt;

&lt;p&gt;Set up recurring tasks to run at specific intervals.&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.amazonaws.com%2Fuploads%2Farticles%2Fmh4ldl61aikhboz7fykt.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%2Fmh4ldl61aikhboz7fykt.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Scrape news every morning at 9 AM&lt;/li&gt;
&lt;li&gt;Check crypto prices every hour&lt;/li&gt;
&lt;li&gt;Monitor competitor websites daily&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  4. Task History
&lt;/h3&gt;

&lt;p&gt;All executed tasks are saved with full logs and playback capability.&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.amazonaws.com%2Fuploads%2Farticles%2Fsv45msu3xva3i6xro9ur.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%2Fsv45msu3xva3i6xro9ur.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Tech Stack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend&lt;/strong&gt;: Next.js 15 + React 19 + Ant Design + Tailwind CSS&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Desktop&lt;/strong&gt;: Electron 33&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI Engine&lt;/strong&gt;: &lt;a href="https://github.com/FellouAI/eko" rel="noopener noreferrer"&gt;@jarvis-agent&lt;/a&gt; (based on Eko framework)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;State&lt;/strong&gt;: Zustand&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Storage&lt;/strong&gt;: IndexedDB&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Build&lt;/strong&gt;: Vite + TypeScript&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Architecture
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌─────────────────────────────────────────┐
│         Next.js UI Layer                │
│  ┌──────┐  ┌──────┐  ┌──────┐          │
│  │ Home │  │ Main │  │History│          │
│  └──────┘  └──────┘  └──────┘          │
└────────────────┬────────────────────────┘
                 │ IPC
┌────────────────▼────────────────────────┐
│      Electron Main Process              │
│  ┌────────────────────────────────┐    │
│  │   AI Agent (Eko Framework)     │    │
│  │  ┌────────┐    ┌────────┐      │    │
│  │  │Planner │───▶│Executor│      │    │
│  │  └────────┘    └────────┘      │    │
│  └────────────────────────────────┘    │
│  ┌────────────────────────────────┐    │
│  │    Browser Automation Tools    │    │
│  │  - Navigate - Click - Extract  │    │
│  └────────────────────────────────┘    │
└─────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  Supported AI Models
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;DeepSeek&lt;/strong&gt;: deepseek-chat, deepseek-reasoner&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Qwen&lt;/strong&gt;: qwen-max, qwen-plus, qwen-vl-max&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Google Gemini&lt;/strong&gt;: gemini-1.5-flash, gemini-2.0-flash, gemini-1.5-pro&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Anthropic Claude&lt;/strong&gt;: claude-3.7-sonnet, claude-3.5-sonnet, claude-3-opus&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OpenRouter&lt;/strong&gt;: Aggregates multiple providers&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Installation
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Clone the repo&lt;/span&gt;
git clone https://github.com/DeepFundAI/ai-browser.git
&lt;span class="nb"&gt;cd &lt;/span&gt;ai-browser

&lt;span class="c"&gt;# Install dependencies&lt;/span&gt;
pnpm &lt;span class="nb"&gt;install&lt;/span&gt;

&lt;span class="c"&gt;# Configure API keys&lt;/span&gt;
&lt;span class="nb"&gt;cp&lt;/span&gt; .env.template .env.local
&lt;span class="c"&gt;# Edit .env.local with your API key (at least one provider)&lt;/span&gt;

&lt;span class="c"&gt;# Build Electron dependencies&lt;/span&gt;
pnpm run build:deps

&lt;span class="c"&gt;# Start development server&lt;/span&gt;
pnpm run next

&lt;span class="c"&gt;# Start Electron app (in another terminal)&lt;/span&gt;
pnpm run electron
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Building for Distribution
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pnpm run build
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Outputs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;macOS: &lt;code&gt;.dmg&lt;/code&gt; installer&lt;/li&gt;
&lt;li&gt;Windows: &lt;code&gt;.exe&lt;/code&gt; installer&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Use Cases
&lt;/h2&gt;
&lt;h3&gt;
  
  
  1. Web Scraping
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Task&lt;/strong&gt;: "Scrape the top 20 GitHub trending repositories today"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI executes&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Navigate to GitHub trending page&lt;/li&gt;
&lt;li&gt;Extract repo names, stars, descriptions&lt;/li&gt;
&lt;li&gt;Save as JSON file&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;
  
  
  2. Monitoring
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Scheduled task&lt;/strong&gt;: "Check my website uptime every 30 minutes"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI does&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Visit the website&lt;/li&gt;
&lt;li&gt;Verify it loads successfully&lt;/li&gt;
&lt;li&gt;Log the result&lt;/li&gt;
&lt;li&gt;Alert if it fails&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  3. Data Collection
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Task&lt;/strong&gt;: "Visit these 10 URLs and extract all article titles"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI handles&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Loop through each URL&lt;/li&gt;
&lt;li&gt;Find article title elements&lt;/li&gt;
&lt;li&gt;Compile results&lt;/li&gt;
&lt;li&gt;Save to file&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  4. Automated Testing
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Task&lt;/strong&gt;: "Test the login flow on my staging site"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI workflow&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open login page&lt;/li&gt;
&lt;li&gt;Enter test credentials&lt;/li&gt;
&lt;li&gt;Click login button&lt;/li&gt;
&lt;li&gt;Verify redirect to dashboard&lt;/li&gt;
&lt;li&gt;Report success/failure&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;
  
  
  Key Features
&lt;/h2&gt;
&lt;h3&gt;
  
  
  MCP Protocol Integration
&lt;/h3&gt;

&lt;p&gt;Uses &lt;strong&gt;Model Context Protocol&lt;/strong&gt; for standardized AI-tool communication:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;tool&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;browser_navigate&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Navigate to a URL&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;parameters&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;string&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Target URL&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Streaming Responses
&lt;/h3&gt;

&lt;p&gt;Real-time updates via &lt;strong&gt;Server-Sent Events&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// API route returns SSE stream&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;stream&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;ReadableStream&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="nf"&gt;start&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;controller&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="k"&gt;await &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;chunk&lt;/span&gt; &lt;span class="k"&gt;of&lt;/span&gt; &lt;span class="nx"&gt;aiResponse&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;controller&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;enqueue&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;encoder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;encode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;chunk&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Task Persistence
&lt;/h3&gt;

&lt;p&gt;All tasks saved to &lt;strong&gt;IndexedDB&lt;/strong&gt; with full-text search:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;taskStorage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;save&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;task&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;results&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;taskStorage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;search&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;github&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Roadmap
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Short-term (Next 1-2 months)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;[ ] &lt;strong&gt;Agent Configuration&lt;/strong&gt;: Customize agent prompts and MCP tools settings&lt;/li&gt;
&lt;li&gt;[ ] &lt;strong&gt;Human Intervention&lt;/strong&gt;: Allow manual control during sessions (e.g., handling login prompts)&lt;/li&gt;
&lt;li&gt;[ ] &lt;strong&gt;Voice Input&lt;/strong&gt;: Support voice commands for task input&lt;/li&gt;
&lt;li&gt;[ ] &lt;strong&gt;More Agent Types&lt;/strong&gt;: Add ShellAgent and other specialized agents&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Long-term Vision
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;[ ] Plugin system for custom tools&lt;/li&gt;
&lt;li&gt;[ ] Cloud sync for task history&lt;/li&gt;
&lt;li&gt;[ ] Team collaboration features&lt;/li&gt;
&lt;li&gt;[ ] Mobile app (iOS/Android)&lt;/li&gt;
&lt;li&gt;[ ] Browser extension version&lt;/li&gt;
&lt;li&gt;[ ] More AI model integrations&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Credits
&lt;/h2&gt;

&lt;p&gt;Special thanks to &lt;a href="https://github.com/FellouAI/eko" rel="noopener noreferrer"&gt;Eko&lt;/a&gt; for the powerful agent framework.&lt;/p&gt;

&lt;h2&gt;
  
  
  License
&lt;/h2&gt;

&lt;p&gt;MIT License - free to use, modify, and commercialize&lt;/p&gt;




&lt;h2&gt;
  
  
  Why I'm Sharing This
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;If you find this project useful:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;⭐️ &lt;strong&gt;Star the repo&lt;/strong&gt;: &lt;a href="https://github.com/DeepFundAI/ai-browser" rel="noopener noreferrer"&gt;https://github.com/DeepFundAI/ai-browser&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  - 💬 &lt;strong&gt;Share feedback&lt;/strong&gt;: I'm actively improving this and would love to hear your thoughts
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Author&lt;/strong&gt;: lsustc&lt;br&gt;
&lt;strong&gt;Tech Stack&lt;/strong&gt;: Next.js 15 + Electron 33 + TypeScript + AI Agents&lt;br&gt;
&lt;strong&gt;GitHub&lt;/strong&gt;: &lt;a href="https://github.com/DeepFundAI/ai-browser" rel="noopener noreferrer"&gt;https://github.com/DeepFundAI/ai-browser&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a href="https://www.deepfundai.com/altas" rel="noopener noreferrer"&gt;https://www.deepfundai.com/altas&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Thanks for reading!&lt;/strong&gt; Questions, feedback, and constructive criticism are all welcome in the comments. 🙏&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>browser</category>
      <category>nextjs</category>
    </item>
  </channel>
</rss>
