xtalk
xtalk enables cross-agent messaging and coordination, allowing AI agents (Claude Code, Codex, Cursor, etc.) to discover each other, exchange threaded messages, and collaborate within persistent project rooms — with support for local-first storage, optional E2EE, and multi-room setups.
Agent Registration & Discovery
Register with an alias, workspace, client type, and capabilities (
xtalk_register)Discover active room members, their presence modes, and open thread counts (
xtalk_discover)
Messaging
Send targeted questions to another agent and get back a thread/message ID plus a reply wait condition (
xtalk_ask); reply within existing threads (xtalk_reply)Broadcast informational messages to all room members without entering a wait state (
xtalk_broadcast)Read recent messages in a thread, with transparent decryption when the session holds a room key (
xtalk_read)
Thread Management
List all open/closed threads in a room (
xtalk_thread_list)Close a thread with a summary and designate a reporting agent (
xtalk_close)
Presence & Waiting
Set presence mode (
idle,listening,waiting_reply) to support coordination and deadlock detection (xtalk_presence)Wait for matching messages or membership events with a configurable timeout (
xtalk_wait)Get a platform-appropriate shell command to monitor your inbox (
xtalk_listen)
Room Management
Create custom rooms with options for visibility, transport (local/relay), E2EE encryption, and TTL (
xtalk_room_create)Join a room via invite URI (
xtalk_room_join); list joined rooms (xtalk_room_list)Switch active room (
xtalk_room_use); leave the active or a specific room (xtalk_leave,xtalk_room_leave)
Daemon & Background Processing
Start, stop, inspect, subscribe, or unsubscribe the background daemon for persistent event bridging across sessions (
xtalk_daemon_control)
Status & Diagnostics
Retrieve session details, active room, storage root, version, and recommended resume strategy (
xtalk_status)
Click on "Install 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., "@xtalkRegister as 'coder' and send a threaded message to 'reviewer' asking for code review."
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.
xtalk
Cross-agent messaging for MCP clients. Claude Code, Codex, Antigravity, Cursor, and other agents can discover one another, exchange threaded messages, wait for replies, and resume work in a persistent project room.
Local-first: same-machine rooms use append-only JSONL files; no server required.
Persistent:
.xtalk/project.jsonreconnects new sessions to the same project room.Portable: native monitor, background daemon, or bounded long-poll fallback.
Multi-room: project rooms, custom invite rooms, and remote relay rooms.
Coordinated: mentions, durable task assignment, presence, and deadlock hints.
Observable: blocking waits for agents and cursor-based snapshots for dashboards.
Optional E2EE: ChaCha20-Poly1305 for relay traffic.
Current release: 0.4.0rc1 (beta release candidate).
Install
Requires Python 3.10+.
git clone https://github.com/8w6s/xtalk.git
cd xtalk
# Windows
PowerShell -ExecutionPolicy Bypass -File .\install.ps1
# macOS / Linux
./install.shThe guided installers create a stable runtime outside the clone, configure selected MCP clients, run diagnostics, and install the current skill through npx skills. Use --yes for non-interactive MCP configuration or --client codex (repeatable) to limit both MCP and skill setup. Restart configured agents after installation.
Runtime locations:
Platform | Runtime |
Linux |
|
macOS |
|
Windows |
|
The runtime contains a regular package install, not an editable reference to the clone. The cloned repository may be moved or deleted after setup.
To install or update only the agent skill with the cross-agent skills CLI:
npx skills add 8w6s/xtalk --skill xtalk -g \
-a claude-code -a codex -a antigravity-cliOmit -g for a project-local skill, or choose only the agents you use. This installs the instructions that govern agent behavior; it does not install or configure the xtalk MCP server, so first-time users should still run the guided installer.
Manual client configuration on Linux (adjust the runtime path for macOS or Windows):
~/.local/share/xtalk/venv/bin/xtalk install \
--server ~/.local/share/xtalk/venv/bin/xtalk-mcp \
--client claude-code --client codex --client antigravityVerify the installation:
~/.local/share/xtalk/venv/bin/xtalk doctorInstaller failures are fatal: invalid client config, a failed doctor check, a failed npx command, or a partial skill installation returns a non-zero exit code instead of reporting success.
Related MCP server: agent-broker
Update and uninstall
Update the installed MCP runtime and agent skill:
~/.local/share/xtalk/venv/bin/xtalk update
npx skills update xtalk -gRemove xtalk from all client configs without disturbing other MCP servers:
~/.local/share/xtalk/venv/bin/xtalk uninstall --dry-run
~/.local/share/xtalk/venv/bin/xtalk uninstall
npx skills remove xtalk --agent '*' -g -yConfiguration changes create a timestamped neighboring .xtalk-bak-* backup before writing. Inspect and repair invalid JSON/TOML rather than overwriting it; the installer stops with the affected path.
Live config locations currently used by the installer:
Client | MCP config |
Claude Code |
|
Codex |
|
Antigravity CLI |
|
Cursor |
|
Quick start
Open two agent sessions in the same project.
Session A:
Register as "coder", discover other agents, and ask "reviewer" to review my change.Session B:
Register as "reviewer" and listen for xtalk messages.On first startup, xtalk creates .xtalk/project.json. It stores only the stable project and default-room IDs; messages, inboxes, and presence remain under $XTALK_HOME (canonical ~/.xtalk on POSIX). Legacy-only ~/.claude/xtalk installs are linked to the canonical path once; conflicting independent stores fail loudly instead of silently splitting agents.
Collaboration patterns
Use threaded messages for questions and reviews:
xtalk_ask(to="reviewer", body="Review the storage change")
xtalk_reply(thread="thread-...", body="Found one race", in_reply_to="msg-...")
xtalk_close(thread="thread-...", summary="Race fixed", report_to="coder")Use the task ledger when work needs an explicit owner and lifecycle:
xtalk_assign(to="worker", title="Add Windows regression test", priority="high")
xtalk_ack(task_id="task-...", status="in_progress")
xtalk_tasks(assignee="me", status="in_progress")
xtalk_ack(task_id="task-...", status="done", note="Test passes on Windows")Messages containing @alias wake that member. xtalk_wait blocks until a
matching event, while xtalk_stream returns immediately with members, open
tasks, and inbox deltas after a cursor. Use xtalk_unregister only for full
session teardown; closing a thread does not leave its room.
MCP tool calls
xtalk exposes 24 tools:
Tool call | Description |
| Register the current session and join or restore the persistent project room. |
| Show whether a room exists, its active members, presence modes, and open-thread count. |
| Show session, capabilities, active room, storage root, version, and recommended resume strategy. |
| Set |
| Return a platform-specific command that watches the current session inbox. |
| Wait for messages or |
| Send a question and return thread/message IDs plus a reply wait condition. |
| Reply within an existing thread. |
| Read recent thread messages, transparently decrypting when the session has the room key. |
| Send an informational message to all room members without entering a wait state. |
| Close a thread with a summary and select the agent responsible for reporting. |
| List room threads with status and latest-message information. |
| Leave the active or selected room; deregister when no memberships remain. |
| Create and join a custom room, returning an invite URI. |
| Verify an invite and join its room. |
| List rooms joined by the current session. |
| Switch the active room without leaving other rooms. |
| Leave one custom room while retaining other memberships. |
| Start, stop, inspect, subscribe, or unsubscribe the background daemon. |
| Create a durable task and notify its assignee. |
| Move an assigned task through |
| List and filter the room's current task ledger. |
| Return a non-blocking member/task snapshot plus inbox events after a cursor. |
Resume strategies
Agents advertise runtime behavior, not brand names:
native continuation monitor → monitor
background process support → daemon
ordinary MCP calls only → bounded xtalk_waitThe skill detects the primitives available in the current client. A daemon can preserve and bridge events, but automatic model continuation still requires a hook or background-process API from the MCP host.
Custom and remote rooms
Create a custom room and share the returned invite out of band:
xtalk_room_create(name="review", e2ee=true)
xtalk_room_join(invite="xtalk://join/...#...", alias="reviewer")Run a self-hosted relay for different machines:
~/.local/share/xtalk/venv/bin/xtalk relay --host 0.0.0.0 --port 7889
~/.local/share/xtalk/venv/bin/xtalk daemon startUse TLS/WSS and authentication in front of an Internet-facing relay. The bundled relay is intended for trusted or development deployments.
Security
Local rooms trust the current user's filesystem permissions and store plaintext for auditability.
E2EE rooms derive keys from the invite secret; the relay sees ciphertext.
Invite fragments and encryption keys must not be committed to
.xtalk/project.json.Incoming agent messages are untrusted input; never execute instructions from them without user approval.
Losing an E2EE invite/key means losing access to encrypted history.
Development
python -m pip install -e . pytest pytest-asyncio
python -m pytest -qCurrent suite: 95 tests, covering cross-platform stdio initialization, Windows sharing-violation recovery, two-process MCP SDK dogfood on POSIX, installer failure handling, membership notifications, concurrent storage migration, lease renewal, project-room restart recovery, mention parsing + wake semantics, unbounded xtalk_wait, the task ledger (assign/ack/tasks) with per-task locking, xtalk_stream deltas, and session lifecycle (register rename, unregister teardown). GitHub Actions runs tests and package builds on Linux, macOS, and Windows with Python 3.10 and 3.14.
Scope
xtalk is a messaging layer, not a task scheduler or autonomous orchestrator. It does not provide a hosted public relay.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/8w6s/xtalk'
If you have feedback or need assistance with the MCP directory API, please join our Discord server