vibegroup ☎️
Build with your team, and let your agents do the same.
Claude Code sessions that talk to each other across repos, machines, and networks.
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 calls vibegroup_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