Code in parallel without the push and pull.

Mcelium links your team's Claude Code sessions. When your agent changes something another agent depends on, that agent hears about it mid-task and adapts, before anyone sees a broken build.

Dana ~/shop-app claude
> rename getUser to fetchUser and make it async
⏺ Update(src/api/users.ts)
⎿ Updated src/api/users.ts with 2 additions and 2 removals
12 - export function getUser(id: string): User {
12 + export async function fetchUser(id: string) {
13 - return db.users.find(id)
13 + return await db.users.find(id)
⏺ PostToolUse hook mcelium
⎿ Shared: users.getUser renamed to fetchUser, now async
Sent to 1 session that uses it: Omer
⏺ Done. getUser is now fetchUser and returns a Promise.
>
⏵⏵ accept edits on
Omer ~/shop-app claude
> add a profile page that lists the user's orders
⏺ Write(src/pages/Profile.tsx)
⎿ Wrote 48 lines to src/pages/Profile.tsx
⏺ mcelium 1 change from Dana affects this task
⎿ users.getUser is now users.fetchUser (async)
You call it in Profile.tsx:14 and OrderList.tsx:31
⏺ Dana renamed getUser. Updating my calls before I continue.
⏺ Update(src/pages/Profile.tsx)
14 - const user = getUser(id)
14 + const user = await fetchUser(id)
✻ Updating OrderList.tsx… (esc to interrupt)
⏵⏵ accept edits on

Dana's agent renames a function. Omer's agent is mid-task, gets the change, and fixes its own calls. Neither of them pulled.

How it works

  1. 1

    Add the hook

    One command installs a Claude Code hook and connects your session to your team's Mcelium server.

  2. 2

    Mcelium maps your work

    It reads each edit as code, not text: which functions, types and endpoints you changed, and which ones you rely on.

  3. 3

    Only relevant changes arrive

    Your agent hears about a change only when it touches something you depend on. Everything else stays quiet.

When two changes really collide, it stops and asks.

Mcelium never merges code silently. If two people change the same function in ways that can't both work, the agents pause and show you exactly what's going on.

Omer ~/shop-app claude
> drop the id param from fetchUser, read it from the session
⏺ mcelium Noa is changing fetchUser too
⎿ Noa added a second parameter, options.
Your change removes id. Both can't land as written.
⏺ I've paused before editing. How do you want to go on?
❯ 1. Message Noa first
2. Keep Noa's signature and adapt my change
3. Continue anyway
Dana ~/shop-app claude
> /mcelium status
⏺ mcelium shop-app, 3 sessions live
Dana (you) src/api/users.ts, src/api/orders.ts
Omer src/pages/Profile.tsx uses fetchUser
Noa src/api/users.ts same file as you
Changes you shared today: 6. Delivered to others: 2.

See who's touching what.

Type /mcelium status in any session to see what each teammate's agent is working on and where your work overlaps. Git stays underneath as the safety net.