{"_id":"@drakon-systems/ekho-openclaw-plugin","_rev":"15-5ae62c36ffe0438fedd1ee67cff370bc","name":"@drakon-systems/ekho-openclaw-plugin","dist-tags":{"latest":"0.5.4"},"versions":{"0.3.1":{"name":"@drakon-systems/ekho-openclaw-plugin","version":"0.3.1","_id":"@drakon-systems/ekho-openclaw-plugin@0.3.1","maintainers":[{"name":"cyborgninja","email":"m.kyriacou101@gmail.com"}],"dist":{"shasum":"d7d6f89393302db1a4989a43b2afb6bde49d4e87","tarball":"https://registry.npmjs.org/@drakon-systems/ekho-openclaw-plugin/-/ekho-openclaw-plugin-0.3.1.tgz","fileCount":13,"integrity":"sha512-A97xueVkP4sUM0D8TEPYoA4tAp8M1MPlaVNubOBpDCsPSS23ushE8bnFfUQlF0xNPxx2h2CVjHVWi3htMqH7iQ==","signatures":[{"sig":"MEQCIDyXvHf+YYi4O+A/gpCC65kq8lc0GCYmRvwQJwVZ4lH4AiBF7m2T/VvBHP+s2wf+PtdGwK0vOOeNg1lXkXHvigLteQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":323750},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.0.0"},"gitHead":"08156ffc754b347a1fcd5cc4f64e141caaaafdb0","scripts":{"test":"vitest run","build":"node build.mjs && tsc -p tsconfig.json --emitDeclarationOnly","typecheck":"tsc --noEmit","plugin:build":"npm run build && openclaw plugins build --entry ./dist/index.js","plugin:validate":"npm run build && openclaw plugins validate --entry ./dist/index.js"},"_npmUser":{"name":"cyborgninja","email":"m.kyriacou101@gmail.com"},"openclaw":{"extensions":["./dist/index.js"]},"_npmVersion":"10.9.8","description":"OpenClaw plugin that connects agents to an Ekho relay so they can message and coordinate with the rest of the fleet.","directories":{},"_nodeVersion":"22.23.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.27.7","typebox":"^1.1.38","@types/node":"^25.5.0","@drakon-systems/ekho-sdk":"*"},"peerDependencies":{"openclaw":">=2026.5.17"},"peerDependenciesMeta":{"openclaw":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ekho-openclaw-plugin_0.3.1_1785649331534_0.5968096069965789","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@drakon-systems/ekho-openclaw-plugin","version":"0.3.2","_id":"@drakon-systems/ekho-openclaw-plugin@0.3.2","maintainers":[{"name":"cyborgninja","email":"m.kyriacou101@gmail.com"}],"dist":{"shasum":"f0dba6075311000758717fab1e4c68a7844c3a04","tarball":"https://registry.npmjs.org/@drakon-systems/ekho-openclaw-plugin/-/ekho-openclaw-plugin-0.3.2.tgz","fileCount":13,"integrity":"sha512-UBKNyNxhGMdI3XgB9WP9+X2eslG1B8b/Ba4Tktky0JHM3LL9gGwCUY/RcxkvQrF9+vdF6nsAh+lmX1Wnnum1ig==","signatures":[{"sig":"MEUCIALpvCbS535sbg76DafZLVopNSo24BPGAjETFi+62hGtAiEAgpFQnMBtR9UCYJ2p7GZgXklkr+vhq9xZ5roE17f8iq4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":323750},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.0.0"},"gitHead":"1a652e20509fec0f41808e70249ffe2a45c9a58a","scripts":{"test":"vitest run","build":"node build.mjs && tsc -p tsconfig.json --emitDeclarationOnly","typecheck":"tsc --noEmit","plugin:build":"npm run build && openclaw plugins build --entry ./dist/index.js","plugin:validate":"npm run build && openclaw plugins validate --entry ./dist/index.js"},"_npmUser":{"name":"cyborgninja","email":"m.kyriacou101@gmail.com"},"openclaw":{"extensions":["./dist/index.js"]},"_npmVersion":"10.9.8","description":"OpenClaw plugin that connects agents to an Ekho relay so they can message and coordinate with the rest of the fleet.","directories":{},"_nodeVersion":"22.23.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.27.7","typebox":"^1.1.38","@types/node":"^25.5.0","@drakon-systems/ekho-sdk":"*"},"peerDependencies":{"openclaw":">=2026.5.17"},"peerDependenciesMeta":{"openclaw":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ekho-openclaw-plugin_0.3.2_1785653626312_0.8690964035125179","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@drakon-systems/ekho-openclaw-plugin","version":"0.4.0","_id":"@drakon-systems/ekho-openclaw-plugin@0.4.0","maintainers":[{"name":"cyborgninja","email":"m.kyriacou101@gmail.com"}],"dist":{"shasum":"543af377a55c555b54403615c3409b641c412ef7","tarball":"https://registry.npmjs.org/@drakon-systems/ekho-openclaw-plugin/-/ekho-openclaw-plugin-0.4.0.tgz","fileCount":14,"integrity":"sha512-KZ0D65QN27t3i1l05fKQPEHH6qeIgX8hPhbscESPuOSQF5MhSDSxUR+ot0kWa+jm6BCF/DUj1h41VPQ0pSdgCA==","signatures":[{"sig":"MEQCIBMc8hoz0MgEfIgt4zCempJ0JNQyGuPP3+Ox8EqsqPXTAiBr+4drKRs694FLZetGydVgcXAVJyDk3Zo5Rf7NksfH5w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":335523},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.0.0"},"gitHead":"70c20b7fe62b912e0e7ffdde98307ee8799d4404","scripts":{"test":"vitest run","build":"node build.mjs && tsc -p tsconfig.json --emitDeclarationOnly","typecheck":"tsc --noEmit","plugin:build":"npm run build && openclaw plugins build --entry ./dist/index.js","plugin:validate":"npm run build && openclaw plugins validate --entry ./dist/index.js"},"_npmUser":{"name":"cyborgninja","email":"m.kyriacou101@gmail.com"},"openclaw":{"extensions":["./dist/index.js"]},"_npmVersion":"10.9.8","description":"OpenClaw plugin that connects agents to an Ekho relay so they can message and coordinate with the rest of the fleet.","directories":{},"_nodeVersion":"22.23.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.27.7","typebox":"^1.1.38","@types/node":"^25.5.0","@drakon-systems/ekho-sdk":"*"},"peerDependencies":{"openclaw":">=2026.5.17"},"peerDependenciesMeta":{"openclaw":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ekho-openclaw-plugin_0.4.0_1786254494916_0.7470130243467243","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@drakon-systems/ekho-openclaw-plugin","version":"0.4.1","_id":"@drakon-systems/ekho-openclaw-plugin@0.4.1","maintainers":[{"name":"cyborgninja","email":"m.kyriacou101@gmail.com"}],"dist":{"shasum":"7b1bea04e83253b3b214514f64c89608ba8c9e55","tarball":"https://registry.npmjs.org/@drakon-systems/ekho-openclaw-plugin/-/ekho-openclaw-plugin-0.4.1.tgz","fileCount":14,"integrity":"sha512-DaVLO1tDQJxhnKpyDEakt1a6Y16F+fqItA1+rBTXOxnl578N2vltjCB9ImqrE8t+ifMRu0+WgOtpjG7myqAaXQ==","signatures":[{"sig":"MEYCIQD4uU6vC2hLbEFoieS7RBi2C5TrNWfjynzvh9yLUwhDfwIhAM5LRoaEvhgoR5DQLe0Ar4LjcgQjKbfQa9CJR2mhpekm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":340151},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.0.0"},"gitHead":"7659d75544566ed33bf554bc3e40201fb714b705","scripts":{"test":"vitest run","build":"node build.mjs && tsc -p tsconfig.json --emitDeclarationOnly","typecheck":"tsc --noEmit","plugin:build":"npm run build && openclaw plugins build --entry ./dist/index.js","plugin:validate":"npm run build && openclaw plugins validate --entry ./dist/index.js"},"_npmUser":{"name":"cyborgninja","email":"m.kyriacou101@gmail.com"},"openclaw":{"extensions":["./dist/index.js"]},"_npmVersion":"10.9.8","description":"OpenClaw plugin that connects agents to an Ekho relay so they can message and coordinate with the rest of the fleet.","directories":{},"_nodeVersion":"22.23.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.27.7","typebox":"^1.1.38","@types/node":"^25.5.0","@drakon-systems/ekho-sdk":"*"},"peerDependencies":{"openclaw":">=2026.5.17"},"peerDependenciesMeta":{"openclaw":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ekho-openclaw-plugin_0.4.1_1786360489103_0.566224282914402","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@drakon-systems/ekho-openclaw-plugin","version":"0.4.2","_id":"@drakon-systems/ekho-openclaw-plugin@0.4.2","maintainers":[{"name":"cyborgninja","email":"m.kyriacou101@gmail.com"}],"dist":{"shasum":"70be8eb94f272b0306eeaa87635b9489ed476d56","tarball":"https://registry.npmjs.org/@drakon-systems/ekho-openclaw-plugin/-/ekho-openclaw-plugin-0.4.2.tgz","fileCount":17,"integrity":"sha512-30NbxXtqmPdZBHvqkK4ihTD6VEFtVYGd6+lbY0aFls154DnyuQnkNTyRGgZ7HqBThbM3RS+uaXQQryC0pNWrpA==","signatures":[{"sig":"MEUCIQD0PwVNr8ZKJ4u/I0CFLn92WzrRVL5Ecj9YznjvTJN6tAIgMo6a6Db7QS67EKGDfGoRdu1kXLak3Gtb9MDt2OWws2U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":415248},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.0.0"},"gitHead":"b39759fec407d610975bf852ed3fab61c82d7e70","scripts":{"test":"vitest run","build":"node build.mjs && tsc -p tsconfig.json --emitDeclarationOnly","typecheck":"tsc --noEmit","plugin:build":"npm run build && openclaw plugins build --entry ./dist/index.js","plugin:validate":"npm run build && openclaw plugins validate --entry ./dist/index.js"},"_npmUser":{"name":"cyborgninja","email":"m.kyriacou101@gmail.com"},"openclaw":{"extensions":["./dist/index.js"]},"_npmVersion":"10.9.8","description":"OpenClaw plugin that connects agents to an Ekho relay so they can message and coordinate with the rest of the fleet.","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.27.7","typebox":"^1.1.38","@types/node":"^25.5.0","@drakon-systems/ekho-sdk":"*"},"peerDependencies":{"openclaw":">=2026.5.17"},"peerDependenciesMeta":{"openclaw":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ekho-openclaw-plugin_0.4.2_1786976455393_0.27638752381687137","host":"s3://npm-registry-packages-npm-production"}},"0.4.4":{"name":"@drakon-systems/ekho-openclaw-plugin","version":"0.4.4","_id":"@drakon-systems/ekho-openclaw-plugin@0.4.4","maintainers":[{"name":"cyborgninja","email":"m.kyriacou101@gmail.com"}],"dist":{"shasum":"52ad87c6783ebdc2e0f2e0a2f5e20c3a772eee68","tarball":"https://registry.npmjs.org/@drakon-systems/ekho-openclaw-plugin/-/ekho-openclaw-plugin-0.4.4.tgz","fileCount":17,"integrity":"sha512-BRPxxGLKUy8fuNud/I3wsVddiINv9v3CSVY6r5cNpCA9jvrUoEZWdzbQi5zKgoKBpH2ukZHtJr788/4Os+9DrA==","signatures":[{"sig":"MEQCIEuT2MLsuo9cyuziXOEsBO3eTYso2T5O7rLtbB2/QKaxAiAcL2QvJlPt1MQL6DRiwbA5ebDyl1rhimyTPVbHrYZFJA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":417016},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.0.0"},"gitHead":"20d51867666f6189be0425626078219067bb787a","scripts":{"test":"vitest run","build":"node build.mjs && tsc -p tsconfig.json --emitDeclarationOnly","typecheck":"tsc --noEmit","plugin:build":"npm run build && openclaw plugins build --entry ./dist/index.js","plugin:validate":"npm run build && openclaw plugins validate --entry ./dist/index.js"},"_npmUser":{"name":"cyborgninja","email":"m.kyriacou101@gmail.com"},"openclaw":{"extensions":["./dist/index.js"]},"_npmVersion":"10.9.8","description":"OpenClaw plugin that connects agents to an Ekho relay so they can message and coordinate with the rest of the fleet.","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.27.7","typebox":"^1.1.38","@types/node":"^25.5.0","@drakon-systems/ekho-sdk":"*"},"peerDependencies":{"openclaw":">=2026.5.17"},"peerDependenciesMeta":{"openclaw":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ekho-openclaw-plugin_0.4.4_1787129292302_0.12500277078203959","host":"s3://npm-registry-packages-npm-production"}},"0.4.5":{"name":"@drakon-systems/ekho-openclaw-plugin","version":"0.4.5","_id":"@drakon-systems/ekho-openclaw-plugin@0.4.5","maintainers":[{"name":"cyborgninja","email":"m.kyriacou101@gmail.com"}],"dist":{"shasum":"422bad08c29ab3931611a5c7567aceaa69c05040","tarball":"https://registry.npmjs.org/@drakon-systems/ekho-openclaw-plugin/-/ekho-openclaw-plugin-0.4.5.tgz","fileCount":17,"integrity":"sha512-C/M6e8RfUSRjevLKbi1jRjqpyzulG6r2IPike8u6QpI4hIbdrvUvvNOVkjfucedbhKgwTN+N11Ez4prylgXdOA==","signatures":[{"sig":"MEUCIQDkKwmhVD9J9IW7/oNv9afiQaerHIT/W2YQzE2zH+rPAQIgK7Gl4ZajoLsuigWNfPH3B1uA3SzHC6e7rhi+/CQNkWE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":422816},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.0.0"},"scripts":{"test":"vitest run","build":"node build.mjs && tsc -p tsconfig.json --emitDeclarationOnly","typecheck":"tsc --noEmit","plugin:build":"npm run build && openclaw plugins build --entry ./dist/index.js","plugin:validate":"npm run build && openclaw plugins validate --entry ./dist/index.js"},"_npmUser":{"name":"cyborgninja","email":"m.kyriacou101@gmail.com"},"openclaw":{"extensions":["./dist/index.js"]},"_npmVersion":"10.9.8","description":"OpenClaw plugin that connects agents to an Ekho relay so they can message and coordinate with the rest of the fleet.","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.27.7","typebox":"^1.1.38","@types/node":"^25.5.0","@drakon-systems/ekho-sdk":"*"},"peerDependencies":{"openclaw":">=2026.5.17"},"peerDependenciesMeta":{"openclaw":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ekho-openclaw-plugin_0.4.5_1787327943701_0.9481056908458554","host":"s3://npm-registry-packages-npm-production"}},"0.4.6":{"name":"@drakon-systems/ekho-openclaw-plugin","version":"0.4.6","_id":"@drakon-systems/ekho-openclaw-plugin@0.4.6","maintainers":[{"name":"cyborgninja","email":"m.kyriacou101@gmail.com"}],"dist":{"shasum":"2011bd2111dbbf7f3095672ea3e719b3c1b46961","tarball":"https://registry.npmjs.org/@drakon-systems/ekho-openclaw-plugin/-/ekho-openclaw-plugin-0.4.6.tgz","fileCount":17,"integrity":"sha512-22Xo58B23xar1id2n0S7d1gajKQozzzm7Se4UXOFQyRUH8qqc1UARRellCreoeX2W6QYjzHoCdZ1vcimkomcug==","signatures":[{"sig":"MEUCIQDgabrTjNBHWp+bsJjMXRlHJ7SNuBhcVeXqevqJFKpo2gIgR+LMUpEKxd5ulYAhC4cdWGg7xGW5Xl6JjVjs/AU8YMQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":422965},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.0.0"},"gitHead":"5ae85aba164305e8d8f91db21137a9a112266ca2","scripts":{"test":"vitest run","build":"node build.mjs && tsc -p tsconfig.json --emitDeclarationOnly","typecheck":"tsc --noEmit","plugin:build":"npm run build && openclaw plugins build --entry ./dist/index.js","plugin:validate":"npm run build && openclaw plugins validate --entry ./dist/index.js"},"_npmUser":{"name":"cyborgninja","email":"m.kyriacou101@gmail.com"},"openclaw":{"extensions":["./dist/index.js"]},"_npmVersion":"10.9.8","description":"OpenClaw plugin that connects agents to an Ekho relay so they can message and coordinate with the rest of the fleet.","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.27.7","typebox":"^1.1.38","@types/node":"^25.5.0","@drakon-systems/ekho-sdk":"*"},"peerDependencies":{"openclaw":">=2026.5.17"},"peerDependenciesMeta":{"openclaw":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ekho-openclaw-plugin_0.4.6_1787825263879_0.6278097756049912","host":"s3://npm-registry-packages-npm-production"}},"0.4.8":{"name":"@drakon-systems/ekho-openclaw-plugin","version":"0.4.8","_id":"@drakon-systems/ekho-openclaw-plugin@0.4.8","maintainers":[{"name":"cyborgninja","email":"m.kyriacou101@gmail.com"}],"dist":{"shasum":"a7b3fc6e6204ffcdd6ad3be6ff9d73fcc388dc73","tarball":"https://registry.npmjs.org/@drakon-systems/ekho-openclaw-plugin/-/ekho-openclaw-plugin-0.4.8.tgz","fileCount":17,"integrity":"sha512-nEz/gXTiVPeENhpuEsz0V4smrYiTjGImcs8nY4tZ4eQcD5ia0EqVzOJ5UkNX8h3zt6bMNIBlakvgKRd30SQZGA==","signatures":[{"sig":"MEUCIQCw9cdTPiaJKU/PZv4WAAdt0UqYotIgrqF+v8Rry9hR0QIgJ0tygC5TR55m/x512RuVgu5jA3eI1zleh92Ul4mwO2s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":420801},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.0.0"},"gitHead":"fd4d53b32b605fa8e45687796fae87039de8ad71","scripts":{"test":"vitest run","build":"node build.mjs && tsc -p tsconfig.json --emitDeclarationOnly","typecheck":"tsc --noEmit","plugin:build":"npm run build && openclaw plugins build --entry ./dist/index.js","plugin:validate":"npm run build && openclaw plugins validate --entry ./dist/index.js"},"_npmUser":{"name":"cyborgninja","email":"m.kyriacou101@gmail.com"},"openclaw":{"extensions":["./dist/index.js"]},"_npmVersion":"10.9.8","description":"OpenClaw plugin that connects agents to an Ekho relay so they can message and coordinate with the rest of the fleet.","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.27.7","typebox":"^1.1.38","@types/node":"^25.5.0","@drakon-systems/ekho-sdk":"*"},"peerDependencies":{"openclaw":">=2026.5.17"},"peerDependenciesMeta":{"openclaw":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ekho-openclaw-plugin_0.4.8_1788185614590_0.8477462602304302","host":"s3://npm-registry-packages-npm-production"}},"0.4.9":{"name":"@drakon-systems/ekho-openclaw-plugin","version":"0.4.9","_id":"@drakon-systems/ekho-openclaw-plugin@0.4.9","maintainers":[{"name":"cyborgninja","email":"m.kyriacou101@gmail.com"}],"dist":{"shasum":"edc29824a3bd2003afa481f48ca0fa6da3f1c1ca","tarball":"https://registry.npmjs.org/@drakon-systems/ekho-openclaw-plugin/-/ekho-openclaw-plugin-0.4.9.tgz","fileCount":17,"integrity":"sha512-YtUShgrs0uaYpHaG+TKLuVznuSdOtAOZoCJzS/xCaop04yPY54rnD6nYcggctT/42v6ASwoQCYOQUCyavLuW0A==","signatures":[{"sig":"MEQCICCnA50iHKon15Dabm6mFuH45xjqkQLvt826flrQaj1CAiAZwo9POUKbcFUNS+oCDYHpRmfd5Gpdn95ldEvCIZVaZA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":421059},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.0.0"},"gitHead":"0b65627c4c38204817f46ffd86423c01756da4b2","scripts":{"test":"vitest run","build":"node build.mjs && tsc -p tsconfig.json --emitDeclarationOnly","typecheck":"tsc --noEmit","plugin:build":"npm run build && openclaw plugins build --entry ./dist/index.js","plugin:validate":"npm run build && openclaw plugins validate --entry ./dist/index.js"},"_npmUser":{"name":"cyborgninja","email":"m.kyriacou101@gmail.com"},"openclaw":{"extensions":["./dist/index.js"]},"_npmVersion":"10.9.8","description":"OpenClaw plugin that connects agents to an Ekho relay so they can message and coordinate with the rest of the fleet.","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.27.7","typebox":"^1.1.38","@types/node":"^25.5.0","@drakon-systems/ekho-sdk":"*"},"peerDependencies":{"openclaw":">=2026.5.17"},"peerDependenciesMeta":{"openclaw":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ekho-openclaw-plugin_0.4.9_1789290463292_0.11845850126052349","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@drakon-systems/ekho-openclaw-plugin","version":"0.5.0","_id":"@drakon-systems/ekho-openclaw-plugin@0.5.0","maintainers":[{"name":"cyborgninja","email":"m.kyriacou101@gmail.com"}],"dist":{"shasum":"b300b0b14369ead54f9e5be02b08669ae7e9911d","tarball":"https://registry.npmjs.org/@drakon-systems/ekho-openclaw-plugin/-/ekho-openclaw-plugin-0.5.0.tgz","fileCount":17,"integrity":"sha512-ql94oU6SXlgEZcWp6JT7zTO0cSvxkP2kgnoBotZHPu7NDayhpE4HdHInjw7IjtcyCrbkff577YhwNgu3IY3EhQ==","signatures":[{"sig":"MEQCIDEmhtke9V3UdL3OdOqecW44XGgGjz26WyFV2UJaEYF8AiAksSPuk+O6rQFJQJRFAy2bKU2W58uCMsQSEO+Z24k+TA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDAW0aHucRxn5D87dHHAIRdH0v/4uhG7pPPufnQ6BaxMAIgLKVa4Gt5YG0BfpEzZ+iOghccxXJOHOsfQ9voHSzKmPY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":431094},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.0.0"},"gitHead":"5c1a8e472b958b34d8cb06c122a6f37f49741ec3","scripts":{"test":"vitest run","build":"node build.mjs && tsc -p tsconfig.json --emitDeclarationOnly","typecheck":"tsc --noEmit","plugin:build":"npm run build && openclaw plugins build --entry ./dist/index.js","plugin:validate":"npm run build && openclaw plugins validate --entry ./dist/index.js"},"_npmUser":{"name":"cyborgninja","email":"m.kyriacou101@gmail.com"},"openclaw":{"extensions":["./dist/index.js"]},"_npmVersion":"10.9.8","description":"OpenClaw plugin that connects agents to an Ekho relay so they can message and coordinate with the rest of the fleet.","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.27.7","typebox":"^1.1.38","@types/node":"^25.5.0","@drakon-systems/ekho-sdk":"*"},"peerDependencies":{"openclaw":">=2026.5.17"},"peerDependenciesMeta":{"openclaw":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ekho-openclaw-plugin_0.5.0_1789982289550_0.3004395142068499","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@drakon-systems/ekho-openclaw-plugin","version":"0.5.1","_id":"@drakon-systems/ekho-openclaw-plugin@0.5.1","maintainers":[{"name":"cyborgninja","email":"m.kyriacou101@gmail.com"}],"dist":{"shasum":"3b6c3d2675cf249639ca0dc26ab1d65cecdb579c","tarball":"https://registry.npmjs.org/@drakon-systems/ekho-openclaw-plugin/-/ekho-openclaw-plugin-0.5.1.tgz","fileCount":17,"integrity":"sha512-x0gce3lzh2oDbLv9OLAFnvzpDp4M9I00AkKBqaTKAMme2oagrFUrhmccozcdimaTOAgMF64F1fn0pYsiA8qcjA==","signatures":[{"sig":"MEYCIQCyBP3e3K/vkUc536TDB1pFf0AgZSN2zBoMPX0CCgBchAIhAN/ECttqARMfTJQioBfxChyqC0CEeKVBW8Dq8Oufw1uW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDCysFuEClXjW5s36WbS/LedGnOyw6jdlrd6GJui8LScQIhAIY2jTJxhqznunytEcX1dC2q6d+vHOlDPVsZFt+PzDnx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":431094},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.0.0"},"gitHead":"5dcda45eae6929aad84ea2f4edf8b530bd093d0c","scripts":{"test":"vitest run","build":"node build.mjs && tsc -p tsconfig.json --emitDeclarationOnly","typecheck":"tsc --noEmit","plugin:build":"npm run build && openclaw plugins build --entry ./dist/index.js","plugin:validate":"npm run build && openclaw plugins validate --entry ./dist/index.js"},"_npmUser":{"name":"cyborgninja","email":"m.kyriacou101@gmail.com"},"openclaw":{"extensions":["./dist/index.js"]},"_npmVersion":"10.9.8","description":"OpenClaw plugin that connects agents to an Ekho relay so they can message and coordinate with the rest of the fleet.","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.27.7","typebox":"^1.1.38","@types/node":"^25.5.0","@drakon-systems/ekho-sdk":"*"},"peerDependencies":{"openclaw":">=2026.5.17"},"peerDependenciesMeta":{"openclaw":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ekho-openclaw-plugin_0.5.1_1790070774650_0.5698777548850935","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"@drakon-systems/ekho-openclaw-plugin","version":"0.5.2","_id":"@drakon-systems/ekho-openclaw-plugin@0.5.2","maintainers":[{"name":"cyborgninja","email":"m.kyriacou101@gmail.com"}],"dist":{"shasum":"82549740ebe5f1813f017225c4d8a8495e927449","tarball":"https://registry.npmjs.org/@drakon-systems/ekho-openclaw-plugin/-/ekho-openclaw-plugin-0.5.2.tgz","fileCount":17,"integrity":"sha512-DYh3lbo5iWygl3padlKr06fIR7Bss0AkC60LCNPMHGnjte6Xw4mtYTm2hDJOL3S1bdW7u0QTISAb6yi7KyUr6g==","signatures":[{"sig":"MEYCIQCf7P81T7m2XzE/Xhx/iP/jYh+NIwXeo0P4aQiH/CsiMwIhAJK2I2NxEI69YBXYzQWoykZMGPqBpEuGqi0l/HY1zYXZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDW2NDWVGrrj7+f5+dy1KlBD2SC+Hx3KgtE9CK373szdQIgRwPShGEuVDaNPulYMPDLhBBsQ7ijTtFHjKvvqoKNotM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":432743},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.0.0"},"gitHead":"d308b319fdac86d9eeb584e9b17928eb94806fe2","scripts":{"test":"vitest run","build":"node build.mjs && tsc -p tsconfig.json --emitDeclarationOnly","typecheck":"tsc --noEmit","plugin:build":"npm run build && openclaw plugins build --entry ./dist/index.js","plugin:validate":"npm run build && openclaw plugins validate --entry ./dist/index.js"},"_npmUser":{"name":"cyborgninja","email":"m.kyriacou101@gmail.com"},"openclaw":{"extensions":["./dist/index.js"]},"_npmVersion":"10.9.8","description":"OpenClaw plugin that connects agents to an Ekho relay so they can message and coordinate with the rest of the fleet.","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.27.7","typebox":"^1.1.38","@types/node":"^25.5.0","@drakon-systems/ekho-sdk":"*"},"peerDependencies":{"openclaw":">=2026.5.17"},"peerDependenciesMeta":{"openclaw":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ekho-openclaw-plugin_0.5.2_1790154585458_0.5135046519874154","host":"s3://npm-registry-packages-npm-production"}},"0.5.3":{"name":"@drakon-systems/ekho-openclaw-plugin","version":"0.5.3","_id":"@drakon-systems/ekho-openclaw-plugin@0.5.3","maintainers":[{"name":"cyborgninja","email":"m.kyriacou101@gmail.com"}],"dist":{"shasum":"65e8a172b6ad87abf7342814135855b2b3015167","tarball":"https://registry.npmjs.org/@drakon-systems/ekho-openclaw-plugin/-/ekho-openclaw-plugin-0.5.3.tgz","fileCount":17,"integrity":"sha512-gnpXsyd7CGfYYLNtmZAbJTk970Rrn5eKsgOr2hd1zHhE4KgXqPt6A8ZjtJi2dmheVi06dwdUbwswCrSyf8YMtQ==","signatures":[{"sig":"MEUCIQCyInVwh2z3IWZ3t8gbSLaBDVJ1M+ye/2me003qWWM27AIgOfo8BTiEfGAzGCNaYXoXbgCevoW2odjivRqOvGlmGiU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCICC2lhArgd92PQKgrRnvqKZuPHCzhNd4E8deCH7/+j1HAiBI8w6jHE7CDteutNYAvN/vuqqph0lH3TqEALrN/oMZaA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":456785},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.0.0"},"gitHead":"0495dcb6e0c7245e722e282d688b7c98eab51b85","scripts":{"test":"vitest run","build":"node build.mjs && tsc -p tsconfig.json --emitDeclarationOnly","typecheck":"tsc --noEmit","plugin:build":"npm run build && openclaw plugins build --entry ./dist/index.js","plugin:validate":"npm run build && openclaw plugins validate --entry ./dist/index.js"},"_npmUser":{"name":"cyborgninja","email":"m.kyriacou101@gmail.com"},"openclaw":{"extensions":["./dist/index.js"]},"_npmVersion":"10.9.8","description":"OpenClaw plugin that connects agents to an Ekho relay so they can message and coordinate with the rest of the fleet.","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.27.7","typebox":"^1.1.38","@types/node":"^25.5.0","@drakon-systems/ekho-sdk":"*"},"peerDependencies":{"openclaw":">=2026.5.17"},"peerDependenciesMeta":{"openclaw":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ekho-openclaw-plugin_0.5.3_1790180278813_0.4686030159095642","host":"s3://npm-registry-packages-npm-production"}},"0.5.4":{"_id":"@drakon-systems/ekho-openclaw-plugin@0.5.4","dist":{"shasum":"0e97aa86e775f15d522336a37172e1a2430441b8","tarball":"https://registry.npmjs.org/@drakon-systems/ekho-openclaw-plugin/-/ekho-openclaw-plugin-0.5.4.tgz","fileCount":17,"integrity":"sha512-d89J3C5gX/bxtVwga8sAH8cZrsKkHP9/vmM2YFuXUFwFsOCSqb5B9GYyY+aUYZSAzBaotep2LnuWP77GX/8rYA==","signatures":[{"sig":"MEYCIQD5zsKC2bmpswpeAiI1mx9oVcMoY0dCvS/fVddNKuU8gQIhAOfNGv2/yGv13eNRbSkKSNV9wWbKxTvktpQ4h2Pgl+Rn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQD1VWRqxrwg17JqH0hmSaeG8PmV8UAaNvG68c3D16K+qQIgGNnJFJ83g7UsaBtu9WLMrxwVsCl0rh6UBcIvi49118w="}],"unpackedSize":456777},"main":"./dist/index.js","name":"@drakon-systems/ekho-openclaw-plugin","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.0.0"},"gitHead":"2ea596f8185e9746731c48eae5b6ed7abca94156","scripts":{"test":"vitest run","build":"node build.mjs && tsc -p tsconfig.json --emitDeclarationOnly","typecheck":"tsc --noEmit","plugin:build":"npm run build && openclaw plugins build --entry ./dist/index.js","plugin:validate":"npm run build && openclaw plugins validate --entry ./dist/index.js"},"version":"0.5.4","_npmUser":{"name":"cyborgninja","email":"m.kyriacou101@gmail.com"},"openclaw":{"extensions":["./dist/index.js"]},"_npmVersion":"10.9.8","description":"OpenClaw plugin that connects agents to an Ekho relay so they can message and coordinate with the rest of the fleet.","directories":{},"maintainers":[{"name":"cyborgninja","email":"m.kyriacou101@gmail.com"}],"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.27.7","typebox":"^1.1.38","@types/node":"^25.5.0","@drakon-systems/ekho-sdk":"*"},"peerDependencies":{"openclaw":">=2026.5.17"},"peerDependenciesMeta":{"openclaw":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ekho-openclaw-plugin_0.5.4_1790241448631_0.7103099067956682"}}},"time":{"created":"2026-08-02T05:42:11.388Z","modified":"2026-09-24T09:17:28.941Z","0.3.1":"2026-08-02T05:42:11.686Z","0.3.2":"2026-08-02T06:53:46.515Z","0.4.0":"2026-08-09T05:48:15.052Z","0.4.1":"2026-08-10T11:14:49.332Z","0.4.2":"2026-08-17T14:20:55.582Z","0.4.4":"2026-08-19T08:48:12.432Z","0.4.5":"2026-08-21T15:59:03.844Z","0.4.6":"2026-08-27T10:07:44.022Z","0.4.8":"2026-08-31T14:13:34.741Z","0.4.9":"2026-09-13T09:07:43.457Z","0.5.0":"2026-09-21T09:18:09.631Z","0.5.1":"2026-09-22T09:52:54.861Z","0.5.2":"2026-09-23T09:09:45.552Z","0.5.3":"2026-09-23T16:17:58.895Z","0.5.4":"2026-09-24T09:17:28.726Z"},"description":"OpenClaw plugin that connects agents to an Ekho relay so they can message and coordinate with the rest of the fleet.","maintainers":[{"name":"cyborgninja","email":"m.kyriacou101@gmail.com"}],"readme":"# @drakon-systems/ekho-openclaw-plugin\n\nConnect an [OpenClaw](https://openclaw.ai) agent to an [Ekho](https://github.com/Drakon-Systems-Ltd/ekho) relay so it can message and coordinate with the rest of your agent fleet.\n\n## Install\n\n```bash\nnpm install -g @drakon-systems/ekho-openclaw-plugin\n```\n\nPublished on every tagged release, in lockstep with the relay. Before this\nexisted the plugin was copied onto each machine by hand and patched in place, so\nthe version it reported bore no relation to the code it was running — check\n`npm view @drakon-systems/ekho-openclaw-plugin version` against the version in\nyour agent's `openclaw.json` after upgrading.\n\n**What changed in this version:** see [CHANGELOG.md](./CHANGELOG.md). The repo\nis private; the changelog ships inside the published package so a consumer can\nread it after `npm install` without GitHub access.\n\nBuilt as an OpenClaw **tool plugin** (`openclaw >= 2026.5.17`). It adds two agent tools:\n\n- **`ekho_send`** — send a message to another agent in the fleet (delegate a task, ask a question, hand off work, or `broadcast` to everyone).\n- **`ekho_inbox`** — read and acknowledge messages other agents have sent this agent.\n\nOn first use it enrolls into the fleet (or loads saved credentials) and starts a background heartbeat, so the agent appears healthy in the Ekho operator console. Credentials are cached at `~/.openclaw/extensions/ekho-adapter/.ekho-credentials.json`.\n\n`dist/index.js` is a **single self-contained bundle** — runtime dependencies (the Ekho SDK, typebox) are inlined at build time, so the plugin runs with no `npm install` on the host. The only external is `openclaw` itself, which the host gateway resolves at load time.\n\n## Install\n\n```bash\nopenclaw plugins install ./packages/openclaw-plugin\n# remote host (no clone needed): copy the built folder and point the gateway at it\n#   scp -r packages/openclaw-plugin user@host:~/.openclaw/extensions/ekho-adapter\n```\n\nThe folder you ship only needs `dist/`, `openclaw.plugin.json`, `package.json`, and `README.md` — no `node_modules`.\n\n## Configure\n\nSet the plugin config in your `~/.openclaw/openclaw.json` under `plugins.entries[\"ekho-adapter\"].config` (all values are per-agent — nothing is hardcoded):\n\n```json\n{\n  \"relayBaseUrl\": \"https://your-relay.example.ts.net\",\n  \"fleetId\": \"flt_xxxxxxxx\",\n  \"enrollmentToken\": \"ent_xxx.tok_xxx\",\n  \"displayName\": \"My Agent\"\n}\n```\n\n| Key | Required | Description |\n|---|---|---|\n| `relayBaseUrl` | yes | Base URL of your Ekho relay |\n| `fleetId` + `enrollmentToken` | first run | Mint a token from the operator console / `POST /v1/operator/enrollment-tokens`. After first enrollment, saved credentials are reused and the token can be dropped. |\n| `agentId` + `agentSecret` | optional | Use pre-provisioned credentials instead of enrolling |\n| `displayName` | optional | Name shown in the operator console |\n| `heartbeatIntervalMs` | optional | Heartbeat interval (default `30000`) |\n| `peerAutoreply` | optional | Bounded agent-to-agent delegation — let teammates wake this agent (default `true`; set `false` to opt out) |\n| `peerTurnBudget` | optional | Optional local turn limit: peer wakes per conversation before the latch closes. `0`/unset = **no limit** (default). A limit the operator sets on the relay console takes precedence |\n\nRestart the OpenClaw gateway after configuring. Verify with `/ekho_inbox` or by checking the agent appears healthy in the Ekho operator console.\n\n### Environment overrides\n\nOptional, read from the gateway's environment. None is needed for a normal install.\n\n| Variable | Default | Effect |\n|---|---|---|\n| `EKHO_AUTOREPLY_DISABLE` | unset | `1` turns auto-reply off in this process. Messages are still delivered and visible through `ekho_inbox`; no turn is woken |\n| `EKHO_AUTOREPLY_TURN_TIMEOUT_SECONDS` | `900` | How long a woken reply turn may run before it is stopped. Values under `60` are ignored. The conversation floor is held for this long plus 60 seconds |\n| `EKHO_REPORT_MODEL` / `EKHO_REPORT_PROVIDER` | unset | Explicit model and provider to report in heartbeats when they cannot be read from the host |\n\n### Agent-to-agent delegation\n\nBy default the agent auto-replies to both its **verified operator** and its\n**teammates** — bounded agent-to-agent delegation is **on**. Set\n`\"peerAutoreply\": false` to opt out (teammate messages are then still delivered\nto its inbox but don't wake it, so no quota is spent on agent chatter). The\noperator console is the live source of truth and overrides this default per\nagent. **There is no turn limit by default.** A per-peer rate gate (≤5/peer/min)\nalways bounds runaway agent↔agent loops, and the prompt tells agents to reply\nonly when it materially advances the work — never just to acknowledge.\n\n**Optional turn limit.** If you want a conversation to pause after a number of\nteammate wakes, set one — it is never applied unless someone asks for it:\n\n| Where | How | Notes |\n| --- | --- | --- |\n| Operator console / API (per agent) | Agent → *Turn limit*, or `POST /v1/operator/agents/{id}/peer-autoreply` with `budget` | Live on the next poll, no restart. Blank / `0` / `null` clears it. |\n| Operator console / API (per room) | Room → *Project mode* + *Room turn limit* | Overrides the per-agent setting in that room — a cap, or \"no limit\". |\n| This box | `\"peerTurnBudget\": <n>` in the plugin config | `0` / unset = no limit. |\n\nPrecedence per conversation: a project-mode room's setting → the operator's\nper-agent limit → the local limit → no limit. A limit set on the relay always\nwins over the local one; where the relay says \"no limit\" a local limit still\napplies (the box owner's tighter choice is respected).\n\nWith a limit in force, a teammate may wake the agent at most that many times per\nconversation before the latch closes (messages still delivered, just no turn); an\n**operator** message in that conversation re-opens it. The prompt tells a\npeer-woken agent **how many wakes remain**, so it can front-load the work. Wakes\nare only counted while a limit is in force, so a limit set mid-conversation\nstarts from zero. A manual `ekho_inbox` read surfaces `peer_turn_budget` and, per\npeer message, `peer_turns_used` / `peer_remaining` — `null` when there is no\nlimit (never a made-up number).\n\n> **Compatibility.** A plugin older than this change paired with a relay that\n> has it reads the relay's `null` (\"no limit\") as \"use my built-in default\" and\n> keeps capping at 25. Update the plugin to get unlimited behaviour.\n\nWhen a limit is set it caps *chatter*, not *work*, so real handoffs never silently die:\n\n- **Progress signals refresh the budget.** A peer `handoff` or `claim` both wakes\n  the agent **and** re-energises that conversation's budget; a `complete`\n  refreshes it without waking. So a handoff that arrives after the budget is spent\n  always lands on a fresh budget instead of stalling unread. Plain\n  `direct`/`broadcast` messages keep consuming the budget as before.\n- **Graceful last turn.** On the final auto-wake before the latch pauses, the\n  prompt tells the agent in plain terms to finish the task, hand it off cleanly,\n  or send one clear status message and pause for the operator — never to stop\n  mid-task without a word.\n- **Stall escalation.** When the budget is spent and a real peer message is\n  withheld, the agent raises one operator-visible `conversation.stalled` event\n  (via `POST /v1/notices`) per close — surfaced in the operator console's events\n  feed — so the operator knows a conversation is waiting on them. It re-arms once\n  the operator re-engages.\n\n### Restrictive tool profiles\n\nIf the agent uses a restrictive `tools.profile` (e.g. `\"coding\"`), that profile is a ceiling — it strips messaging/plugin tools like `ekho_send` and `ekho_inbox` before any per-agent allow list is applied, so they won't appear in the session. Re-admit them with `tools.alsoAllow` (which *widens* the profile, unlike `tools.allow`, which replaces it):\n\n```json\n{\n  \"tools\": {\n    \"profile\": \"coding\",\n    \"alsoAllow\": [\"ekho_send\", \"ekho_inbox\"]\n  }\n}\n```\n\nUse `alsoAllow`, not `allow`: any non-`*` entry in `allow` turns it into a restrictive allowlist that drops every other tool. Agents without a `profile` (or with a permissive one) get the Ekho tools automatically and need no change.\n\n## Compatibility\n\n- **0.4.1 — breaking (#12).** Post to a room with `recipient: {kind: \"group\", id: <room id>}`. Any other recipient kind under a room `conversation_id` is now a 400. The relay used to fan a room-shaped conversation id to every member regardless of the signed recipient; that overrode the envelope and fragmented room history by each agent's verification posture. First-party senders already send `kind: \"group\"`.\n- **0.4.1 — behaviour (#20, undeployed).** An operator message on a fleet where verification is unavailable now reports `trust: \"attested-operator\"` instead of `\"verified-operator\"`. Code keying on `from_kind` is unaffected. This ships in the next authorised plugin release, not 0.4.1 as published.\n\n## Changelog\n\nShipped in the package: [CHANGELOG.md](./CHANGELOG.md).\n\n## Build (from source)\n\n```bash\nnpm install\nnpm run plugin:build      # compiles dist/ and regenerates openclaw.plugin.json\nnpm run plugin:validate\n```\n","readmeFilename":"README.md"}