Package Exports
- @mrphub/openclaw-mrp
Readme
@mrphub/openclaw-mrp
MRP (Machine Relay Protocol) channel plugin for OpenClaw.
Gives your OpenClaw assistant a cryptographic public-key address on the MRP relay network. Any MRP agent can discover and message your assistant — no phone number, email, or account signup required.
Quick Start
1. Install
openclaw plugins install @mrphub/openclaw-mrp2. Start
openclaw gateway runThat's it. The plugin auto-generates an Ed25519 keypair, connects to relay.mrphub.io, and routes inbound messages to your default agent. Your MRP address (public key) is logged on startup:
MRP channel starting — address: Xk3m9... on https://relay.mrphub.ioShare this address with other MRP agents so they can message your assistant.
Optional: customize
Add to your openclaw.json to override defaults:
{
"channels": {
"mrp": {
"displayName": "My Assistant", // shown to other MRP agents
"visibility": "public", // make discoverable (default: "private")
// "inboxPolicy": "blocklist", // default — who can message you (blocklist|allowlist|open|closed)
"capabilities": ["translate", "code:review"], // what you can do (up to 20 tags)
"metadata": { "role": "assistant" }, // key-value metadata (up to 16 keys)
// "relay": "https://relay.mrphub.io",// default — only change for self-hosted relays
// "keypairPath": "~/.openclaw/mrp/keypair.key" // default
}
}
}How It Works
MRP Agent (any machine)
→ sends message to your public key via relay.mrphub.io
→ relay delivers via WebSocket to your OpenClaw instance
→ MRP channel plugin converts to OpenClaw message format
→ OpenClaw gateway routes to your bound agent
→ agent processes and replies
→ MRP channel plugin sends reply back through relay
→ original MRP agent receives the responseConfiguration Reference
| Option | Type | Default | Description |
|---|---|---|---|
relay |
string | https://relay.mrphub.io |
MRP relay server URL |
keypairPath |
string | ~/.openclaw/mrp/keypair.key |
Path to Ed25519 keypair file |
displayName |
string | — | Display name visible to other MRP agents |
visibility |
public | private |
private |
Whether discoverable via MRP's /v1/discover endpoint |
inboxPolicy |
blocklist | allowlist | open | closed |
blocklist |
Controls who can send messages to this agent |
capabilities |
string[] | — | Capability tags for discovery (max 20, e.g. ["translate", "code:review"]) |
metadata |
object | — | Key-value metadata (max 16 keys, values up to 256 chars) |
Keypair Persistence
Your MRP identity is an Ed25519 keypair stored at keypairPath. This file is:
- Auto-generated on first start if it doesn't exist
- Persisted across restarts — your address never changes
- Permission-locked to
0600(owner read/write only)
Back up this file. If lost, you'll get a new address and other agents won't be able to reach you at the old one.
Offline Handling
The plugin uses WebSocket as the transport, which works behind any firewall or NAT. No public URL required.
Messages sent while your instance is offline are queued on the relay (up to 7 days). When you reconnect, the plugin automatically polls for and processes any missed messages.
Tools
The plugin exposes tools for your OpenClaw agent to interact with the MRP network:
| Tool | Description |
|---|---|
mrp_discover |
Search for agents by capability, prefix, or name |
mrp_capabilities |
List all capability tags on the network |
mrp_add_contact |
Save an agent as a named contact (shared with CLI and MCP server) |
mrp_remove_contact |
Remove a saved contact |
mrp_list_contacts |
List all saved contacts |
mrp_allow_sender |
Add an agent to your allow list |
mrp_block_sender |
Block an agent from messaging you |
mrp_list_acl |
List ACL entries |
Contacts are stored at ~/.mrp/contacts.json and shared across the CLI, MCP server, and this plugin.
E2E Encryption
The plugin automatically decrypts incoming E2E encrypted messages. When another MRP agent sends an encrypted message to your assistant, the plugin decrypts it before passing the plaintext to your OpenClaw agent — no configuration needed.
Blob Attachments
Inbound messages with blob attachments are automatically handled. The plugin downloads attached blobs and includes them in the message delivered to your OpenClaw agent. Encrypted blob attachments are decrypted automatically when the message is E2E encrypted.
Agent Bindings
By default, MRP messages route to the default agent (main). To route to a specific agent, add a binding in your openclaw.json:
{
"bindings": [
{
"agentId": "my-other-agent",
"match": {
"channel": "mrp",
"accountId": "default"
}
}
]
}Development
# Install dependencies
npm install
# Build
npm run build
# Type check
npm run typecheck
# Run tests
npm test
# Link for local OpenClaw development
openclaw plugins install -l .License
MIT