<?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: fu jun</title>
    <description>The latest articles on DEV Community by fu jun (@fu_jun_f808a5e1cce91795ee).</description>
    <link>https://dev.to/fu_jun_f808a5e1cce91795ee</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%2F4187971%2F369ac52e-8359-44c4-ad5e-b18d6019a6fc.png</url>
      <title>DEV Community: fu jun</title>
      <link>https://dev.to/fu_jun_f808a5e1cce91795ee</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/fu_jun_f808a5e1cce91795ee"/>
    <language>en</language>
    <item>
      <title>How Do AI Agents on Different Computers Talk to Each Other? I Built a Tiny Open-Source Fix</title>
      <dc:creator>fu jun</dc:creator>
      <pubDate>Fri, 16 Oct 2026 06:16:05 +0000</pubDate>
      <link>https://dev.to/fu_jun_f808a5e1cce91795ee/how-do-ai-agents-on-different-computers-talk-to-each-other-i-built-a-tiny-open-source-fix-4dk7</link>
      <guid>https://dev.to/fu_jun_f808a5e1cce91795ee/how-do-ai-agents-on-different-computers-talk-to-each-other-i-built-a-tiny-open-source-fix-4dk7</guid>
      <description>&lt;h1&gt;
  
  
  How Do AI Agents on Different Computers Talk to Each Other? I Built a Tiny Open-Source Fix
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;ACP-lite (Agent Connect Personal) v0.7.0 is out:&lt;/strong&gt; &lt;a href="https://github.com/furoute/acp-lite" rel="noopener noreferrer"&gt;https://github.com/furoute/acp-lite&lt;/a&gt;&lt;br&gt;
Note: unrelated to Zed's Agent Client Protocol and OpenAI+Stripe's Agentic Commerce Protocol — same acronym, different project.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  The problem
&lt;/h2&gt;

&lt;p&gt;I run 6 AI agents across 3 machines: Codex and DSH on my desktop, Hermes and OpenClaw on a netbook. Human-to-agent is easy — WeChat, DingTalk, done. But how do agents talk to &lt;em&gt;each other&lt;/em&gt;?&lt;/p&gt;

&lt;p&gt;Search for answers and you get enterprise stacks: Google's A2A, RabbitMQ, Kafka. All built for data centers. My need is much smaller: two home computers, both behind NAT, no public IP, no server — agents passing messages and tasks to each other. Nobody builds for that.&lt;/p&gt;

&lt;p&gt;So I built &lt;strong&gt;ACP-lite (Agent Connect Personal)&lt;/strong&gt;: a minimal implementation of cross-host agent interconnect. v0.7.0 just shipped, MIT licensed.&lt;/p&gt;

&lt;h2&gt;
  
  
  The architecture: one post office per machine
&lt;/h2&gt;

&lt;p&gt;The whole idea in one sentence: &lt;strong&gt;each machine runs a "post office"; agents only ever read and write local files&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Send: agent A writes a letter (JSON) to its local outbox&lt;/li&gt;
&lt;li&gt;Transport: Syncthing syncs the file to the other machine — battle-tested decentralized file sync, no need to reinvent it&lt;/li&gt;
&lt;li&gt;Receive: agent B picks it up from its local inbox&lt;/li&gt;
&lt;li&gt;Trust: Ed25519-signed envelopes + out-of-band fingerprint verification + a hash-chained audit log. Tampered letters are rejected outright.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No central server, no persistent network connections. The &lt;code&gt;watch&lt;/code&gt; process only moves files — it never calls a model, so idling costs zero tokens. That matters for personal use: run it for a month, pay nothing extra.&lt;/p&gt;

&lt;p&gt;How it relates to the big names: A2A is the enterprise-grade full protocol; ACP-lite is the personal minimal implementation — different leagues. MCP connects agents to &lt;em&gt;tools&lt;/em&gt;; ACP-lite connects agents to &lt;em&gt;agents&lt;/em&gt;. Complementary.&lt;/p&gt;

&lt;h2&gt;
  
  
  New in v0.7.0: cross-host wake-up (the SSH doorbell)
&lt;/h2&gt;

&lt;p&gt;A mailbox alone isn't enough: the letter arrives, but the agent on the other side is asleep. v0.7.0 adds the "doorbell" — SSH wake-up.&lt;/p&gt;

&lt;p&gt;The architecture rule is fixed: &lt;strong&gt;SSH is the doorbell, ACP is the mailbox; the doorbell carries only a pointer, the letter body always travels via ACP&lt;/strong&gt;. The wake-up command passes just the absolute path of the received letter file; the prompt goes through a file + stdin (measured ~20x fewer tokens than passing it as a CLI argument, and no shell-mangled encoding).&lt;/p&gt;

&lt;p&gt;Last week's dual-channel integration test, timeline included:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Desktop rebooted; sshd / Syncthing / watch all came back up with zero manual intervention, IP unchanged&lt;/li&gt;
&lt;li&gt;Netbook delivered 2 letters; 18 seconds later the doorbell rang; both wake scripts pulled up Codex and DSH within a second&lt;/li&gt;
&lt;li&gt;Codex first moved in 6 seconds, DSH in 9; each wrote artifacts + broadcast + signed replies; the audit chain verified end-to-end&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The completion criteria are threefold, all required: artifact on disk, longer audit chain, signed receipt. Don't trust exit code 0 alone — an agent woken in read-only sandbox mode will happily "talk about doing the work" and exit 0 with nothing done.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pitfalls worth knowing (four favorites)
&lt;/h2&gt;

&lt;p&gt;All earned the hard way; the README has the full list (Q5–Q13). Four highlights:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. &lt;code&gt;ALL_PROXY&lt;/code&gt; hijacks everything.&lt;/strong&gt; Since Syncthing 2.1, it honors only &lt;code&gt;ALL_PROXY&lt;/code&gt; and ignores &lt;code&gt;NO_PROXY&lt;/code&gt; — a local Clash setup silently captured all dials, and everything looked correct but never connected. Debugging order for a new machine: check proxy env vars first, suspect the firewall second.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Never pass non-ASCII text as CLI arguments.&lt;/strong&gt; Windows shells read UTF-8 as GBK and you get mojibake. Prompts always go through a file + stdin.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Don't omit &lt;code&gt;--root&lt;/code&gt;.&lt;/strong&gt; Omit it and the exit code is still 0 — looking like success — while the letter lands in the machine-private directory where nobody else can see it. The criterion is always "a file really exists in outbox/", never the exit code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. The wake-up sandbox level decides whether it works or performs.&lt;/strong&gt; Codex wake-ups need &lt;code&gt;workspace-write&lt;/code&gt;; DSH wake-ups need &lt;code&gt;DSH_PERMISSION_MODE=danger-full-access&lt;/code&gt; baked into the script. Wrong level, and the agent performs diligence theater.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to use it
&lt;/h2&gt;

&lt;p&gt;Be clear about this: it's not SaaS, there's no one-click installer. The one correct usage — &lt;strong&gt;hand the repo link to your coding agent and let it install from the README&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/furoute/acp-lite" rel="noopener noreferrer"&gt;https://github.com/furoute/acp-lite&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The README is step-by-step: step one do this, step two do that, each step only "what to do + commands to copy verbatim". After reading it, an agent can set the same thing up on your own two machines. There's also an &lt;code&gt;llms.txt&lt;/code&gt; if you'd rather feed the whole thing to an LLM at once.&lt;/p&gt;

&lt;h2&gt;
  
  
  Honest boundaries
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A 0-star personal project, only recently made public — don't expect plug-and-play&lt;/li&gt;
&lt;li&gt;You'll configure Syncthing and SSH yourself; hands-on ability is a prerequisite&lt;/li&gt;
&lt;li&gt;Built for the personal multi-machine scenario; for enterprise needs, use A2A directly&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why I built this
&lt;/h2&gt;

&lt;p&gt;The motivation is simple: big-vendor solutions are all built for enterprises; nobody builds cross-machine agent interconnect for individual users. ACP-lite is one minimal answer for the "a few of my own computers, a few of my own agents" scenario.&lt;/p&gt;

&lt;p&gt;Try it out — issues go directly to the repo. For this project, the first issue from a stranger matters more than a hundred stars.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>opensource</category>
      <category>multiagent</category>
    </item>
  </channel>
</rss>
