Session Presence
Run more than one AI coding session at a time? Session Presence lets them see each other in real time — who is live, on which project, and what each one is working on right now. It is the difference between sessions working near each other and sessions working blind next to each other.
Memory vs. Presence
ContextForge memory answers a question about the past: what happened before, what was decided, what was corrected. Session Presence answers a different question — about right now:
Who else is working on this, at this moment, while I am? Memory is history. Presence is live awareness. When you run two or more sessions against the same project, presence is what keeps Session B from walking into the module Session A already has open.
How It Works
Presence is fully automatic. The MCP client — one process per Claude Code, Cursor, or Copilot session — owns it. You never run a setup command:
- Auto-registration. A session announces itself as live the first time it uses any tool. Nothing to enable.
- Heartbeat. Each session quietly checks in every couple of minutes, so the list only ever shows sessions that are genuinely alive.
- Clean exit. When a session closes, it is removed immediately — even in the split second before the process is killed. Nothing lingers.
- Safety net. If a session dies hard (a crash, a closed laptop), it simply ages off on its own after about ten minutes without a heartbeat. No stale ghosts.
The Three Tools
You rarely call these by name — just talk to your agent naturally and it picks the right one. There is deliberately no session_start tool: registration is implicit.
session_list — see who else is here
Lists other live sessions on your project and what each is focused on. Run it at the start of a conversation and before big changes.
# Just ask, in plain language
"Is anyone else working on this project right now?" "Before I touch the auth module — is another session already on it?"
session_update — say what you are working on
Declares this session's focus so every other session can see it. Set it when you start or switch tasks.
"I'm working on the payments flow now — let the other sessions know." "Update my focus: refactoring the auth module."
session_end — clear your presence
Ends this session's presence explicitly. Usually you never need it — closing the session does this for you.
"I'm done here — end my session presence."
Scoped to Your Project
By default, session_list shows only the sessions on the project linked to your current directory — because that is where work actually collides. A busy afternoon across five different repos does not turn into noise.
- Default: sessions on your current project only.
- Not linked to a project? Falls back to every session across your organization.
- Want the full picture? Ask to see all sessions across the organization to widen the view.
Advisory, Not a Lock
Presence is a "busy" sign on a door, not a key that bolts it shut. It never blocks you from doing anything — it just makes sure you are never doing it blind. You stay in control and make the call with the full picture, not half of it.
Recommended Workflow
At conversation start
Ask "who else is working on this project?" the same way you would glance around an office before taking a desk. If a session is already on the module you were about to touch, pick something else.
When you switch tasks
Say what you are moving to in one sentence — "I'm on the billing flow now" — so every other session can see it and steer clear.
Session Presence ships in the current ContextForge MCP release and works with Claude Code, Cursor, and Copilot. Update to the latest version to enable it — there is nothing else to configure.
Make Your Agents Check Automatically
The presence board itself is fully automatic — but an agent only benefits when it actually consults the board. You can ask manually every time, or add a project rule so every session checks on its own. One command does it:
npx contextforge-mcp init
This appends a Session Presence — Coordination Rulessection to your project's CLAUDE.md (and .cursorrules for Cursor) that instructs the agent to:
- Check at conversation start. Call
session_listbefore doing anything, and tell you who else is here. - Re-check before big changes.If another session's focus overlaps the area it is about to touch, it warns you and lets you decide — advisory, never a lock.
- Announce its own focus. On every task switch it updates its one-line focus so other sessions can steer clear.
Already ran init before? Run it again — it appends only the missing section and never touches the rest of your file. Your existing rules and edits are preserved exactly as they are.