<?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: Harry Yan</title>
    <description>The latest articles on DEV Community by Harry Yan (@curious1008).</description>
    <link>https://dev.to/curious1008</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%2F3842704%2F66d7a574-49c2-43c0-882e-30da686ad6a0.jpeg</url>
      <title>DEV Community: Harry Yan</title>
      <link>https://dev.to/curious1008</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/curious1008"/>
    <language>en</language>
    <item>
      <title>I got bored vibe coding alone, so I built a terminal chat to do it with my team</title>
      <dc:creator>Harry Yan</dc:creator>
      <pubDate>Wed, 25 Mar 2026 07:26:18 +0000</pubDate>
      <link>https://dev.to/curious1008/i-got-bored-vibe-coding-alone-so-i-built-a-terminal-chat-to-do-it-with-my-team-okh</link>
      <guid>https://dev.to/curious1008/i-got-bored-vibe-coding-alone-so-i-built-a-terminal-chat-to-do-it-with-my-team-okh</guid>
      <description>&lt;p&gt;I can't write code. Everything I've shipped has been through vibe coding — I describe what I want, my AI agent builds it. But doing it alone gets old fast.&lt;/p&gt;

&lt;p&gt;So I got my friend Halsen involved. Problem: I use Claude Code, he uses Codex. We started working on the same repo and immediately realized there's no good way to coordinate without leaving the terminal.&lt;/p&gt;

&lt;p&gt;We tried Discord. Lasted about two hours before the constant window switching drove us crazy. The whole point of vibe coding is staying in flow — alt-tabbing to a chat app every 30 seconds defeats that.&lt;/p&gt;

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

&lt;p&gt;A chat that lives inside the terminal. Right next to the AI agent pane. And the agents should be able to read it too, so when I say &lt;a class="mentioned-user" href="https://dev.to/claude"&gt;@claude&lt;/a&gt; do something, it actually knows what the team has been discussing.&lt;/p&gt;

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

&lt;p&gt;SyncVibe. Terminal chat on the left, AI agent on the right, tmux split. Chat syncs between machines via WebSocket. Agents connect through MCP with read_chat and send_chat tools.&lt;/p&gt;

&lt;p&gt;The part that took the most time wasn't the chat — it was making agent messages work across machines. When Halsen's Claude sends "Done — pushed the fix", I need to see that on my screen too. The agent&lt;br&gt;
writes to a local file, a file watcher picks it up, broadcasts via WebSocket, the other side receives it and writes to their local file. Sounds simple but getting the dedup right (so messages don't loop infinitely) took a few days of debugging.&lt;/p&gt;

&lt;p&gt;The other tricky bit: the relay stamps every message with the sender's identity to prevent spoofing. But agent messages need to keep the agent's name, not the human's name. Ended up building a verified agent ID system on the relay side.&lt;/p&gt;

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

&lt;p&gt;Static context files (CLAUDE.md, AGENTS.md) help agents understand the codebase, but they don't help with what's happening right now. The live conversation turned out to be the most important context for preventing two agents from stepping on each other's work.&lt;/p&gt;

&lt;h2&gt;
  
  
  Install
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
bash
  curl -fsSL https://syncvibe.online/install.sh | sh

Rust, MIT, macOS + Linux. Supports Claude Code, Codex, and Gemini CLI.

https://github.com/Curious1008/syncvibe

If you vibe code with other people, curious how you handle coordination today.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

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