<?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: Yanai Ron</title>
    <description>The latest articles on DEV Community by Yanai Ron (@yanairon).</description>
    <link>https://dev.to/yanairon</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%2F4119523%2Fa299e6b3-0b4f-4590-a842-62b8c73421c7.jpg</url>
      <title>DEV Community: Yanai Ron</title>
      <link>https://dev.to/yanairon</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/yanairon"/>
    <language>en</language>
    <item>
      <title>I got tired of my AI agents fighting over one repo, so I built taskpods</title>
      <dc:creator>Yanai Ron</dc:creator>
      <pubDate>Thu, 10 Sep 2026 14:41:33 +0000</pubDate>
      <link>https://dev.to/yanairon/i-got-tired-of-my-ai-agents-fighting-over-one-repo-so-i-built-taskpods-nk0</link>
      <guid>https://dev.to/yanairon/i-got-tired-of-my-ai-agents-fighting-over-one-repo-so-i-built-taskpods-nk0</guid>
      <description>&lt;p&gt;A few months ago I started running AI coding agents in parallel: one fixing a bug, one updating docs, one trying a refactor. The agents were fine. My repo was not.&lt;/p&gt;

&lt;p&gt;Every agent CLI works in your working tree. Two agents on the same repo means they edit the same files, stage each other's changes, and occasionally commit on top of one another. The "solution" I kept seeing was manual git worktrees: create one per agent, remember the branch names, remember where you put them, clean them up later. It works, but it's fiddly enough that I kept not doing it.&lt;/p&gt;

&lt;p&gt;So I wrote the thing I wanted: &lt;a href="https://github.com/yanairon/taskpods" rel="noopener noreferrer"&gt;taskpods&lt;/a&gt;, a small Python CLI that wraps git worktrees into disposable "pods".&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;taskpods
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  What a pod is
&lt;/h2&gt;

&lt;p&gt;A pod is a git worktree plus a branch, managed as one unit. One command creates it and drops your agent inside:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;taskpods start fix-auth &lt;span class="nt"&gt;--agent&lt;/span&gt; &lt;span class="s2"&gt;"claude -p 'fix the token refresh bug'"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That creates &lt;code&gt;.taskpods/fix-auth/&lt;/code&gt; as a worktree on branch &lt;code&gt;pods/fix-auth&lt;/code&gt; and runs the agent there. &lt;code&gt;--agent&lt;/code&gt; takes any command, so it works with claude, codex, gemini, opencode, a shell script, whatever you use. Start a second pod and the two agents never see each other's files:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;taskpods start docs-update &lt;span class="nt"&gt;--agent&lt;/span&gt; &lt;span class="s2"&gt;"claude -p 'document the config options'"&lt;/span&gt;
taskpods list
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  The lifecycle
&lt;/h2&gt;

&lt;p&gt;When an agent finishes, I review the diff like I would for a junior dev:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git &lt;span class="nt"&gt;-C&lt;/span&gt; .taskpods/fix-auth diff main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If it's good:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;taskpods &lt;span class="k"&gt;done &lt;/span&gt;fix-auth &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"fix: token refresh"&lt;/span&gt; &lt;span class="nt"&gt;--remove&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That commits, pushes the branch, opens a PR if you have &lt;code&gt;gh&lt;/code&gt; installed, and removes the worktree. If it's bad:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;taskpods abort fix-auth
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and the pod never existed. Abort refuses to delete work you've already pushed, which has saved me once already.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0lqouvv8cmsrjdxn4qr6.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0lqouvv8cmsrjdxn4qr6.gif" alt=" " width="790" height="560"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Design choices I cared about
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Zero config.&lt;/strong&gt; No daemon, no TUI, no config file to learn. It's one Python file over plain &lt;code&gt;git worktree&lt;/code&gt; commands. If you know git, you already know what it's doing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agent-agnostic.&lt;/strong&gt; Claude Code has a native worktree flag now, but it's Claude-only. I wanted the same workflow regardless of which agent I'm using that week, and I wanted the lifecycle (list / done / abort) in one place instead of in my shell history.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Boring on purpose.&lt;/strong&gt; Pods are real worktrees with real branches. Nothing is hidden in a database somewhere; you can &lt;code&gt;cd&lt;/code&gt; into a pod and use git normally.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What's next
&lt;/h2&gt;

&lt;p&gt;It's MIT-licensed and on PyPI: &lt;a href="https://github.com/yanairon/taskpods" rel="noopener noreferrer"&gt;github.com/yanairon/taskpods&lt;/a&gt;. v0.4.0 just shipped with the &lt;code&gt;--agent&lt;/code&gt; launcher. I'd genuinely like to hear how other people run parallel agents - if you have a workflow that works better, tell me about it in the comments.&lt;/p&gt;

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