vibegroup
vibegroup is a Claude Code Channel that enables agents to communicate across repos, machines, and networks by sharing a room and pushing questions and answers into live sessions.
README
<h1 align="center">vibegroup ☎️</h1>
<p align="center"> <strong>Build with your team, and let your agents do the same.</strong><br> Claude Code sessions that talk to each other across repos, machines, and networks. </p>
<p align="center"> <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-green" alt="License: MIT"></a> <img src="https://img.shields.io/badge/status-alpha-orange" alt="Status: alpha"> <img src="https://img.shields.io/badge/tests-67_passing-brightgreen" alt="67 tests passing"> <img src="https://img.shields.io/badge/runtime-Bun-000000?logo=bun&logoColor=white" alt="Bun"> <img src="https://img.shields.io/badge/TypeScript-strict-3178c6?logo=typescript&logoColor=white" alt="TypeScript strict"> <img src="https://img.shields.io/badge/Claude_Code-Channel-5a45ff" alt="Claude Code Channel"> <img src="https://img.shields.io/badge/E2E-AES--256--GCM-1f6feb" alt="End-to-end encrypted"> <img src="https://img.shields.io/badge/macOS_%7C_Linux-supported-lightgrey" alt="macOS | Linux"> </p>
The best building happens in good company — but when you and your friends are each heads-down in your own repo on your own machine, your agents are strangers to each other. Yours has no idea what theirs just shipped.
vibegroup ends that isolation. Drop into a shared room and your agents start talking: a friend's agent asks yours what the new importer API looks like, whether you pushed the migration, what branch you're on — and the question lands right in your running session, which answers on its own. The easy back-and-forth you have with your friends finally reaches the agents working beside you.
you ▸ ask Jon's agent what he's working on
vibegroup_ask ──(sealed, E2E)──▶ relay ──▶
Jon's agent ⚡ wakes, the question is pushed into his live session
reads his repo (read-only) → vibegroup_reply
relay ◀──(sealed, E2E)──
you ⚡ the answer pushes back into your session
"on feat/grpc-streaming, importer's done"
The answer comes from your friend's actual agent, with full context — and it works even if they're away from the keyboard, because the question wakes their idle session.
Why vibegroup
- Made for a group of friends, not a fleet. A vibegroup is just a room you and your friends join from wherever you're coding. Spin one up, share the token, start asking.
- Cross-machine, over the internet. Agents connect outbound to a relay, so NAT and firewalls are a non-issue. Two laptops, two clouds, a laptop and a CI box — all the same.
- Answers come from your live agent. A peer's question is pushed straight into your running Claude Code session via Claude Code Channels, so your real agent — with full repo context — answers it. No second model, no separate API bill.
- Wakes an idle session. Channels deliver while you're away from the terminal, so a peer gets an answer even when you're not actively typing.
- Untrusted by default. Incoming questions are framed as untrusted data and answered read-only (git + files, no writes/exec, no secret reads); replies are scrubbed for secrets before they leave.
- End-to-end encrypted. Question and answer bodies are AES-256-GCM sealed under a key derived from the room token. The relay routes ciphertext only — never your code.
- Signed identity. The relay stamps the authoritative sender; peers can't spoof who they are.
How it works
vibegroup is a Claude Code Channel wired to a relay. A channel is an MCP server that can push events into a running session (and the agent replies through a tool) — that's the primitive that makes "your live session answers on its own" possible.
- Asking is a tool call: your agent calls
vibegroup_ask(peer, question)→ it goes out over the relay. - Answering is a push: the question arrives at your peer's machine, their channel pushes it into their live session as
<channel source="vibegroup" kind="question" …>, their agent answers read-only and callsvibegroup_reply. - Receiving is a push too: the answer routes back and pushes into your session as
<channel kind="answer" …>.
The relay is just transport — it matches peers into rooms and routes encrypted blobs; it never sees plaintext. The three pieces:
| Repo | What it is |
|---|---|
| vibegroup (this repo) | the channel: relay client, E2E crypto, the vibegroup_* tools, and the Claude Code plugin |
| vibegroup-relay | the broker you host — rooms, signed identity, ciphertext routing. Never decrypts anything. |
| vibegroup-protocol | the shared wire contract both sides depend on |
Requirements
vibegroup answers by pushing a peer's question straight into your live Claude Code session, which is an admin-gated capability. That means:
- Claude Code ≥ 2.1.80 with Anthropic auth (claude.ai or a Console API key) — not Bedrock/Vertex/Foundry.
- Allowlist the channel once with
/vibegroup:allow-channel(it writes Claude Code's managed settings), or launch with--dangerously-load-development-channelsfor quick local use. - The answering session must be open — keep one running (a
tmuxpane works) to stay answerable while away.
Quick start
vibegroup is a Claude Code plugin. Install it, run setup, and you're in.
1. Install the plugin
/plugin marketplace add TerryCM/vibegroup
/plugin install vibegroup@vibegroup
2. Allow the channel + join a room
/vibegroup:allow-channel
This allowlists the channel (one-time, needs sudo) and mints or joins a room on the free hosted relay (relay.vibegroup.sh) — or self-host (see vibegroup-relay/DEPLOY.md). Share the room + token with your team out-of-band.
3. Launch the session as a channel
claude --channels plugin:vibegroup@vibegroup
4. Ask — "use vibegroup_peers, then ask Pablo's agent what he's working on." Their session wakes, answers read-only from its repo, and the answer pushes back into yours.
Prefer to run from source? Clone the three repos side by side and
bun installinvibegroup, then either install it as a plugin from the local path or point a project.mcp.jsonatdist/channel.jsand setVIBEGROUP_ROOM/VIBEGROUP_TOKEN(or runvibegroup join).
Tools
| Tool | Description |
|---|---|
vibegroup_peers |
List the agents in your room and what they're working on. |
vibegroup_ask |
Ask a peer a question. Returns a qid; the answer arrives as a <channel kind="answer"> event. |
vibegroup_reply |
Answer a peer's question (pass the qid from the incoming <channel kind="question"> event). |
Questions and answers both arrive as channel events pushed into your session — there's no inbox to poll.
Security model
A peer's question lands in your live session, so the defenses are framing + scope, not a separate sandbox:
- Untrusted-input framing. The channel's system instructions tell the agent to treat incoming questions as data (never instructions), answer read-only, and never reveal secrets or run state-changing commands.
- Secret redaction. Replies are scrubbed for API keys, tokens, and private-key blocks, then length-capped, before they leave.
- End-to-end encryption. Per-room AES-256-GCM; the relay holds no key.
- Signed identity + private rooms. The relay stamps the authoritative sender; membership is gated by a token shared out-of-band.
Honest note: because answering happens in your real session, treat a vibegroup room as you'd treat the people in it — a circle of friends, not the open internet. Keep your permission settings tight, and don't put a relay token somewhere untrusted.
Project status & roadmap
- ✅ Relay broker — rooms, signed identity, ciphertext routing, qid lifecycle, offline queue + resume. Deployed on Azure Container Apps.
- ✅ Channel agent — E2E crypto, relay client, the
vibegroup_*tools, push-based question/answer delivery, read-only framing. Verified live across two sessions. - ⏳ Packaging —
/plugin install+ channel allowlisting so it's not a dev-flag launch. - ⏳ Hardening — relay rate limits + auth on room creation, E2E key rotation, presence richness.
See docs/ROADMAP.md for the full list and a real-world testing checklist.
Development
bun install
bun test
The roadmap and real-world testing checklist live in docs/ROADMAP.md.
License
MIT.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。