> ## Documentation Index
> Fetch the complete documentation index at: https://docs.migma.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Real-Time Collaboration

> See teammates' presence, cursors, and live canvas changes as they happen on a project.

When two or more people open the same project, Migma turns it into a live room. You see who else is here, watch their cursors move across shared project surfaces, and see edits appear as they make them. Nothing to switch on, nothing to refresh.

<Note>
  Real-time presence and cursors are **ephemeral**. They show who's active right now and where they're pointing; they are never written to your project. The durable work — your emails, canvas, and project data — is saved the same way it always is.
</Note>

***

## What you get

<CardGroup cols={2}>
  <Card title="Live presence" icon="users">
    See everyone currently in the project as a stack of avatars.
  </Card>

  <Card title="Live cursors" icon="arrow-pointer">
    Watch teammates' pointers move across shared project surfaces in real time.
  </Card>

  <Card title="Slot focus" icon="crosshairs">
    See which series slot a collaborator has open and is editing.
  </Card>

  <Card title="Generation awareness" icon="wand-magic-sparkles">
    A live "X is generating…" indicator so two people don't run the AI on the same email at once.
  </Card>

  <Card title="Comment threads" icon="comments">
    Leave anchored feedback, mention teammates, reply in place, and resolve or reopen each thread.
  </Card>
</CardGroup>

***

## Live presence

The avatar stack in the project header shows who else is in the room right now. As people join and leave, the stack updates instantly — no reload. Each collaborator gets a stable color so you can tell their cursor and focus apart from everyone else's.

<img src="https://mintcdn.com/migmaai/fdDb3jxHlHiKoBGd/images/realtime-presence-avatars.png?fit=max&auto=format&n=fdDb3jxHlHiKoBGd&q=85&s=ee94698ed59699dfcba87ae15afcaa47" alt="A stack of collaborator avatars in the project header showing who is currently in the room" title="Live presence avatar stack" className="mx-auto" width="800" data-path="images/realtime-presence-avatars.png" />

When more people are present than fit, the stack collapses the extras into a `+N` bubble. Presence only ever shows signed-in collaborators with access — anonymous public-link viewers never appear and never leak into the room.

***

## Live cursors and slot focus

Move your pointer in chat or over a shared project surface and everyone else in the room sees it, labelled with your name and color. In canvas views, cursors travel in canvas coordinates, so they stay anchored to the right spot even as people pan and zoom independently.

<img src="https://mintcdn.com/migmaai/fdDb3jxHlHiKoBGd/images/realtime-cursors.png?fit=max&auto=format&n=fdDb3jxHlHiKoBGd&q=85&s=31e816e28a6c9533d99bf3308f0abd18" alt="Two labelled teammate cursors shown inside the Migma chat composer" title="Live cursors in chat" className="mx-auto" width="800" data-path="images/realtime-cursors.png" />

For series emails, Migma also broadcasts **slot focus** — which slot in a multi-email series each person currently has open. That makes it obvious when a teammate is already working on slot 3 while you're in slot 1.

<Tip>
  Cursors and focus are best-effort and fire-and-forget. If the network hiccups, a few frames may drop and then catch back up — they're never queued or replayed, so you always see the latest position rather than a stale backlog.
</Tip>

***

## Live canvas sync

When a collaborator changes the canvas, pins a competitor email, adds a comment, or moves a node, everyone else's canvas shows the change within a moment. Migma coalesces rapid bursts such as dragging into one refresh, so the canvas stays smooth instead of flickering.

This is a refresh-on-change model: peers receive a small "the canvas changed" ping and re-pull the latest state. There's no character-by-character merging on the underlying email in this version — the most recent change to a given area wins.

***

## Comment threads

Select the comment tool on **Visual Canvas**, then choose a point beside the email or canvas area you want to discuss. The thread opens at that point. Type `@` or use the `@` button to find a teammate by name or email in new comments and replies. The selected teammate gets an in-app alert that returns them to the exact thread, even if they were away when you tagged them.

Comment markers show the original author and reply count without covering the work. Commenters can use threads without gaining permission to edit emails or send campaigns. Viewers can read existing threads.

Unresolved thread text is available to Migma on the next design turn. Resolving a thread keeps it visible for your team but removes it from later design context.

***

## Generation awareness

Running the AI agent is the one action where two people genuinely collide. To prevent that, Migma shows a live indicator when someone is generating.

<img src="https://mintcdn.com/migmaai/fdDb3jxHlHiKoBGd/images/realtime-generating-indicator.png?fit=max&auto=format&n=fdDb3jxHlHiKoBGd&q=85&s=8bfaeaa0bc4b989b18dabe80bfa4b19b" alt="A live indicator reading 'Alex is generating' shown while a teammate runs the AI agent" title="Live generation indicator" className="mx-auto" width="800" data-path="images/realtime-generating-indicator.png" />

While a generation is in flight, you can see who's running it. If you try to start your own run on a locked email, Migma holds you off and shows who currently holds the turn, rather than letting two AI runs stomp on the same email.

***

## How it turns on

<Steps>
  <Step title="Open a shared project">
    Real-time is automatic. The moment a project has collaborators with access, the live room is available.
  </Step>

  <Step title="A teammate joins">
    When someone else opens the same project, you both appear in each other's presence stack.
  </Step>

  <Step title="Work together">
    Cursors, slot focus, canvas changes, and generation status all flow live for as long as you're both there.
  </Step>
</Steps>

<Check>
  There's no setting to enable and nothing to install. If you don't see anyone else, it just means you're the only person in the project right now.
</Check>

***

## What real-time does and doesn't do

<AccordionGroup>
  <Accordion title="Is my work saved by real-time?" icon="floppy-disk">
    No — and it doesn't need to be. Presence and cursors are ephemeral signals about who's active. Your actual emails and canvas are saved through the normal project flow, independent of the live room.
  </Accordion>

  <Accordion title="What happens if I lose connection?" icon="wifi">
    Your cursor and presence simply stop broadcasting until you reconnect. On reconnect, you re-pull the current project state — you never replay a backlog of missed cursor frames.
  </Accordion>

  <Accordion title="Can public-link viewers see presence?" icon="eye-slash">
    No. Anonymous viewers get the read-only render path with no real-time room, so presence and cursors never leak to people without access.
  </Accordion>

  <Accordion title="Do edits merge character by character?" icon="code-merge">
    Not in this version. Canvas sync is refresh-on-change and manual text edits to the same area resolve last-write-wins. There's no operational-transform merge on the email content yet.
  </Accordion>
</AccordionGroup>

<Note>
  Comment replies and resolution changes use the same canvas sync as other durable nodes. Teammates see the saved thread update within a moment.
</Note>

***

## Related pages

<CardGroup cols={2}>
  <Card title="Workspaces" icon="building" href="/collaboration/workspaces">
    Team workspace switcher and shared credits.
  </Card>

  <Card title="Team Access" icon="users-viewfinder" href="/collaboration/team-access">
    Invite collaborators and control who can view or edit a brand.
  </Card>

  <Card title="Visual Canvas" icon="diagram-project" href="/creating-emails/visual-canvas">
    The shared canvas where presence, cursors, and live sync come together.
  </Card>
</CardGroup>
