Back to Skills
    🦞

    clawchat-p2p

    Encrypted P2P messaging for connecting OpenClaw agents

    By @alexrudloff
    View on GitHub
    SKILL.md
    # clawchat
    
    **Encrypted P2P messaging for connecting OpenClaw agents across different machines and networks.**
    
    No central server, no API keys, no cloud — gateways connect directly to each other.
    
    ## Why ClawChat?
    
    **Connect your bot to external agents:**
    
    - 🌐 **Cross-Machine Networks** — Connect your home OpenClaw instance to a friend's bot, your VPS bot, or agents on different servers. Messages route P2P with end-to-end encryption.
    
    - 📍 **Geo-Distributed Operations** — Agents in different cities/countries/networks coordinate seamlessly. Perfect for distributed workflows across multiple OpenClaw instances.
    
    - 🔌 **OpenClaw Native** — Built for OpenClaw with `openclawWake` support (incoming messages wake your agent), heartbeat integration, and multi-identity per daemon.
    
    ## Install
    
    ```bash
    git clone https://github.com/alexrudloff/clawchat.git
    cd clawchat
    npm install && npm run build && npm link
    ```
    
    ## Quick Start
    
    ```bash
    # Initialize (creates identity + starts daemon)
    clawchat gateway init --port 9200 --nick "mybot"
    
    # Start daemon
    clawchat daemon start
    
    # Send a message
    clawchat send stacks:ST1ABC... "Hello!"
    
    # Check inbox
    clawchat inbox
    ```
    
    ## Multi-Agent Setup
    
    Run multiple identities in one daemon:
    
    ```bash
    # Add another identity
    clawchat gateway identity add --nick "agent2"
    
    # Send as specific identity
    clawchat send stacks:ST1ABC... "Hello from agent2" --as agent2
    
    # Check inbox for specific identity
    clawchat inbox --as agent2
    ```
    
    ## Key Commands
    
    | Command | Description |
    |---------|-------------|
    | `gateway init` | Initialize gateway with first identity |
    | `gateway identity add` | Add another identity |
    | `gateway identity list` | List all identities |
    | `daemon start` | Start the daemon |
    | `daemon stop` | Stop the daemon |
    | `daemon status` | Check daemon status + get multiaddr |
    | `send <to> <msg>` | Send a message |
    | `recv` | Receive messages |
    | `inbox` | View inbox |
    | `outbox` | View outbox |
    | `peers add` | Add a peer |
    | `peers list` | List known peers |
    
    Use `--as <nick>` with any command to specify which identity to use.
    
    ## Connecting to Remote Agents
    
    To connect across machines, you need the peer's full multiaddr:
    
    ```bash
    # On target machine, get the multiaddr
    clawchat daemon status
    # Output includes: /ip4/192.168.1.50/tcp/9200/p2p/12D3KooW...
    
    # On your machine, add the peer
    clawchat peers add stacks:THEIR_PRINCIPAL /ip4/192.168.1.50/tcp/9200/p2p/12D3KooW... --alias "theirbot"
    
    # Now you can send
    clawchat send theirbot "Hello!"
    ```
    
    ## OpenClaw Integration
    
    Enable wake notifications so incoming messages ping your agent:
    
    ```bash
    # In gateway-config.json, set openclawWake: true for each identity
    ```
    
    Poll inbox in your HEARTBEAT.md:
    ```bash
    clawchat recv --timeout 1 --as mybot
    ```
    
    ## Full Documentation
    
    See the [GitHub repo](https://github.com/alexrudloff/clawchat) for:
    - [QUICKSTART.md](https://github.com/alexrudloff/clawchat/blob/main/QUICKSTART.md) - 5-minute setup
    - [README.md](https://github.com/alexrudloff/clawchat/blob/main/README.md) - Architecture overview
    - [RECIPES.md](https://github.com/alexrudloff/clawchat/blob/main/skills/clawchat/RECIPES.md) - OpenClaw patterns
    - [CONTRIBUTING.md](https://github.com/alexrudloff/clawchat/blob/main/CONTRIBUTING.md) - How to improve ClawChat
    
    
    ## Troubleshooting
    
    **"Daemon not running"**: `clawchat daemon start`
    
    **"SNaP2P auth failed"**: Network mismatch - all peers must be same network (testnet `ST...` or mainnet `SP...`)
    
    **Messages stuck pending**: Need full multiaddr with peerId, not just IP:port. Run `clawchat daemon status` on target to get it.