<?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: Tarun</title>
    <description>The latest articles on DEV Community by Tarun (@tarun922).</description>
    <link>https://dev.to/tarun922</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%2F4228896%2F814a6e2f-7e73-483f-bb55-67deddb07c7d.jpeg</url>
      <title>DEV Community: Tarun</title>
      <link>https://dev.to/tarun922</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tarun922"/>
    <language>en</language>
    <item>
      <title>I built an AI coding agent that never touches your repo directly</title>
      <dc:creator>Tarun</dc:creator>
      <pubDate>Thu, 05 Nov 2026 15:37:13 +0000</pubDate>
      <link>https://dev.to/tarun922/i-built-an-ai-coding-agent-that-never-touches-your-repo-directly-4e9e</link>
      <guid>https://dev.to/tarun922/i-built-an-ai-coding-agent-that-never-touches-your-repo-directly-4e9e</guid>
      <description>&lt;p&gt;Most AI coding agents have the same trust problem: you point them at your project and hope for the best. If the model has a bad day, your working tree pays for it.&lt;/p&gt;

&lt;p&gt;I wanted something different, so I built &lt;strong&gt;Buddy&lt;/strong&gt;: a small floating bubble that lives in the corner of your screen, and that works in a &lt;em&gt;copy&lt;/em&gt; of your project instead of the project itself.&lt;/p&gt;

&lt;p&gt;Repo: &lt;a href="https://github.com/tarun922/Buddy.live" rel="noopener noreferrer"&gt;https://github.com/tarun922/Buddy.live&lt;/a&gt; (MIT)&lt;/p&gt;

&lt;h2&gt;
  
  
  The core idea: work in a clone, apply on purpose
&lt;/h2&gt;

&lt;p&gt;When you choose a project folder, Buddy makes a private clone and does all its work on its own &lt;code&gt;buddy&lt;/code&gt; branch. It can plan, edit files, run tests and commit, but none of that reaches your real repo.&lt;/p&gt;

&lt;p&gt;When it's done:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;You see every file it changed.&lt;/li&gt;
&lt;li&gt;You pick the ones you want.&lt;/li&gt;
&lt;li&gt;One click brings them into your repo.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Files you edited yourself in the meantime are never overwritten. If you don't like the result, you throw it away and nothing of yours was touched. There is also a timeline, so you can go back to any save point, and writes are atomic with a run journal, so a power cut mid-task leaves you with a choice to resume or discard instead of a half-written project.&lt;/p&gt;

&lt;h2&gt;
  
  
  Built for people who don't want to pay for AI
&lt;/h2&gt;

&lt;p&gt;I'm a student, and I don't have a big API budget. So Buddy is designed to get decent results out of free models:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Free tiers: OpenRouter, Mistral, Gemini, Cerebras, NVIDIA NIM&lt;/li&gt;
&lt;li&gt;Local: Ollama&lt;/li&gt;
&lt;li&gt;Free GPU: a Kaggle notebook running an open model&lt;/li&gt;
&lt;li&gt;Paid, if you have keys: Claude and OpenAI&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It supports key rotation and automatic fallback, so when one free tier runs out it moves to the next.&lt;/p&gt;

&lt;h2&gt;
  
  
  Making weak models less weak
&lt;/h2&gt;

&lt;p&gt;A small model fails mostly because it gets too much context or too much freedom. Two things in Buddy help with that.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Micro agents.&lt;/strong&gt; Small helpers run around the main model, and each can use its own model and key:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Scout&lt;/strong&gt; picks the right skills and tools for this task before the main model starts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pathfinder&lt;/strong&gt; finds the exact files, functions and line ranges in a large codebase.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Memory keeper&lt;/strong&gt; summarizes long chats and keeps durable facts about you and the project.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Committer&lt;/strong&gt; writes commit messages.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reviewer&lt;/strong&gt; reads the diff after a run and reports only real problems.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Put a tiny fast model on Scout and save the big one for the actual work.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Outline-first editing.&lt;/strong&gt; Instead of rewriting whole files, the agent reads and edits specific symbols (&lt;code&gt;read_symbol&lt;/code&gt;, &lt;code&gt;replace_symbol&lt;/code&gt;, &lt;code&gt;patch_file&lt;/code&gt;). Edits on big files hit real code instead of drifting.&lt;/p&gt;

&lt;h2&gt;
  
  
  Safety, because it's an agent
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;The terminal is isolated: installs go into Buddy's own folder, &lt;code&gt;sudo&lt;/code&gt; and system installs are refused, dangerous commands need a click, and catastrophic ones are blocked.&lt;/li&gt;
&lt;li&gt;API keys are encrypted at rest and never shown back in the UI.&lt;/li&gt;
&lt;li&gt;The renderer has no Node access. Everything goes through an explicit IPC allow-list.&lt;/li&gt;
&lt;li&gt;Plugins start disabled and need approval permission by permission.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There is also optional voice ("Ok Buddy", with an offline wake word) and optional computer control limited to search, open URL and open app. Computer control is off by default and gated behind a password the model never sees.&lt;/p&gt;

&lt;h2&gt;
  
  
  Stack
&lt;/h2&gt;

&lt;p&gt;Electron + React (Vite) for the UI, with the agent core as plain Node ESM in the main process. There are 20+ test suites (&lt;code&gt;npm test&lt;/code&gt;).&lt;/p&gt;

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



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/tarun922/Buddy.live.git
&lt;span class="nb"&gt;cd &lt;/span&gt;Buddy.live
npm &lt;span class="nb"&gt;install
&lt;/span&gt;npm run dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then click the bubble (or press &lt;code&gt;Ctrl/Cmd + Shift + Space&lt;/code&gt;), choose a folder, and paste one API key. A free one is enough to start. Installers for Windows, macOS and Linux are on the releases page.&lt;/p&gt;

&lt;h2&gt;
  
  
  Honest rough edges
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Installers are unsigned for now.&lt;/li&gt;
&lt;li&gt;I've mostly tested on Linux. Tiling compositors like Hyprland need a window rule or an XWayland flag for the transparent window.&lt;/li&gt;
&lt;li&gt;The agent is only as good as the model behind it. Free models still struggle on hard tasks.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What I'd like feedback on
&lt;/h2&gt;

</description>
      <category>ai</category>
      <category>agentskills</category>
      <category>claude</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
