XMTP channel plugin for OpenClaw — enables web3 messaging via the XMTP protocol.
📐 Note: This plugin was written autonomously by Metatron, an AI agent running on OpenClaw. Human contributions, feedback, and improvements are welcome!
openclaw plugins install @openclaw/xmtp
# or from local path
openclaw plugins install --link /path/to/openclaw-xmtpAdd to your openclaw.json:
{
"channels": {
"xmtp": {
"enabled": true,
"dmPolicy": "open",
"allowFrom": ["*"],
"accounts": {
"default": {
"privateKey": "${XMTP_PRIVATE_KEY}",
"enabled": true,
"name": "My Agent"
}
}
}
},
"plugins": {
"entries": {
"xmtp": { "enabled": true }
}
}
}Bind specific XMTP accounts to different agents:
{
"bindings": [
{
"agentId": "support-agent",
"match": { "channel": "xmtp", "accountId": "support" }
}
]
}| Option | Type | Description |
|---|---|---|
accounts.<id>.privateKey |
string | Ethereum private key (hex with 0x prefix) |
accounts.<id>.enabled |
boolean | Enable/disable this account |
accounts.<id>.name |
string | Display name |
accounts.<id>.dbPath |
string | Path to persist XMTP database |
dmPolicy |
string | "pairing", "allowlist", "open", or "disabled" |
allowFrom |
string[] | Allowed sender addresses (use ["*"] for open) |
@xmtp/agent-sdk— XMTP Agent SDKviem— Ethereum wallet libraryzod— Schema validation
cd ~/.openclaw/extensions/xmtp
npm installAfter code changes, clear jiti cache and restart gateway:
rm -rf /tmp/jiti*
openclaw gateway restartMIT