skip to content
agentmash get started

how it works

a made-up team of four shares one repository here, and the room shows who is in which file and what each agent is told before it writes.

bob's agent, just nowreading

before its edit to src/models/user.ts

it re-read the file, left deletedAt as alice left it, and said so in its reply.

[AgentMash: ACTIVE COLLISION] alice's agent is working in src/models/user.ts — last write 2 min ago on your branch (main), while working on 'add soft deletes to the user model' (+12/-3 lines, touching deletedAt). Their write is already in your working tree, so whatever you read from this file earlier is out of date. Re-read src/models/user.ts now and rebuild this edit against what is actually there: a stale old_string either fails to match or quietly reverts their change. Leave deletedAt named and shaped as alice left it — that is what they just changed. If your task genuinely needs those same lines, change them and say so in your reply, so the overlap is visible.

carol's agent, 52 min ago

asked who else was working in the repo

Nobody else has been active in "team repo" in the last 60 min. The coordination server answered normally, so this is a real "no one", not a failure to reach it.

what happens in the room.

three moments, each shown as the string the agent actually reads.

  1. it reads before it writes.

    an edit into a file someone else just changed gets one of five levels, and only the loudest one says someone is in there with you.

    the five levels, in the docs →
    src/models/2 here
    user.tsmain · 2 min ago
    alice✎+12/-3 lines, touching deletedAt
    bobleft deletedAt as alice left it
    1. ACTIVE COLLISIONsame file, in your tree, and they're still around. the string above.
    2. STALE READthe same, but they've gone. the same re-read.
    3. PARALLEL EDITsame file, another branch. keep the edit additive.
    4. RECENT EDITin your tree, older than five minutes.
    5. NEARBY EDITsame directory. one sentence, for awareness.
  2. dibs, with an expiry.

    at the start of a bigger task an agent says which paths it's taking, and learns before it writes whether someone already has part of them.

    claims, in the docs →
    src/routes/1 here · 2 claims
    handlers.ts4 min ago
    alisher⚑

    src/routes · rename every route handler · 116 min left

    login.tsnot written yet
    dana⚑

    src/routes/login.ts, src/routes · add a login endpoint · 120 min left

    Claimed src/routes/login.ts, src/routes for "add a login endpoint" as dana@example.com
    (id claim_x9…, 120 min).
    
    OVERLAP — someone else has already claimed part of this:
    - alisher@example.com has src/routes for "rename every route handler" (claimed 4 min ago)
    
    Your claim stands, but split the work before you write anything: take the files and symbols
    they have not claimed, or build on top of what they land rather than changing it. …
  3. collided anyway? you're told before it lands.

    when a session finishes having changed a file a teammate also changed, the person at the keyboard is told once, with whose change it meets. nothing is stopped, merged or pushed: a person decides how the two come together.

    reconciliation, in the docs →
    src/models/2 here
    user.tsmain · 9 min ago
    alice+12/-3 lines, touching User, deletedAt
    bobtold bob: alice changed it too
    [AgentMash: OVERLAP] A file this session changed was also changed by alice@example.com,
    so a person decides how the two changes come together: nothing was stopped, merged or
    committed for either side.
    • src/models/user.ts — also changed by alice@example.com.
      alice@example.com: last write 9 min ago on branch main — you are on feat/login
      while working on 'soft deletes' (+12/-3 lines, touching User, deletedAt).
      You both touched User — that is where the two changes are most likely to meet.
      Your side: 'add a login endpoint' (+8/-1 lines).
    Look at both changes with alice@example.com before either one lands.

connect it once. each developer signs in once.

nothing is committed to your repository. every developer's coding agents pick up each repository their team has connected, from their next prompt.

setup, in the docs →
  1. your repository, oncesign in with github and pick it. anyone who can push to it can.agentmash.dev/install
  2. every developer, oncesigns in with github in the browser it opens, and connects every coding agent it finds. that is their whole setup, for every repository.npx agentmash login
  3. thenrestart the agent (codex first asks you to approve agentmash's hooks, in /hooks). prompts and edits now show in the live room. before an agent edits a file a teammate's agent just changed, it is told who, what and why, and it gets a short heads-up, at most every 10 minutes, when a teammate's agent is on its branch or its files.