{
  "schemaVersion": "1.0",
  "item": {
    "slug": "agentmesh",
    "name": "AgentMesh",
    "source": "tencent",
    "type": "skill",
    "category": "通讯协作",
    "sourceUrl": "https://clawhub.ai/cerbug45/agentmesh",
    "canonicalUrl": "https://clawhub.ai/cerbug45/agentmesh",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/agentmesh",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=agentmesh",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "README.md",
      "SKILL.md",
      "examples/01_simple_chat.py",
      "examples/02_multi_agent.py",
      "examples/03_persistent_keys.py",
      "examples/04_llm_agents.py"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/agentmesh"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/agentmesh",
    "agentPageUrl": "https://openagent3.xyz/skills/agentmesh/agent",
    "manifestUrl": "https://openagent3.xyz/skills/agentmesh/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/agentmesh/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "AgentMesh SKILL.md",
        "body": "WhatsApp-style end-to-end encrypted messaging for AI agents.\nGitHub: https://github.com/cerbug45/AgentMesh | Author: cerbug45"
      },
      {
        "title": "What Is AgentMesh?",
        "body": "AgentMesh gives every AI agent a cryptographic identity and lets agents\nexchange messages that are:\n\nPropertyMechanismEncryptedAES-256-GCM authenticated encryptionAuthenticatedEd25519 digital signatures (per message)Forward-secretX25519 ECDH ephemeral session keysTamper-proofAEAD authentication tagReplay-proofNonce + counter deduplicationPrivateThe Hub (broker) never sees message contents\n\nNo TLS certificates. No servers required for local use. One pip install."
      },
      {
        "title": "Requirements",
        "body": "Python 3.10 or newer\npip"
      },
      {
        "title": "Option 1 – Install from GitHub (recommended)",
        "body": "pip install git+https://github.com/cerbug45/AgentMesh.git"
      },
      {
        "title": "Option 2 – Clone and install locally",
        "body": "git clone https://github.com/cerbug45/AgentMesh.git\ncd AgentMesh\npip install ."
      },
      {
        "title": "Option 3 – Development install (editable, with tests)",
        "body": "git clone https://github.com/cerbug45/AgentMesh.git\ncd AgentMesh\npip install -e \".[dev]\"\npytest           # run all tests"
      },
      {
        "title": "Verify installation",
        "body": "python -c \"import agentmesh; print(agentmesh.__version__)\"\n# → 1.0.0"
      },
      {
        "title": "Quick Start (5 minutes)",
        "body": "from agentmesh import Agent, LocalHub\n\nhub   = LocalHub()                  # in-process broker\nalice = Agent(\"alice\", hub=hub)     # keys generated automatically\nbob   = Agent(\"bob\",   hub=hub)\n\n@bob.on_message\ndef handle(msg):\n    print(f\"[{msg.recipient}] ← {msg.sender}: {msg.text}\")\n\nalice.send(\"bob\", text=\"Hello, Bob! This is end-to-end encrypted.\")\n\nOutput:\n\n[bob] ← alice: Hello, Bob! This is end-to-end encrypted."
      },
      {
        "title": "Agent",
        "body": "An Agent is an AI agent with a cryptographic identity (two key pairs):\n\nEd25519 identity key – signs every outgoing message\nX25519 exchange key – used for ECDH session establishment\n\nfrom agentmesh import Agent, LocalHub\n\nhub   = LocalHub()\nalice = Agent(\"alice\", hub=hub)\n\n# See the agent's fingerprint (share out-of-band to verify identity)\nprint(alice.fingerprint)\n# → a1b2:c3d4:e5f6:g7h8:i9j0:k1l2:m3n4:o5p6"
      },
      {
        "title": "Hub",
        "body": "A Hub is the message router. It stores public key bundles (for discovery)\nand routes encrypted envelopes. It cannot decrypt messages.\n\nHubUse caseLocalHubSingle Python process (demos, tests, notebooks)NetworkHubMulti-process / multi-machine (production)"
      },
      {
        "title": "Message",
        "body": "@bob.on_message\ndef handle(msg):\n    msg.sender     # str  – sender agent_id\n    msg.recipient  # str  – recipient agent_id\n    msg.text       # str  – shortcut for msg.payload[\"text\"]\n    msg.type       # str  – shortcut for msg.payload[\"type\"] (default: \"message\")\n    msg.payload    # dict – full decrypted payload\n    msg.timestamp  # int  – milliseconds since epoch"
      },
      {
        "title": "Sending messages with extra data",
        "body": "alice.send(\n    \"bob\",\n    text     = \"Run this task\",\n    task_id  = 42,\n    priority = \"high\",\n    data     = {\"key\": \"value\"},\n)\n\nAll keyword arguments beyond text are included in msg.payload."
      },
      {
        "title": "Chaining handlers",
        "body": "# Handler as decorator\n@alice.on_message\ndef handler_one(msg):\n    ...\n\n# Handler as lambda\nalice.on_message(lambda msg: print(msg.text))\n\n# Multiple handlers – all called in registration order\nalice.on_message(log_handler)\nalice.on_message(process_handler)"
      },
      {
        "title": "Persistent keys",
        "body": "Save keys to disk so an agent has the same identity across restarts:\n\nalice = Agent(\"alice\", hub=hub, keypair_path=\".keys/alice.json\")\n\nFile is created on first run (new keys).\nFile is loaded on subsequent runs (same keys = same fingerprint).\nStore this file securely – it contains the private key."
      },
      {
        "title": "Peer discovery",
        "body": "# List all agents registered on the hub\npeers = alice.list_peers()   # → [\"bob\", \"carol\", \"dave\"]\n\n# Check agent status\nprint(alice.status())\n# {\n#   \"agent_id\": \"alice\",\n#   \"fingerprint\": \"a1b2:…\",\n#   \"active_sessions\": [\"bob\"],\n#   \"known_peers\": [\"bob\"],\n#   \"handlers\": 2\n# }"
      },
      {
        "title": "1. Start the hub server",
        "body": "On the broker machine (or in its own terminal):\n\n# Option A – module\npython -m agentmesh.hub_server --host 0.0.0.0 --port 7700\n\n# Option B – entry-point (after pip install)\nagentmesh-hub --host 0.0.0.0 --port 7700"
      },
      {
        "title": "2. Agents connect from anywhere",
        "body": "# Machine A\nfrom agentmesh import Agent, NetworkHub\nhub   = NetworkHub(host=\"192.168.1.10\", port=7700)\nalice = Agent(\"alice\", hub=hub)\n\n# Machine B (different process / different computer)\nfrom agentmesh import Agent, NetworkHub\nhub = NetworkHub(host=\"192.168.1.10\", port=7700)\nbob = Agent(\"bob\", hub=hub)\n\nbob.on_message(lambda m: print(m.text))\nalice.send(\"bob\", text=\"Cross-machine encrypted message!\")"
      },
      {
        "title": "Network hub architecture",
        "body": "┌──────────────────────────────────────────────────────┐\n│                   NetworkHubServer                   │\n│  Stores public bundles.  Routes encrypted envelopes. │\n│  Cannot read message contents.                       │\n└──────────────────────┬───────────────────────────────┘\n                       │ TCP (newline-delimited JSON)\n           ┌───────────┼───────────┐\n           │           │           │\n      Agent A      Agent B      Agent C\n   (encrypted)  (encrypted)  (encrypted)"
      },
      {
        "title": "Cryptographic stack",
        "body": "┌─────────────────────────────────────────────────────┐\n│  Application layer (dict payload)                   │\n├─────────────────────────────────────────────────────┤\n│  Ed25519 signature  (sender authentication)         │\n├─────────────────────────────────────────────────────┤\n│  AES-256-GCM  (confidentiality + integrity)         │\n├─────────────────────────────────────────────────────┤\n│  HKDF-SHA256 key derivation (directional keys)      │\n├─────────────────────────────────────────────────────┤\n│  X25519 ECDH  (shared secret / forward secrecy)     │\n└─────────────────────────────────────────────────────┘"
      },
      {
        "title": "Security properties",
        "body": "AttackDefenceEavesdroppingAES-256-GCM encryptionMessage tamperingAES-GCM authentication tag (AEAD)ImpersonationEd25519 signature on every messageReplay attackNonce + monotonic counter deduplicationKey compromiseX25519 ephemeral sessions (forward secrecy)Hub compromiseHub stores only public keys; cannot decrypt"
      },
      {
        "title": "What the Hub can see",
        "body": "✅ Agent IDs (to route messages)\n✅ Public key bundles (required for discovery)\n✅ Metadata: sender, recipient, timestamp, message counter\n❌ Message contents (always encrypted)\n❌ Payload data (always encrypted)"
      },
      {
        "title": "Examples",
        "body": "FileWhat it showsexamples/01_simple_chat.pyTwo agents, basic send/receiveexamples/02_multi_agent.pyCoordinator + 4 workers, task distributionexamples/03_persistent_keys.pyKeys saved to disk, identity survives restartexamples/04_llm_agents.pyLLM agents (OpenAI / any API) in a pipeline\n\nRun any example:\n\npython examples/01_simple_chat.py"
      },
      {
        "title": "Agent(agent_id, hub=None, keypair_path=None, log_level=WARNING)",
        "body": "MethodDescriptionsend(recipient_id, text=\"\", **kwargs)Send encrypted messagesend_payload(recipient_id, payload: dict)Low-level sendon_message(handler)Register message handler (decorator or call)connect(peer_id)Pre-establish session (optional, auto-connects)connect_with_bundle(bundle)P2P: connect using public bundle directlylist_peers()List all peer IDs on the hubstatus()Dict with agent statefingerprintHuman-readable hex identity fingerprintpublic_bundleDict with public keys (share with peers)"
      },
      {
        "title": "LocalHub()",
        "body": "MethodDescriptionregister(agent)Register an agent (called automatically)deliver(envelope)Route an encrypted envelopeget_bundle(agent_id)Get a peer's public bundlelist_agents()List all registered agent IDsmessage_count()Number of messages routed"
      },
      {
        "title": "NetworkHub(host, port=7700)",
        "body": "Same interface as LocalHub, but communicates with a NetworkHubServer over TCP."
      },
      {
        "title": "NetworkHubServer(host=\"0.0.0.0\", port=7700)",
        "body": "MethodDescriptionstart(block=True)Start listening (block=False for background thread)"
      },
      {
        "title": "Low-level crypto (advanced)",
        "body": "from agentmesh.crypto import (\n    AgentKeyPair,        # key generation, serialisation, fingerprint\n    CryptoSession,       # encrypt / decrypt\n    perform_key_exchange,# X25519 ECDH → CryptoSession\n    seal,                # sign + encrypt (high-level)\n    unseal,              # decrypt + verify (high-level)\n    CryptoError,         # raised on any crypto failure\n)"
      },
      {
        "title": "CryptoError: Replay attack detected",
        "body": "You are sending the same encrypted envelope twice.\nEach call to send() produces a fresh envelope – do not re-use envelopes."
      },
      {
        "title": "CryptoError: Authentication tag mismatch",
        "body": "The envelope was modified in transit.\nCheck that your transport does not corrupt binary data (use JSON-safe base64)."
      },
      {
        "title": "ValueError: Peer 'xxx' not found on hub",
        "body": "The recipient has not registered with the hub yet.\nEnsure both agents are created with the same hub instance (LocalHub) or\nconnected to the same hub server (NetworkHub)."
      },
      {
        "title": "RuntimeError: No hub configured",
        "body": "You created Agent(\"name\") without a hub.\nPass hub=LocalHub() or hub=NetworkHub(...) to the constructor."
      },
      {
        "title": "Contributing",
        "body": "git clone https://github.com/cerbug45/AgentMesh.git\ncd AgentMesh\npip install -e \".[dev]\"\npytest -v\n\nIssues and PRs welcome at https://github.com/cerbug45/AgentMesh/issues"
      },
      {
        "title": "License",
        "body": "MIT © cerbug45 – see LICENSE"
      }
    ],
    "body": "AgentMesh SKILL.md\n\nWhatsApp-style end-to-end encrypted messaging for AI agents. GitHub: https://github.com/cerbug45/AgentMesh | Author: cerbug45\n\nWhat Is AgentMesh?\n\nAgentMesh gives every AI agent a cryptographic identity and lets agents exchange messages that are:\n\nProperty\tMechanism\nEncrypted\tAES-256-GCM authenticated encryption\nAuthenticated\tEd25519 digital signatures (per message)\nForward-secret\tX25519 ECDH ephemeral session keys\nTamper-proof\tAEAD authentication tag\nReplay-proof\tNonce + counter deduplication\nPrivate\tThe Hub (broker) never sees message contents\n\nNo TLS certificates. No servers required for local use. One pip install.\n\nInstallation\nRequirements\nPython 3.10 or newer\npip\nOption 1 – Install from GitHub (recommended)\npip install git+https://github.com/cerbug45/AgentMesh.git\n\nOption 2 – Clone and install locally\ngit clone https://github.com/cerbug45/AgentMesh.git\ncd AgentMesh\npip install .\n\nOption 3 – Development install (editable, with tests)\ngit clone https://github.com/cerbug45/AgentMesh.git\ncd AgentMesh\npip install -e \".[dev]\"\npytest           # run all tests\n\nVerify installation\npython -c \"import agentmesh; print(agentmesh.__version__)\"\n# → 1.0.0\n\nQuick Start (5 minutes)\nfrom agentmesh import Agent, LocalHub\n\nhub   = LocalHub()                  # in-process broker\nalice = Agent(\"alice\", hub=hub)     # keys generated automatically\nbob   = Agent(\"bob\",   hub=hub)\n\n@bob.on_message\ndef handle(msg):\n    print(f\"[{msg.recipient}] ← {msg.sender}: {msg.text}\")\n\nalice.send(\"bob\", text=\"Hello, Bob! This is end-to-end encrypted.\")\n\n\nOutput:\n\n[bob] ← alice: Hello, Bob! This is end-to-end encrypted.\n\nCore Concepts\nAgent\n\nAn Agent is an AI agent with a cryptographic identity (two key pairs):\n\nEd25519 identity key – signs every outgoing message\nX25519 exchange key – used for ECDH session establishment\nfrom agentmesh import Agent, LocalHub\n\nhub   = LocalHub()\nalice = Agent(\"alice\", hub=hub)\n\n# See the agent's fingerprint (share out-of-band to verify identity)\nprint(alice.fingerprint)\n# → a1b2:c3d4:e5f6:g7h8:i9j0:k1l2:m3n4:o5p6\n\nHub\n\nA Hub is the message router. It stores public key bundles (for discovery) and routes encrypted envelopes. It cannot decrypt messages.\n\nHub\tUse case\nLocalHub\tSingle Python process (demos, tests, notebooks)\nNetworkHub\tMulti-process / multi-machine (production)\nMessage\n@bob.on_message\ndef handle(msg):\n    msg.sender     # str  – sender agent_id\n    msg.recipient  # str  – recipient agent_id\n    msg.text       # str  – shortcut for msg.payload[\"text\"]\n    msg.type       # str  – shortcut for msg.payload[\"type\"] (default: \"message\")\n    msg.payload    # dict – full decrypted payload\n    msg.timestamp  # int  – milliseconds since epoch\n\nUsage Guide\nSending messages with extra data\nalice.send(\n    \"bob\",\n    text     = \"Run this task\",\n    task_id  = 42,\n    priority = \"high\",\n    data     = {\"key\": \"value\"},\n)\n\n\nAll keyword arguments beyond text are included in msg.payload.\n\nChaining handlers\n# Handler as decorator\n@alice.on_message\ndef handler_one(msg):\n    ...\n\n# Handler as lambda\nalice.on_message(lambda msg: print(msg.text))\n\n# Multiple handlers – all called in registration order\nalice.on_message(log_handler)\nalice.on_message(process_handler)\n\nPersistent keys\n\nSave keys to disk so an agent has the same identity across restarts:\n\nalice = Agent(\"alice\", hub=hub, keypair_path=\".keys/alice.json\")\n\nFile is created on first run (new keys).\nFile is loaded on subsequent runs (same keys = same fingerprint).\nStore this file securely – it contains the private key.\nPeer discovery\n# List all agents registered on the hub\npeers = alice.list_peers()   # → [\"bob\", \"carol\", \"dave\"]\n\n# Check agent status\nprint(alice.status())\n# {\n#   \"agent_id\": \"alice\",\n#   \"fingerprint\": \"a1b2:…\",\n#   \"active_sessions\": [\"bob\"],\n#   \"known_peers\": [\"bob\"],\n#   \"handlers\": 2\n# }\n\nNetwork Mode (multi-machine)\n1. Start the hub server\n\nOn the broker machine (or in its own terminal):\n\n# Option A – module\npython -m agentmesh.hub_server --host 0.0.0.0 --port 7700\n\n# Option B – entry-point (after pip install)\nagentmesh-hub --host 0.0.0.0 --port 7700\n\n2. Agents connect from anywhere\n# Machine A\nfrom agentmesh import Agent, NetworkHub\nhub   = NetworkHub(host=\"192.168.1.10\", port=7700)\nalice = Agent(\"alice\", hub=hub)\n\n# Machine B (different process / different computer)\nfrom agentmesh import Agent, NetworkHub\nhub = NetworkHub(host=\"192.168.1.10\", port=7700)\nbob = Agent(\"bob\", hub=hub)\n\nbob.on_message(lambda m: print(m.text))\nalice.send(\"bob\", text=\"Cross-machine encrypted message!\")\n\nNetwork hub architecture\n┌──────────────────────────────────────────────────────┐\n│                   NetworkHubServer                   │\n│  Stores public bundles.  Routes encrypted envelopes. │\n│  Cannot read message contents.                       │\n└──────────────────────┬───────────────────────────────┘\n                       │ TCP (newline-delimited JSON)\n           ┌───────────┼───────────┐\n           │           │           │\n      Agent A      Agent B      Agent C\n   (encrypted)  (encrypted)  (encrypted)\n\nSecurity Architecture\nCryptographic stack\n┌─────────────────────────────────────────────────────┐\n│  Application layer (dict payload)                   │\n├─────────────────────────────────────────────────────┤\n│  Ed25519 signature  (sender authentication)         │\n├─────────────────────────────────────────────────────┤\n│  AES-256-GCM  (confidentiality + integrity)         │\n├─────────────────────────────────────────────────────┤\n│  HKDF-SHA256 key derivation (directional keys)      │\n├─────────────────────────────────────────────────────┤\n│  X25519 ECDH  (shared secret / forward secrecy)     │\n└─────────────────────────────────────────────────────┘\n\nSecurity properties\nAttack\tDefence\nEavesdropping\tAES-256-GCM encryption\nMessage tampering\tAES-GCM authentication tag (AEAD)\nImpersonation\tEd25519 signature on every message\nReplay attack\tNonce + monotonic counter deduplication\nKey compromise\tX25519 ephemeral sessions (forward secrecy)\nHub compromise\tHub stores only public keys; cannot decrypt\nWhat the Hub can see\n✅ Agent IDs (to route messages)\n✅ Public key bundles (required for discovery)\n✅ Metadata: sender, recipient, timestamp, message counter\n❌ Message contents (always encrypted)\n❌ Payload data (always encrypted)\nExamples\nFile\tWhat it shows\nexamples/01_simple_chat.py\tTwo agents, basic send/receive\nexamples/02_multi_agent.py\tCoordinator + 4 workers, task distribution\nexamples/03_persistent_keys.py\tKeys saved to disk, identity survives restart\nexamples/04_llm_agents.py\tLLM agents (OpenAI / any API) in a pipeline\n\nRun any example:\n\npython examples/01_simple_chat.py\n\nAPI Reference\nAgent(agent_id, hub=None, keypair_path=None, log_level=WARNING)\nMethod\tDescription\nsend(recipient_id, text=\"\", **kwargs)\tSend encrypted message\nsend_payload(recipient_id, payload: dict)\tLow-level send\non_message(handler)\tRegister message handler (decorator or call)\nconnect(peer_id)\tPre-establish session (optional, auto-connects)\nconnect_with_bundle(bundle)\tP2P: connect using public bundle directly\nlist_peers()\tList all peer IDs on the hub\nstatus()\tDict with agent state\nfingerprint\tHuman-readable hex identity fingerprint\npublic_bundle\tDict with public keys (share with peers)\nLocalHub()\nMethod\tDescription\nregister(agent)\tRegister an agent (called automatically)\ndeliver(envelope)\tRoute an encrypted envelope\nget_bundle(agent_id)\tGet a peer's public bundle\nlist_agents()\tList all registered agent IDs\nmessage_count()\tNumber of messages routed\nNetworkHub(host, port=7700)\n\nSame interface as LocalHub, but communicates with a NetworkHubServer over TCP.\n\nNetworkHubServer(host=\"0.0.0.0\", port=7700)\nMethod\tDescription\nstart(block=True)\tStart listening (block=False for background thread)\nLow-level crypto (advanced)\nfrom agentmesh.crypto import (\n    AgentKeyPair,        # key generation, serialisation, fingerprint\n    CryptoSession,       # encrypt / decrypt\n    perform_key_exchange,# X25519 ECDH → CryptoSession\n    seal,                # sign + encrypt (high-level)\n    unseal,              # decrypt + verify (high-level)\n    CryptoError,         # raised on any crypto failure\n)\n\nTroubleshooting\nCryptoError: Replay attack detected\n\nYou are sending the same encrypted envelope twice. Each call to send() produces a fresh envelope – do not re-use envelopes.\n\nCryptoError: Authentication tag mismatch\n\nThe envelope was modified in transit. Check that your transport does not corrupt binary data (use JSON-safe base64).\n\nValueError: Peer 'xxx' not found on hub\n\nThe recipient has not registered with the hub yet. Ensure both agents are created with the same hub instance (LocalHub) or connected to the same hub server (NetworkHub).\n\nRuntimeError: No hub configured\n\nYou created Agent(\"name\") without a hub. Pass hub=LocalHub() or hub=NetworkHub(...) to the constructor.\n\nContributing\ngit clone https://github.com/cerbug45/AgentMesh.git\ncd AgentMesh\npip install -e \".[dev]\"\npytest -v\n\n\nIssues and PRs welcome at https://github.com/cerbug45/AgentMesh/issues\n\nLicense\n\nMIT © cerbug45 – see LICENSE"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/cerbug45/agentmesh",
    "publisherUrl": "https://clawhub.ai/cerbug45/agentmesh",
    "owner": "cerbug45",
    "version": "0.1.1",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/agentmesh",
    "downloadUrl": "https://openagent3.xyz/downloads/agentmesh",
    "agentUrl": "https://openagent3.xyz/skills/agentmesh/agent",
    "manifestUrl": "https://openagent3.xyz/skills/agentmesh/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/agentmesh/agent.md"
  }
}