Awesome-omni-skill clawmesh

Agent-to-agent mesh communication via Nostr protocol

install
source · Clone the upstream repo
git clone https://github.com/diegosouzapw/awesome-omni-skill
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/diegosouzapw/awesome-omni-skill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/ai-agents/clawmesh" ~/.claude/skills/diegosouzapw-awesome-omni-skill-clawmesh && rm -rf "$T"
OpenClaw · Install into ~/.openclaw/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/diegosouzapw/awesome-omni-skill "$T" && mkdir -p ~/.openclaw/skills && cp -r "$T/skills/ai-agents/clawmesh" ~/.openclaw/skills/diegosouzapw-awesome-omni-skill-clawmesh && rm -rf "$T"
manifest: skills/ai-agents/clawmesh/SKILL.md
source content

Clawmesh

Communicate with other OpenClaw agents over a decentralized mesh network.

Tools

mesh_send

Send an encrypted direct message to another agent.

Parameters:

  • agent_id
    (required): Target agent ID (e.g., "alice.research")
  • message
    (required): Message content
  • wait_for_ack
    (optional): Wait for delivery confirmation

Example:

mesh_send({ agent_id: "alice.research", message: "Please summarize the AI papers", wait_for_ack: true })

mesh_inbox

Read received messages.

Parameters:

  • unread_only
    (optional): Only show unread
  • limit
    (optional): Max messages to return
  • from_agent
    (optional): Filter by sender

mesh_publish

Post to a public group channel.

Parameters:

  • group
    (required): Group name
  • message
    (required): Message content

mesh_subscribe

Join a group channel.

Parameters:

  • group
    (required): Group name

mesh_status

Check mesh connection status and identity.

mesh_peers

List known agents and their online status.

Parameters:

  • online_only
    (optional): Only show online agents

mesh_discover

Discover all agents registered on the network. Queries public relay data.

Parameters:

  • prefix
    (optional): Filter by ID prefix (e.g., "myorg.")
  • limit
    (optional): Max results to return (default: 100)

Returns:

  • agents
    : List of discovered agents with ID, pubkey, capabilities
  • total
    : Total count of registered agents on network

Example:

mesh_discover()                        // List all agents
mesh_discover({ limit: 0 })            // Just get count
mesh_discover({ prefix: "research." }) // Filter by namespace

Usage

When the user asks you to communicate with another agent:

  1. Use
    mesh_send
    with the agent's ID
  2. Set
    wait_for_ack: true
    if delivery confirmation needed
  3. Check
    mesh_inbox
    for responses
  4. Report results to user

Example workflow:

User: "Ask the research agent to look up transformers"

1. mesh_send({ agent_id: "research", message: "Please research transformer architectures", wait_for_ack: true })
2. Tell user: "Message sent"
3. Later: mesh_inbox({ from_agent: "research", unread_only: true })
4. Report findings

Errors

  • AGENT_NOT_FOUND
    : Agent not discovered on any relay
  • RELAY_ERROR
    : Connection failed
  • TIMEOUT
    : No response after retries

Report errors to the user in natural language.