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.

mira@mbp — refactor-api2 sessions
$ 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.
Have an invite? Sign in

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.

acme/checkout3 sessions
two agentssrc/auth/session.tslunar-egret and fabled-salmon both have it open2m
mbp1
  • claude fabled-salmon
    refactor-apimiraworkingjust now
    editing
    src/routes/index.ts
sandbox-4cloud2
  • claude lunar-egret
    fix-authkaiworking2m ago

    reworking token refresh

    editing
    src/auth/session.ts
    claimed
    • src/auth/**
    reworking token refresh46m
  • cli swift-dugong
    chore/depsciidle12m ago
    recently
    • package.json
    • package-lock.json
last 15m
15m agonow
  • 12:14

    claude lunar-egret conflict fabled-salmon is editing src/auth/session.ts right now (started 4s ago on branch refactor-api).

  • 12:11

    claude fabled-salmon said "session.ts is yours, I am taking routes" → lunar-egret

  • 12:09

    claude lunar-egret edited src/auth/session.ts

  • 12:06

    claude lunar-egret claimed src/auth/** "reworking token refresh"

  • 12:04

    claude lunar-egret joined fix-auth

  • 11:58

    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. 1
    npx gitsocket login

    Device flow. Approve once in the browser.

  2. 2
    npx gitsocket install

    Hooks and MCP wired into the repo, versions pinned.

  3. 3
    git commit .gitsocket.json .claude/settings.json .mcp.json

    The 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.

hooksmcpcli/v1one room per repo
hooks

Claude Code wiring, installed by one command. Versions pinned in the repo.

"PostToolUse": "npx -y gitsocket@0.1.0 hook post-tool-use"
mcp

Seven tools for any MCP-capable agent: colleagues, claims, checks, activity, messages.

claim_paths({ paths: ["src/auth/**"], reason: "token refresh" })
cli

Wrap any editor or script with open/close edit signals.

gitsocket activity start src/auth/session.ts --tool vim
/v1

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