skills/agent-chat/SKILL.md
XMTP real-time agent-to-agent and user-to-agent encrypted messaging daemon for EverClaw. Manages always-on messaging via XMTP MLS protocol with multi-identity buddy bot support, filesystem-based IPC bridge, consent policies, and cross-platform daemon lifecycle (launchd/systemd). Use when setting up XMTP messaging, managing agent identities, configuring buddy bots, troubleshooting message delivery, or controlling the agent-chat daemon.
npx skillsauth add profbernardoj/windowsclaw.org agent-chatInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
XMTP real-time agent-to-agent and user-to-agent messaging for EverClaw.
Always-on daemon providing E2E-encrypted messaging via XMTP's MLS protocol. Runs as a separate process managed by launchd (macOS) or systemd (Linux), communicating with OpenClaw through a filesystem bridge.
0.2.0
@xmtp/agent-sdk ^2.3.0xmtp-comms-guard ^6.0.0 (peer)# 1. Generate XMTP identity (one-time)
node skills/agent-chat/setup-identity.mjs
# 2. Install daemon as system service
bash scripts/setup-agent-chat.sh
# 3. Check status
bash scripts/setup-agent-chat.sh --status
The setup-agent-chat.sh script installs the XMTP daemon as a persistent system service.
# Install and start daemon (auto-detects OS)
bash scripts/setup-agent-chat.sh
# Check daemon status
bash scripts/setup-agent-chat.sh --status
# View recent logs
bash scripts/setup-agent-chat.sh --logs
# Restart daemon
bash scripts/setup-agent-chat.sh --restart
# Uninstall daemon
bash scripts/setup-agent-chat.sh --uninstall
# Install without starting
bash scripts/setup-agent-chat.sh --skip-start
| Platform | Service Manager | Location | Logs |
|----------|----------------|----------|------|
| macOS | launchd | ~/Library/LaunchAgents/com.everclaw.agent-chat.plist | ~/.everclaw/logs/agent-chat.* |
| Linux | systemd (user) | ~/.config/systemd/user/everclaw-agent-chat.service | journalctl --user -u everclaw-agent-chat |
Note: Linux uses user-level systemd (no sudo required). All services run as your user account.
macOS (launchd):
# Check if loaded
launchctl list | grep everclaw
# View logs
tail -f ~/.everclaw/logs/agent-chat.log
# Stop/start
launchctl bootout gui/$(id -u)/com.everclaw.agent-chat
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.everclaw.agent-chat.plist
Linux (systemd):
# Check status
systemctl --user status everclaw-agent-chat
# View logs
journalctl --user -u everclaw-agent-chat -f
# Stop/start
systemctl --user stop everclaw-agent-chat
systemctl --user start everclaw-agent-chat
~/.everclaw/xmtp/outbox/ → inbox/)open/handshake/strict)Two-tier:
open consenthandshake consentXMTP wallet is messaging-only — no funds. Separate from MOR staking wallet.
# Identity status
node skills/agent-chat/cli.mjs status
# Daemon health
node skills/agent-chat/cli.mjs health
# List peer groups
node skills/agent-chat/cli.mjs groups
# Trust a peer (allow messages)
node skills/agent-chat/cli.mjs trust-peer 0x... --as colleague --name "Agent Name"
# List trusted peers
node skills/agent-chat/cli.mjs peers list
# Send a message (via outbox)
node skills/agent-chat/cli.mjs send 0x... "Hello, agent!"
| File | Purpose |
|------|---------|
| daemon.mjs | Entry point for launchd/systemd |
| cli.mjs | CLI commands |
| setup-identity.mjs | One-time key generation |
| src/agent.mjs | Agent creation + middleware wiring |
| src/identity.mjs | Secret/identity loading (multi-identity: agentId param) |
| src/paths.mjs | Path resolution + agent ID validation (multi-identity) |
| src/consent.mjs | 3-policy consent gate |
| src/router.mjs | Message routing (COMMAND/DATA dispatch) |
| src/bridge.mjs | Filesystem outbox watcher (multi-identity: agentId param) |
| src/health.mjs | Health file writer (multi-identity: agentId param) |
| src/health.mjs | Health file writer |
| src/groups.mjs | Group conversation mapping |
| src/payer.mjs | Fee stub (network currently free) |
| src/index.mjs | Public API re-exports |
Each buddy bot agent gets its own XMTP identity, daemon process, and data directory. This is called "multi-identity" mode — one daemon per agent, running as independent services.
| Agent | Data Directory | Service (macOS) | Service (Linux) |
|-------|---------------|-----------------|-----------------|
| Host (default) | ~/.everclaw/xmtp/ | com.everclaw.agent-chat | everclaw-agent-chat |
| Alice | ~/.everclaw/xmtp-alice/ | com.everclaw.agent-chat.alice | everclaw-agent-chat-alice |
| Bob | ~/.everclaw/xmtp-bob/ | com.everclaw.agent-chat.bob | everclaw-agent-chat-bob |
Each agent's directory contains its own .secrets.json, identity.json, inbox/, outbox/, and peers.json — fully isolated from other agents.
Agent IDs must be:
.., /, etc.)This prevents directory traversal attacks and service name conflicts.
# Generate identity for a buddy bot
node skills/agent-chat/setup-identity.mjs --agent-id alice
# Install daemon for that buddy bot
bash scripts/setup-agent-chat.sh --agent-id alice
# List all installed daemons
bash scripts/setup-agent-chat.sh --list
# Check status of a specific agent
bash scripts/setup-agent-chat.sh --status --agent-id alice
# Restart a specific agent
bash scripts/setup-agent-chat.sh --restart --agent-id alice
# Uninstall a specific agent
bash scripts/setup-agent-chat.sh --uninstall --agent-id alice
| Variable | Purpose |
|----------|---------|
| AGENT_CHAT_AGENT_ID | Agent ID (alternative to --agent-id flag) |
| AGENT_CHAT_XMTP_DIR | Override XMTP data directory (default agent only) |
| EVERCLAW_HOME | Base directory (default: ~/.everclaw) |
AGENT_CHAT_XMTP_DIR only affects the default (host) agent. Per-agent paths always resolve from EVERCLAW_HOME to maintain isolation.
Each per-agent service file (launchd plist or systemd unit) contains the AGENT_CHAT_AGENT_ID environment variable. When the daemon starts, it reads this env var and resolves all paths accordingly:
AGENT_CHAT_AGENT_ID=alice → data dir is ~/.everclaw/xmtp-alice/~/.everclaw/xmtp/ (default host)The --agent-id CLI flag takes priority over the env var, allowing manual overrides.
chmod 700.secrets.json is chmod 600~/.everclaw/xmtp/.secrets.json (chmod 600)~/.everclaw/xmtp/ (chmod 700)/^[a-z0-9][a-z0-9-]{0,62}$/ prevents directory traversal and service injectionnode --version (need >= 20.0.0)ls ~/.everclaw/xmtp/.secrets.jsonbash scripts/setup-agent-chat.sh --logsbash scripts/setup-agent-chat.sh --uninstall && bash scripts/setup-agent-chat.shnode skills/agent-chat/cli.mjs peers listnode skills/agent-chat/cli.mjs healthls ~/.everclaw/xmtp/outbox/bash scripts/setup-agent-chat.sh --statusXMTP limits the number of installations per identity. If you see warnings about installation limits:
node skills/agent-chat/cli.mjs statusnode skills/agent-chat/setup-identity.mjs (creates new address)tools
Cyclic shift execution engine. Plans tasks 3x daily (6 AM, 2 PM, 10 PM), decomposes them into granular steps, then executes via 15-minute cron cycles. Each cycle reads state files, picks the next step, executes it, writes results back. Errors are logged and skipped — never fatal. Planning uses Claude 4.6; execution uses GLM-5.
tools
Security middleware for all XMTP communications in EverClaw. Enforces guarded client usage with validation, integrity checks, and fail-closed security policies. Integrates approval flows for sensitive operations. Use when integrating XMTP messaging, configuring communication security, or auditing guarded client enforcement.
data-ai
Daily standup engine. Plans tasks 3x daily (6 AM, 2 PM, 10 PM) and delivers them for approval. Execution happens in the main session via direct conversation. Night shifts auto-approve carryover from earlier in the day.
tools
A helpful utility skill for agents