Agent Cross-Session MCP
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Agent Cross-Session MCPwho else is working in this repo right now, and are we touching the same files?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
agent-cross-session-mcp
TL;DR — 一個 MCP server,令 DSH 唔同 session 嘅 agent 知道彼此做緊咩:邊個 session 喺邊個 workspace、跑緊乜 tool、最後一句 human 問咩、最後答咗啲乜,仲可以互相留低 note。
It reads DSH's own session logs (~/.dsh/sessions/**/session.v2.jsonl.zstd) and never writes to another
session. A small append-only board carries voluntary announcements.
Why this exists
DSH sessions are isolated: a session sees its own conversation and nothing about what the other windows on the same machine are doing. Two agents can end up editing the same repo, re-doing the same research, or contradicting a decision the other one just made.
This server closes that gap with two read paths and one write path:
Path | Source | Freshness |
Live activity | the caller's and peers' session logs, which DSH appends per batch of events | seconds |
Announcements |
| immediate |
Related MCP server: claude-intercom-mcp
Tools
Tool | Answers |
| Who else is running, in which workspace, doing what — tool in flight, last human request, last reply. |
| The recent timeline of one session: human messages, agent replies, tool calls in order. |
| Which files two sessions both touched, which share a workspace, and which ran git in the same repo. |
| Post a note for the other sessions (what you own, what you decided). |
| Read the notes other sessions posted, newest first. |
| Which session am I, which workspace, what am I doing. |
Example peers output:
DSH sessions — 2 shown of 12 on disk · 1 running a tool · active within 30m · now 09-12 01:56
1) 74f51504
workspace : C:\Users\cheun\OneDrive\Desktop\agent_cross-session_mcp
status : busy — running run_code (last event 1s ago)
said : (turn in progress)
2) fa12628a
workspace : C:\Users\cheun\.dsh
status : idle (last event 13m ago)
said : 搞好晒,寫入咗 my_agent_setting repo(3 個檔改動,未 commit)…How it works
Session logs are a concatenated Zstandard container. Node's zstdDecompressSync decodes only the
first frame, so lib/session-logs.mjs locates frames structurally first (frame header, then block
headers — a compressed block stores its own compressed length, so no decompression is needed
to find the next frame), then decodes one frame at a time. A write in progress shows up as a
torn final frame and is skipped until the next poll.
Reads are windowed. Only the head frame (session header, title) and the newest frames (current turn) are decoded, so polling every session stays cheap.
The calling session is recovered, not assumed. DSH does not forward a session identity to
MCP servers — a tools/call request carries only the tool name and arguments. But DSH appends the
caller's own record to its log before the call is served: tool/call for a tool the model calls
directly, tool/code-dispatch-start for the same tool called from inside run_code. So
identifyCaller() reads the logs written in the last two minutes, matches either record, and
reports that session as ← this session. When identification fails, announce still stores the
note and says it was anonymous.
Nothing here needs DSH to change. The server is a plain stdio MCP process; DSH mounts it
through dsh-mcp-client like any other MCP server.
Collision prevention
Two sessions in one repo is the case this server exists for, so the peer view carries the evidence a collision would leave:
@@BT@@peers@@BT@@ adds a @@BT@@touched@@BT@@ line per session: the newest files that session read or wrote (@@BT@@(w)@@BT@@ marks a write) plus the git subcommands it ran.
@@BT@@overlaps@@BT@@ compares every recently active session and reports, in one report: sessions sharing a workspace, how many files each wrote, git races (@@BT@@add -A@@BT@@, @@BT@@commit@@BT@@, @@BT@@checkout@@BT@@ in the same repo), and each file more than one session touched — @@BT@@⚠ CONFLICT@@BT@@ when both wrote it.
Status lines separate real work from log writes: a session that was only seeded or resumed reads @@BT@@idle (last work 1d2h ago · log written 27m ago (seed/resume))@@BT@@ instead of looking active.
This is advisory: nothing here blocks a write, and nothing appears unless an agent asks. For hard isolation give each session its own @@BT@@git worktree@@BT@@ (see the @@BT@@using-git-worktrees@@BT@@ skill) — the radar then covers what worktrees cannot: the same working tree reopened twice, files outside any repo, and the git commands themselves.
Install
npm install --cache .\.npm-cache # sandboxed npm needs its cache inside the project
pwsh -File scripts/install-to-dsh.ps1 -CommitThe script copies skills/cross-session into <DSH_HOME>/skills, inserts the
install/cordis-block.yml row into <DSH_HOME>/profiles/<profile>/cordis.patch.yml once
(leaving a .bak beside it), and refreshes the my_agent_setting mirror. It derives every
path from the repository location, so a fresh clone on another machine works unchanged; override the
targets with DSH_HOME / CROSS_SESSION_MIRROR and the profile with -Profile.
Register it in DSH
Add one row to ~/.dsh/profiles/<profile>/cordis.patch.yml:
- insert:
- id: mcp-cross-session
name: '@deepseek-ai/dsh-mcp-client'
config:
serverName: crosssession
transport: stdio
command: node
args: ['C:\Users\cheun\OneDrive\Desktop\agent_cross-session_mcp\server.mjs']
cwd: 'C:\Users\cheun\OneDrive\Desktop\agent_cross-session_mcp'Notes:
serverNamemust matchCROSS_SESSION_SERVER_NAME(defaultcrosssession), because the tools appear to the model asmcp__crosssession__peersand caller identification matches those exact names.New rows must be added with the
insert:form; an- id:override for a row that does not exist yet is silently dropped.The harness picks the row up on reload; a gateway restart is the reliable way.
Configuration
Variable | Default | Meaning |
|
| Home whose |
|
| Session store root, when it is not under the home. |
|
| Announcement log. |
|
| MCP server name used for caller identification. |
Layout
server.mjs stdio transport only (MCP SDK wiring)
lib/tools.mjs tool definitions, handlers, rendering
lib/session-logs.mjs zstd frame scanner, windowed reader, summarizer, activity, caller lookup
lib/board.mjs append-only announcement log with size-capped compaction
skills/cross-session/SKILL.md the DSH skill that tells an agent when to reach for these tools
install/cordis-block.yml the MCP row, with __ROOT__/__SERVER__ placeholders
scripts/install-to-dsh.ps1 installs the skill + row into the live DSH home and mirrors my_agent_setting
test.mjs tests: frame scanner, summarizer, activity, caller lookup, every tool, stdio
spike/ throwaway probes used to reverse-engineer the session-log formatTest
npm install --cache .\.npm-cache # sandboxed npm needs its cache inside the project
npm testThe stdio round trip is skipped when the sandbox forbids spawning a child with pipes
(spawn EPERM); everything else runs without a transport.
Limitations
Live sessions only show what is already on disk. Activity is derived from log mtimes and records, so a session that just started may show one poll late.
Session format v2 only (
session.v2.jsonl.zstd). An older or future format is not parsed.Subagent work is not a separate session — it appears inside its parent's log.
Titles come from the log, so an untitled session shows no title until DSH writes one.
The board is machine-local and unauthenticated: any session on this machine can post.
Available Tools
6 toolsannounceA
Post a short note for the other DSH sessions: what you are working on, which files or repo you are touching, or a decision they need to see. Other sessions read it with board. Call it when you start something long, take ownership of files another session might edit, or finish a task.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | One or two sentences, in the language of the conversation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses that the note is broadcast to other sessions and is consumed via `board`, but says nothing about note lifetime/expiry, author attribution, or whether posting overwrites anything. Adequate disclosure of audience, incomplete on persistence semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero waste: purpose and audience first, then trigger conditions. Every clause earns its place and the call-to-action is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, no-annotation, no-output-schema tool, the description covers purpose, audience, read path, and when to invoke. Minor gap on note lifetime/attribution, which would matter for a shared coordination board but is not strictly needed to call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single `text` parameter, so the schema already documents format and language expectations. The description adds content guidance (what to include in the note) that complements the parameter, but no syntax or length detail beyond the schema. Baseline 3 applies when the schema does the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb+resource ('Post a short note for the other DSH sessions') and enumerates the content types (work in progress, files/repo, decisions). It also names the sibling that reads the notes ('board'), so an agent can distinguish announce from board without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit trigger conditions are given: start something long, take ownership of files another session might edit, or finish a task. It also specifies the read counterpart ('Other sessions read it with `board`'), giving both when-to-use and the alternative tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boardA
Read the notes other DSH sessions posted with announce, newest first.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum notes to return (default 20). | |
| since_minutes | No | Only notes younger than N minutes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden, and it does disclose two behavioral facts: results are ordered newest first and are scoped to notes from *other* DSH sessions (implying the caller's own notes are excluded). It does not say anything about the note structure, whether posting requires announce first, or pagination behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with no filler, and the most important scoping fact (which notes) plus ordering are front-loaded. Nothing could be removed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only listing tool with a fully documented two-parameter schema and no output schema, the description covers scope, source, and ordering adequately. The only gap is that the shape/content of a returned note is left entirely implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both `limit` (default 20) and `since_minutes` fully documented in the schema itself. The description adds no syntax, format, or interaction details for either parameter, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Read) and resource (notes other DSH sessions posted) and names the sibling tool `announce` that produces the content, which cleanly separates it from the write side. The 'newest first' ordering also pins down what the result looks like. An agent can tell this is the announcement-reading tool without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what the tool reads but gives no guidance on when to reach for it versus `peers`, `overlaps`, `session_detail`, or `whoami`. There is no explicit when-to-use or when-not-to-use statement; an agent must infer that this is the bulletin-board counterpart to `announce`.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
overlapsA
Report collision risk between DSH sessions: files touched by more than one session, sessions sharing one workspace, and git commands run in the same repo. Use it before editing a repo another session is working in, or when the user asks whether two sessions will clash.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum sessions to consider (default 12). | |
| active_within_minutes | No | How far back to look for activity (default 240). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full behavioral burden. It discloses what is compared, which usefully implies a read-only analytical operation, but it says nothing about cost, latency, scope of scanning, or whether the report is exhaustive or sampled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: the first defines the output dimensions, the second the usage conditions. Nothing is wasted and the substance is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description partly compensates by listing the three report categories. There are no annotations to cover safety or mutability either, but the tool is clearly a read/report operation and only the response format and limits remain underspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so limit and active_within_minutes are already fully documented in the schema. The description adds no additional meaning such as windowing semantics or how truncation via limit affects the collision analysis, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
It states a specific verb (report) and resource (collision risk between DSH sessions) and enumerates the three concrete dimensions detected: overlapping file touches, shared workspaces, and duplicate git commands in one repo. That level of detail clearly separates it from siblings like peers or session_detail.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit triggering conditions: before editing a repo another session is working in, or when the user asks whether two sessions will clash. It does not name alternative tools (e.g. peers) or say when not to use it, so it stops just short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
peersA
See what the other DSH agent sessions on this machine are doing right now: their workspace, title, whether a tool is still running, the last thing the human asked them, and the last thing they answered. Use it before touching files or repos another session might be editing, when the user mentions another window or session, or to check whether a task is already being handled elsewhere.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum sessions to show (default 8). | |
| workspace | No | Only show sessions whose workspace path contains this text. | |
| include_dormant | No | Include sessions with no recent activity (default false). | |
| active_within_minutes | No | Only show sessions with activity in the last N minutes (default 30). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral load. It effectively communicates read-only observation via 'See' and 'check', and discloses the specific current-state fields returned and recency ('right now'), though it does not explicitly state absence of side effects or any auth requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: the first defines the tool and enumerates return fields; the second gives usage scenarios. Front-loaded, no waste, every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description must explain return values. It enumerates the key fields returned, which is helpful, but does not specify the structure (e.g., list) or ordering. Combined with complete schema coverage for parameters, it is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters including defaults and filters. The description adds no parameter-level detail, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource: 'See what the other DSH agent sessions on this machine are doing right now' with an enumerated list of returned details. It does not explicitly name or distinguish itself from siblings like session_detail or overlaps, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives three clear when-to-use scenarios: before touching shared files/repos, when the user mentions another window/session, and to check if a task is already handled. No when-not guidance or named alternatives, so not a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_detailA
Read the recent activity timeline of one DSH session in order: human messages, agent replies, and tool calls. Use it after peers when another session's work matters to yours — to see exactly what it changed, decided, or is still running.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum timeline entries, newest kept (default 30). | |
| frames | No | How many log frames of history to decode; higher is deeper (default 24). | |
| session_id | Yes | Full session id or an unambiguous prefix, as shown by `peers`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden; 'Read' signals a non-mutating operation, and it discloses that the timeline is returned in order and spans three entry types, which is real behavioral content. It does not mention permissions, rate limits, or how truncation behaves when limit/frames are exhausted, so it falls short of full disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: the first front-loads what is returned, the second front-loads when to reach for it. No filler, no repetition of schema fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description must stand alone; it usefully describes the returned timeline composition (messages, replies, tool calls) and ordering, covering most of what an agent needs. It stops short of describing response shape or truncation semantics, which is the main remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and all three parameters (limit, frames, session_id) are documented in the schema, including the prefix-matching behavior of session_id. The description adds no parameter-level detail beyond what the schema already supplies, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Read) plus a precisely scoped resource (the recent activity timeline of ONE DSH session) and enumerates what the timeline contains: human messages, agent replies, tool calls. This distinguishes it from siblings like peers (list) and overlaps without needing to open any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly sequences usage: 'Use it after `peers` when another session's work matters to yours,' naming the sibling that precedes it and the triggering condition. It lacks an explicit when-not clause (e.g., what to use for a broad multi-session view), but the routing intent is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
whoamiA
Identify which DSH session you are running in: session id, workspace, title, and whether a tool is currently running. Useful when you need to tell a human or another session where a note came from.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden — and for a zero-parameter introspection call it does reasonably well by disclosing exactly what identity information is surfaced, including the live 'whether a tool is currently running' status. It never explicitly says the call is side-effect free or whether it requires an active session, which is the remaining gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, with the identity payload front-loaded and the use case trailing. Every clause does work, though the phrasing is slightly loose and could have been trimmed further.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must describe the return values itself — and it does, listing session id, workspace, title, and running status. It stops short of specifying formats (e.g., id form, title source) or the relationship to session_detail, leaving a small but real gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline of 4 applies. The description instead usefully characterizes the return payload, which is the relevant semantics for a no-arg call.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb (Identify) and resource (DSH session) and enumerates the returned fields: session id, workspace, title, and running-tool status. It is clear on its own, but it never contrasts itself with the sibling 'session_detail', which an agent would plausibly confuse it with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It offers one concrete scenario ('when you need to tell a human or another session where a note came from'), which is implied usage guidance rather than an explicit rule. It does not state when not to use it or name alternatives such as session_detail, so the agent must still infer the boundary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
v0.1.0- First observed
announce - First observed
board - First observed
overlaps - First observed
peers - First observed
session_detail - First observed
whoami
TDQS
Scored across 6 tools
Each tool targets a distinct slice of cross-session awareness: peers (all sessions at a glance), session_detail (one session's timeline), whoami (self), overlaps (collision risk), announce/board (write/read notes). The descriptions explicitly cross-reference each other ('Use it after peers', 'Other sessions read it with board'), making selection unambiguous.
Names are readable but follow no single convention: session_detail uses snake_case while peers, overlaps, announce, board, and whoami are bare single words mixing nouns (peers, board) with verbs (announce) and a question-style identifier (whoami). Predictable enough to navigate, but not a consistent verb_noun pattern.
Six tools is well-scoped for a cross-session coordination server: three read/awareness tools, two messaging tools, and one identity tool. Every tool earns its place with no redundant surface.
The surface covers the core lifecycle — discover sessions, inspect activity, detect collisions, broadcast notes, read notes, and identify self. Minor gaps exist: no targeted messaging to a specific session, no reply/threading on the board, and no way to clear or expire notes.
Maintenance
Related MCP Connectors
Shared boards for agents: live text, reliable appends, and immutable UTC revision history.
Your coding agent tells a coworker's agent what you found or changed. Invite-only.
The team layer for AI coding agents: shared contracts, collision alerts, E2EE sessions.
- tasklixOAuthdev.tasklix
The shared task board your autonomous agent fleet can read and write.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables peer-to-peer communication, discovery, shared state, and file coordination between AI coding agents across machines and sessions.49 npm19Elastic 2.0
- AlicenseAqualityBmaintenanceEnables local messaging between Claude Code, Codex, Pi, and other coding-agent sessions on the same machine, allowing them to discover each other, send updates, ask questions, and reply.813 npm2AGPL 3.0
- AlicenseNot gradedqualityAmaintenanceProvides real-time presence and collision avoidance for parallel AI coding agents, allowing them to report and query activities to avoid overlapping edits and destructive git operations.31 npm4MIT
- AlicenseNot gradedqualityAmaintenanceEnables already-running AI coding agents on the same project to register, discover one another, and exchange durable direct messages so they can share progress and avoid conflicting work.Apache 2.0