<?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: Mohamed Aly Amin</title>
    <description>The latest articles on DEV Community by Mohamed Aly Amin (@mohamed9974).</description>
    <link>https://dev.to/mohamed9974</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%2F897624%2F4db062ec-6a02-45b8-87cf-0024b4432b5a.jpeg</url>
      <title>DEV Community: Mohamed Aly Amin</title>
      <link>https://dev.to/mohamed9974</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mohamed9974"/>
    <language>en</language>
    <item>
      <title>How I Built an Orchestrator-Worker System for Claude Code</title>
      <dc:creator>Mohamed Aly Amin</dc:creator>
      <pubDate>Sat, 10 Jan 2026 16:58:05 +0000</pubDate>
      <link>https://dev.to/mohamed9974/how-i-built-an-orchestrator-worker-system-for-claude-code-2i37</link>
      <guid>https://dev.to/mohamed9974/how-i-built-an-orchestrator-worker-system-for-claude-code-2i37</guid>
      <description>&lt;p&gt;Back in early January, I was wrestling with a problem: coordinating multiple Claude Code sessions across different repos without losing context or stepping on my own toes.&lt;/p&gt;

&lt;p&gt;I'd been using &lt;a href="https://github.com/Everyone-Needs-A-Copilot/claude-copilot" rel="noopener noreferrer"&gt;Claude Copilot&lt;/a&gt; - a framework that adds persistent memory, specialized agents, and task management to Claude Code. It's a solid foundation, but I needed something it didn't have: &lt;strong&gt;multi-session coordination&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;My solution was an &lt;strong&gt;orchestrator-worker pattern&lt;/strong&gt; built on top of Claude Copilot. I pushed the first version on &lt;a href="https://github.com/skylight74/claude-copilot/commit/3825b87" rel="noopener noreferrer"&gt;January 6th&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;When you're working across multiple repos (backend, frontend, admin, infra), you need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A coordinator that tracks progress but doesn't touch code&lt;/li&gt;
&lt;li&gt;Workers that focus on one task in isolation&lt;/li&gt;
&lt;li&gt;Clean handoffs between sessions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Claude Copilot gave me the memory and task infrastructure. I needed to add the coordination layer.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Orchestrator&lt;/strong&gt; (coordinates, never executes):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tracks status across all repos&lt;/li&gt;
&lt;li&gt;Tells you which worker command to run&lt;/li&gt;
&lt;li&gt;Updates sprint boards and invoices&lt;/li&gt;
&lt;li&gt;Syncs with Notion&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Workers&lt;/strong&gt; (isolated execution):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Run in git worktrees (no branch switching conflicts)&lt;/li&gt;
&lt;li&gt;Use git flow (&lt;code&gt;feature/&lt;/code&gt; branches)&lt;/li&gt;
&lt;li&gt;Report progress via memory&lt;/li&gt;
&lt;li&gt;Have strict start/done commands&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Makefile-based&lt;/strong&gt; - no Python dependencies, just:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;make worker-new &lt;span class="nv"&gt;REPO&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;backend &lt;span class="nv"&gt;TASK&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;fix-migration
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Key Design Decisions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Human-in-the-loop
&lt;/h3&gt;

&lt;p&gt;Workers don't spawn automatically. You decide when to start one. This keeps you in control while still parallelizing work.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Git flow native
&lt;/h3&gt;

&lt;p&gt;Every task is a feature branch, finished properly with &lt;code&gt;git flow feature finish&lt;/code&gt;. No orphan branches, no merge chaos.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Strict role boundaries
&lt;/h3&gt;

&lt;p&gt;The orchestrator literally cannot write code - it's prompt-enforced:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gu"&gt;## CRITICAL: Your Role Boundaries&lt;/span&gt;

&lt;span class="gs"&gt;**You COORDINATE. You do NOT EXECUTE.**&lt;/span&gt;

&lt;span class="gu"&gt;### You do NOT:&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Write code or fix bugs (workers do this)
&lt;span class="p"&gt;-&lt;/span&gt; Work directly in sub-repos (workers do this)
&lt;span class="p"&gt;-&lt;/span&gt; Create feature branches for tasks (workers do this)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4. Worktree isolation
&lt;/h3&gt;

&lt;p&gt;Each worker runs in a separate git worktree. No branch switching, no stash juggling, no conflicts. Workers can run truly in parallel.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Flow
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌─────────────────┐     ┌─────────────────┐
│   ORCHESTRATOR  │     │     WORKER      │
│   (main repo)   │     │   (worktree)    │
├─────────────────┤     ├─────────────────┤
│ • Track status  │────▶│ • feature/task  │
│ • Assign tasks  │     │ • Write code    │
│ • Update Notion │◀────│ • Report done   │
│ • Never code    │     │ • Cleanup       │
└─────────────────┘     └─────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Try It
&lt;/h2&gt;

&lt;p&gt;Everything is in my fork of Claude Copilot:&lt;/p&gt;

&lt;p&gt;🔗 &lt;a href="https://github.com/skylight74/claude-copilot" rel="noopener noreferrer"&gt;github.com/skylight74/claude-copilot&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Key files:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;templates/Makefile.orchestrator&lt;/code&gt; - The orchestration commands&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;.claude/commands/orchestrator.md&lt;/code&gt; - Orchestrator behavior&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;.claude/commands/worker.md&lt;/code&gt; - Worker behavior&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;docs/ORCHESTRATOR-WORKER-FLOWCHART.md&lt;/code&gt; - Full system diagram&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Still iterating on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Better progress reporting between workers&lt;/li&gt;
&lt;li&gt;Automatic conflict detection across worktrees&lt;/li&gt;
&lt;li&gt;Tighter Notion integration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Would love feedback from anyone solving similar multi-session coordination problems. What's your approach?&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Built on top of &lt;a href="https://github.com/Everyone-Needs-A-Copilot/claude-copilot" rel="noopener noreferrer"&gt;Claude Copilot&lt;/a&gt; by Everyone Needs a Copilot&lt;/em&gt;&lt;/p&gt;

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