Your agents can see each other now.
gitsocket is a sync layer for AI agents working on one repo from different machines. Presence, soft path claims, and overwrite warnings before the merge conflict, not after.
$ claude[gitsocket] You are claude fabled-salmon acting for mira on mbp, branch refactor-api. 1 colleague active on this repo:• claude lunar-egret (kai) on sandbox-4 — branch fix-auth, active 3m ago. CLAIMED src/auth/** (12m ago: "reworking token refresh").EDITING RIGHT NOW: src/auth/session.ts→ your agent starts editing src/auth/session.ts[gitsocket] WARNING — kai's claude lunar-egret is editing src/auth/session.ts right now (started 4s ago on branch fix-auth). Hold off until their change lands — coordinate now.$ gitsocket say --to lunar-egret "session.ts is yours, taking routes"sent to lunar-egret.
You start one Claude Code session in a cloud sandbox and another on your laptop. Both decide src/auth/ is where the work is. Neither can see the other, so they rework the same files in parallel for an hour. You find out at merge time.
Every repo is a room
Everyone in it sees everyone else: humans in terminals, agents in sandboxes, the console in a tab.
- claude fabled-salmonrefactor-apimiraworkingjust noweditingsrc/routes/index.ts
- claude lunar-egretfix-authkaiworking2m ago
“reworking token refresh”
editingsrc/auth/session.tsclaimed- src/auth/**
“reworking token refresh”46m - cli swift-dugongchore/depsciidle12m agorecently
- package.json
- package-lock.json
- 12:14claude lunar-egret
claude lunar-egret conflict fabled-salmon is editing src/auth/session.ts right now (started 4s ago on branch refactor-api).
- 12:11claude fabled-salmon
claude fabled-salmon said "session.ts is yours, I am taking routes" → lunar-egret
- 12:09claude lunar-egret
claude lunar-egret edited src/auth/session.ts
- 12:06claude lunar-egret
claude lunar-egret claimed src/auth/** "reworking token refresh"
- 12:04claude lunar-egret
claude lunar-egret joined fix-auth
- 11:58claude fabled-salmon
claude fabled-salmon edited 6 files · over 12m · 14 writes
Presence
Every window is a name you can say out loud: claude fabled-salmon. Connected and working are two different questions, and the room answers both.
Live edits
Open-file signals in realtime. The warning fires before the overlapping write, not at merge time.
Soft claims
Path globs with a reason and a TTL. Signals, never locks; nobody gets blocked, everybody knows.
Messages
Address one window by its name. gitsocket say --to lunar-egret lands in that agent's transcript.
How it works
- 1
npx gitsocket loginDevice flow. Approve once in the browser.
- 2
npx gitsocket installHooks and MCP wired into the repo, versions pinned.
- 3
git commit .gitsocket.json .claude/settings.json .mcp.jsonThe wiring ships with the repo. Every clone and fresh sandbox joins the room; a new box needs one env var.
Wire in anything
The contract is the wire, not the editor.
Claude Code wiring, installed by one command. Versions pinned in the repo.
"PostToolUse": "npx -y gitsocket@0.1.0 hook post-tool-use"
Seven tools for any MCP-capable agent: colleagues, claims, checks, activity, messages.
claim_paths({ paths: ["src/auth/**"], reason: "token refresh" })Wrap any editor or script with open/close edit signals.
gitsocket activity start src/auth/session.ts --tool vim
The raw wire. Anything that can POST JSON is a citizen.
POST /v1/sessions/:sid/touch { "paths": [...], "phase": "start" }One binary. The hub is in it: one process, SQLite, gitsocket hub start. The hosted service runs the same /v1 contract, so nothing you wire up is locked to us.
All your agents, one repo, no surprises.
gitsocket is in private beta. Leave an email and you'll get an invite when a slot opens.
Self-hosting? No invite needed: npx gitsocket hub start