<?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: shuo xiao</title>
    <description>The latest articles on DEV Community by shuo xiao (@shuo_xiao_c7d1a80c798f8ec).</description>
    <link>https://dev.to/shuo_xiao_c7d1a80c798f8ec</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%2F3959531%2F8b4d15cb-3d39-43ab-8168-047921c56874.jpg</url>
      <title>DEV Community: shuo xiao</title>
      <link>https://dev.to/shuo_xiao_c7d1a80c798f8ec</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/shuo_xiao_c7d1a80c798f8ec"/>
    <language>en</language>
    <item>
      <title>Coding agents keep losing context between tools, so I built a local-first handoff CLI</title>
      <dc:creator>shuo xiao</dc:creator>
      <pubDate>Sat, 30 May 2026 09:29:43 +0000</pubDate>
      <link>https://dev.to/shuo_xiao_c7d1a80c798f8ec/coding-agents-keep-losing-context-between-tools-so-i-built-a-local-first-handoff-cli-4h01</link>
      <guid>https://dev.to/shuo_xiao_c7d1a80c798f8ec/coding-agents-keep-losing-context-between-tools-so-i-built-a-local-first-handoff-cli-4h01</guid>
      <description>&lt;h2&gt;
  
  
  The problem
&lt;/h2&gt;

&lt;p&gt;I often switch between Codex, OpenCode, Cline, Claude Desktop, scripts, and terminals.&lt;/p&gt;

&lt;p&gt;The annoying part is not starting a new tool. The annoying part is explaining the same workspace state again:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;what changed&lt;/li&gt;
&lt;li&gt;what is still pending&lt;/li&gt;
&lt;li&gt;what should not be touched&lt;/li&gt;
&lt;li&gt;what tests passed&lt;/li&gt;
&lt;li&gt;what the next agent should read before editing&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;AgentContextBus (acb) is a local-first CLI for handing off workspace context between coding agents.&lt;/p&gt;

&lt;p&gt;It saves a local handoff packet, then lets the next agent read it through:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;paste-ready prompts&lt;/li&gt;
&lt;li&gt;brief prompts&lt;/li&gt;
&lt;li&gt;a local dashboard&lt;/li&gt;
&lt;li&gt;JSON output&lt;/li&gt;
&lt;li&gt;explicit MCP tools&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  First run
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx @xiaoshuo1988/acb verify first-run
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For Chinese output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx @xiaoshuo1988/acb verify first-run &lt;span class="nt"&gt;--lang&lt;/span&gt; zh-CN
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  A normal handoff
&lt;/h2&gt;

&lt;p&gt;From the agent that has context:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;acb handoff &lt;span class="nt"&gt;--from&lt;/span&gt; codex &lt;span class="nt"&gt;--summary&lt;/span&gt; &lt;span class="s2"&gt;"Ready for the next agent"&lt;/span&gt; &lt;span class="nt"&gt;--git&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;From the receiving side:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;acb receive &lt;span class="nt"&gt;--latest&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After the receiving agent summarizes the packet:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;acb ack &lt;span class="nt"&gt;--latest&lt;/span&gt; &lt;span class="nt"&gt;--by&lt;/span&gt; opencode
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  What ACB intentionally does not do
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;no hidden prompt injection&lt;/li&gt;
&lt;li&gt;no traffic interception&lt;/li&gt;
&lt;li&gt;no third-party client config mutation&lt;/li&gt;
&lt;li&gt;no cloud sync&lt;/li&gt;
&lt;li&gt;no background daemon&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why local-first
&lt;/h2&gt;

&lt;p&gt;I want the user to be able to inspect the packet store, copy text manually, and decide exactly when context crosses from one agent to another.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I want feedback on
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Is the handoff packet concept clear?&lt;/li&gt;
&lt;li&gt;Is &lt;code&gt;verify first-run&lt;/code&gt; enough to understand the tool?&lt;/li&gt;
&lt;li&gt;Is &lt;code&gt;receive --latest&lt;/code&gt; the right receiving-side command?&lt;/li&gt;
&lt;li&gt;Which client path needs the most work?&lt;/li&gt;
&lt;li&gt;Would you trust this workflow in a real project?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Repo:&lt;br&gt;
&lt;a href="https://github.com/xiaoshuo1988130/acb" rel="noopener noreferrer"&gt;https://github.com/xiaoshuo1988130/acb&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Feedback discussion:&lt;br&gt;
&lt;a href="https://github.com/xiaoshuo1988130/acb/discussions/1" rel="noopener noreferrer"&gt;https://github.com/xiaoshuo1988130/acb/discussions/1&lt;/a&gt;&lt;/p&gt;

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