Skip to content

Curious1008/syncvibe

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

129 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

SyncVibe

Terminal-native collaboration for vibe coding teams. Zero AI costs.

License: MIT Platform Website Discord

SyncVibe connects teammates and their AI agents (Claude Code, Codex, Gemini CLI, or any MCP-compatible agent) in a shared terminal chat room β€” real-time coordination without a single LLM API call.

Watch the demo β€” two developers collaborating with their AI agents (Claude + Codex) in real time.


Install

curl -fsSL https://syncvibe.online/install.sh | sh

Or via Homebrew (macOS):

brew tap Curious1008/syncvibe
brew install syncvibe

Supports macOS (Apple Silicon + Intel) and Linux (x86_64, aarch64).


Quick Start

1. Create a room

syncvibe

Interactive onboarding β€” pick your name, choose an AI agent (Claude, Codex, or Gemini), and create a room.

2. Invite your team

Type /invite in the TUI β€” a short code like HKPT-3NWV is copied to your clipboard. Send it to teammates.

3. Teammate joins

syncvibe connect HKPT-3NWV

Chat syncs in real time. If the room has a linked repo, the code auto-clones on connect. The AI agent auto-configures via MCP β€” no manual setup needed.


How It Works

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Split Terminal                                                 β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚  SyncVibe Chat (30%)β”‚    β”‚  AI Agent β€” Claude/Codex/Geminiβ”‚  β”‚
β”‚  β”‚                     β”‚    β”‚                                β”‚  β”‚
β”‚  β”‚  Alice: red theme?  β”‚    β”‚  Reading team chat via MCP...  β”‚  β”‚
β”‚  β”‚  Harry: @codex make │───►│  ⚑ Task: make a calculator    β”‚  β”‚
β”‚  β”‚    a calculator     β”‚    β”‚  Creating index.html...        β”‚  β”‚
β”‚  β”‚  Codex: Done βœ“      │◄───│  Done β€” reporting to chat      β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”‚                    Ctrl+G to switch                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Data flow:

  • Human ↔ Human: TUI β†’ WebSocket relay β†’ other TUI
  • Human β†’ Agent: @codex message β†’ agent reads via MCP read_chat
  • Agent β†’ Human: agent calls MCP send_chat β†’ appears in chat β†’ broadcasts to all teammates

All state lives locally in .syncvibe/. The relay only handles real-time sync β€” no messages are stored server-side.


Features

Real-time Chat

  • Live presence indicators β€” see who's online
  • @mention with tab completion and bell notifications
  • Image sharing (drag file paths into chat)
  • Message grouping, chat history with scroll-back
  • Mouse scroll, PageUp/PageDown, and "↓ N new messages" unread indicator

AI Agent Integration

  • Pick Claude Code, Codex, or Gemini from a menu β€” SyncVibe auto-configures .mcp.json (Claude), .codex/config.toml (Codex), and .gemini/settings.json (Gemini)
  • MCP tools β€” read_chat with smart incremental filtering, session scoping, and digest offloading; send_chat for agent-to-human messages
  • @agent β€” mention your AI in chat to assign tasks; agent auto-reads chat for full context
  • Cross-machine agent tasks β€” @claude from a remote teammate triggers your local agent automatically (30s debounce)
  • Agent messages broadcast β€” AI agent responses sync to all teammates in real time via WebSocket
  • Each teammate picks their own agent; all agents share the same chat context

Screen Sharing

  • /share β€” toggle sharing your agent pane with teammates
  • /watch <name> β€” view a teammate's agent screen in real time
  • Delta-encoded frames for efficient bandwidth

Git Remote Sync

  • Create a room β€” SyncVibe auto-detects your git remote, or prompts you to paste/create one (optional, can skip)
  • Teammate joins β€” repo auto-clones on syncvibe connect. One step: join room + get code
  • Agents auto-push β€” CLAUDE.md/AGENTS.md instruct agents to commit & push after completing tasks
  • /remote β€” set or show git remote URL at any time
  • /collab β€” open GitHub collaborator settings to add teammates
  • No tokens or PATs needed β€” authentication uses your existing git credentials

Invite Codes

  • Short codes (HKPT-3NWV) auto-copied to clipboard
  • Paste to join β€” one step, no URLs or config files
  • Clipboard auto-detection on launch

Split Terminal

  • Auto-creates side-by-side layout: Chat (30%) | AI Agent (70%)
  • Ctrl+G to switch between panes
  • Version display and styled status bar
  • /chats to switch between room sessions

Zero AI Costs

  • Pure coordination layer β€” no LLM API calls, no token costs
  • All AI costs stay with whatever agent each person already uses

Commands

CLI

Command Description
syncvibe Launch β€” create/join rooms, open TUI
syncvibe invite Show invite code for current room
syncvibe connect <code> Join a room with an invite code
syncvibe profile Edit display name and color
syncvibe chat "<msg>" Send a message without opening the TUI
syncvibe auth Link CLI to your web account at syncvibe.online
syncvibe status Show current room info
syncvibe switch Switch between rooms
syncvibe leave Leave current room
syncvibe completions Generate shell completions (bash/zsh/fish)

TUI Slash Commands

Command Alias Description
/help /? Show all commands
/invite /i Copy invite code
/new /n Create a new room
/join /j Join with invite code
/chats Switch between rooms
/share Toggle agent screen sharing
/watch <name> Watch a teammate's screen
/name <n> Change display name
/color <#hex> Change color
/remote Set or show git remote
/collab Manage repo collaborators
/mute /m Toggle @mention bell
/clear Clear chat view
/rc Reconnect to relay
/leave Leave room
/quit /q Exit

Keyboard Shortcuts

Key Action
Ctrl+G Switch Chat ↔ Agent pane
Tab Autocomplete @mentions and commands
↑ / ↓ Select messages (quote, open images)
Enter Send message / quote selected / open image
PageUp / PageDown Scroll chat history
Mouse scroll Scroll chat panel
Esc Deselect message, return to bottom

MCP Integration

Model Context Protocol (MCP) lets AI agents interact with external tools. SyncVibe uses MCP to give agents access to the team chat.

Room setup auto-generates:

File Purpose
.mcp.json MCP server config for Claude Code
.codex/config.toml MCP server config for Codex CLI
.gemini/settings.json MCP server config for Gemini CLI
CLAUDE.md Instructs Claude to use chat tools
AGENTS.md Instructs Codex/Gemini/other agents to use chat tools
MCP Tool Description
read_chat Incremental read with session scoping, time filtering, @agent task extraction, and digest offloading
send_chat Send a message to the shared chat as the AI agent

Local-First Architecture

All room state lives in .syncvibe/ inside your project:

.syncvibe/
β”œβ”€β”€ room.json          # Room identity (room_id, secret, relay_url, git_remote)
β”œβ”€β”€ chat-log.jsonl     # Append-only chat, one JSON per line
β”œβ”€β”€ chat-digest.md     # Auto-generated digest for large conversations
└── images/            # Shared images (UUID-named)

.syncvibe/ is gitignored. The WebSocket relay provides real-time sync only β€” no messages stored server-side.


Development

git clone https://github.com/Curious1008/syncvibe.git
cd syncvibe
cargo build --release
./target/release/syncvibe

Requirements

  • Rust 1.75+
  • tmux 3.0+ (auto-installed on first run if missing)

Tests

cargo test                    # Unit + integration tests (88 tests)
cargo test -- --ignored       # Include relay deployment tests

Shell Completions

syncvibe completions bash > ~/.local/share/bash-completion/completions/syncvibe
syncvibe completions zsh  > ~/.zfunc/_syncvibe
syncvibe completions fish > ~/.config/fish/completions/syncvibe.fish

Project Structure

syncvibe/
β”œβ”€β”€ crates/
β”‚   β”œβ”€β”€ syncvibe-cli/              # TUI binary
β”‚   β”‚   └── src/
β”‚   β”‚       β”œβ”€β”€ cli.rs             # Command definitions (Clap)
β”‚   β”‚       β”œβ”€β”€ onboarding.rs      # Interactive setup wizard
β”‚   β”‚       β”œβ”€β”€ auth.rs            # Web account linking
β”‚   β”‚       β”œβ”€β”€ config.rs          # Configuration management
β”‚   β”‚       β”œβ”€β”€ invite.rs          # Invite code logic
β”‚   β”‚       β”œβ”€β”€ agents.rs          # AI agent configuration
β”‚   β”‚       β”œβ”€β”€ sync.rs            # Chat sync engine
β”‚   β”‚       β”œβ”€β”€ app.rs             # Event loop + slash commands
β”‚   β”‚       β”œβ”€β”€ tui.rs             # Terminal UI bootstrap
β”‚   β”‚       β”œβ”€β”€ picker.rs          # Room picker
β”‚   β”‚       β”œβ”€β”€ init.rs            # Room init (MCP, CLAUDE.md, .codex/, .gemini/)
β”‚   β”‚       β”œβ”€β”€ tmux.rs            # tmux session management
β”‚   β”‚       β”œβ”€β”€ git/               # Git integration
β”‚   β”‚       β”œβ”€β”€ mcp/               # MCP server: read_chat, send_chat
β”‚   β”‚       β”œβ”€β”€ network/           # WebSocket client
β”‚   β”‚       └── components/        # TUI rendering (ratatui)
β”‚   β”‚
β”‚   └── syncvibe-core/             # Shared library
β”‚       └── src/
β”‚           β”œβ”€β”€ protocol.rs        # WebSocket message types
β”‚           β”œβ”€β”€ storage.rs         # Atomic file I/O
β”‚           └── models/            # Chat, room, user types
β”‚
└── install.sh                     # One-line installer

Security

  • Install script verifies binary integrity via SHA256 checksums
  • GitHub Actions workflows are pinned to commit SHAs
  • cargo audit runs in CI to catch known vulnerabilities
  • TLS enforced β€” all relay connections use WSS; plaintext rejected
  • No message storage β€” the relay forwards chat, screen shares, and MCP traffic in real time; nothing is logged or persisted
  • Room secrets authenticate your connection over TLS β€” stored server-side only for reconnection support
  • Invite codes expire automatically after 7 days
  • Local files use 0600 permissions (owner-only read/write)

For full details, see Data & Privacy.


Roadmap

What's coming next (no ETAs β€” shipped when ready):

  • End-to-end encryption β€” message content encrypted client-side so the relay can't read it
  • Windows support β€” native binary + PowerShell/Windows Terminal integration
  • Voice chat β€” spatial audio channels inside the terminal session
  • Managed relay for teams β€” dedicated relay instances with custom domains and SLA
  • File sharing β€” send code snippets, patches, and files through chat
  • Persistent rooms β€” rejoin rooms across machines with cloud-synced state
  • Git conflict resolution β€” real-time merge conflict detection and assisted resolution
  • Plugin system β€” custom slash commands and integrations via user scripts

Have an idea? Open an issue or join the Discord.


Contributing

Contributions welcome!

  1. Fork the repo
  2. Create a feature branch (git checkout -b feature/amazing)
  3. Commit your changes
  4. Open a Pull Request

License

MIT License. See LICENSE for details.

About

Terminal-native collaboration tool for multi-person vibe coding

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors