From 7a06afc7ab7dec7227d41b89b1c5815a6f256b4f Mon Sep 17 00:00:00 2001 From: WeZZard Date: Mon, 2 Mar 2026 06:51:45 -0500 Subject: [PATCH 1/2] docs: add Setup section and A2A_NODE_ID to Configuration A2A_NODE_ID is the canonical env var read by getNodeId() in a2aProtocol.js but was not documented anywhere in SKILL.md. New agents installing this skill had no way to discover this without reading source code, leading to hardcoded node IDs in integration scripts and identity mixups between agents. Changes: - Add Setup section: node registration flow, claim URL, env var - Add A2A_NODE_ID row to Configuration table - Emphasize: never hardcode node IDs in scripts --- SKILL.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/SKILL.md b/SKILL.md index 359554a..ba1f54b 100644 --- a/SKILL.md +++ b/SKILL.md @@ -37,10 +37,31 @@ To run in an infinite loop (e.g., via cron or background process), use the `--lo node index.js --loop ``` +## Setup + +Before using this skill, register your node identity with the EvoMap network: + +1. Run the hello flow (via `evomap.js` or the EvoMap onboarding) to receive a `node_id` and claim code +2. Visit `https://evomap.ai/claim/` within 24 hours to bind the node to your account +3. Set the node identity in your environment: + +```bash +export A2A_NODE_ID=node_xxxxxxxxxxxx +``` + +Or in your agent config (e.g., `~/.openclaw/openclaw.json`): + +```json +{ "env": { "A2A_NODE_ID": "node_xxxxxxxxxxxx" } } +``` + +Do not hardcode the node ID in scripts. `getNodeId()` in `src/gep/a2aProtocol.js` reads `A2A_NODE_ID` automatically -- any script using the protocol layer will pick it up without extra configuration. + ## Configuration | Environment Variable | Default | Description | |---|---|---| +| `A2A_NODE_ID` | (required) | Your EvoMap node identity. Set this after node registration -- never hardcode it in scripts. Read automatically by `getNodeId()` in `a2aProtocol.js`. | | `EVOLVE_ALLOW_SELF_MODIFY` | `false` | Allow evolution to modify evolver's own source code. **NOT recommended for production.** Enabling this can cause instability -- the evolver may introduce bugs into its own prompt generation, validation, or solidify logic, leading to cascading failures that require manual intervention. Only enable for controlled experiments. | | `EVOLVE_LOAD_MAX` | `2.0` | Maximum 1-minute load average before evolver backs off. | | `EVOLVE_STRATEGY` | `balanced` | Evolution strategy: `balanced`, `innovate`, `harden`, `repair-only`, `early-stabilize`, `steady-state`, or `auto`. | From 5396c527245fd51a3eda13045b5cac406dd68389 Mon Sep 17 00:00:00 2001 From: WeZZard Date: Mon, 2 Mar 2026 06:53:53 -0500 Subject: [PATCH 2/2] feat: warn when A2A_NODE_ID is unset and falling back to device fingerprint Without this warning, agents that forget to set A2A_NODE_ID silently get a device-fingerprint-based node ID that may change across machines or environments, causing identity mixups with no visible signal. The warning directs users to set A2A_NODE_ID and points to SKILL.md for registration instructions. --- src/gep/a2aProtocol.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/gep/a2aProtocol.js b/src/gep/a2aProtocol.js index 62aee45..bf6bd2a 100644 --- a/src/gep/a2aProtocol.js +++ b/src/gep/a2aProtocol.js @@ -83,6 +83,13 @@ function getNodeId() { return _cachedNodeId; } + // No explicit node ID found -- compute one from device fingerprint. + // Set A2A_NODE_ID in your environment to use a stable, registered identity instead. + // See SKILL.md Setup section for registration instructions. + console.warn('[a2aProtocol] A2A_NODE_ID is not set. Computing node ID from device fingerprint. ' + + 'This ID may change across machines or environments. ' + + 'Set A2A_NODE_ID after registering at https://evomap.ai to use a stable identity.'); + const deviceId = getDeviceId(); const agentName = process.env.AGENT_NAME || 'default'; const raw = deviceId + '|' + agentName + '|' + process.cwd();