{"_id":"bot-relay-mcp","_rev":"52-8f7ce383af18a82b45f94301b0dfff91","name":"bot-relay-mcp","dist-tags":{"latest":"3.0.1"},"versions":{"2.1.1":{"name":"bot-relay-mcp","version":"2.1.1","keywords":["mcp","claude-code","agent-communication","multi-agent","ai","model-context-protocol","agent-relay","cursor","cline"],"author":{"name":"Lumiere Ventures","email":"contact@lumiereventures.co"},"license":"MIT","_id":"bot-relay-mcp@2.1.1","maintainers":[{"name":"lumiereventures","email":"maxime@lumiereventures.co"}],"homepage":"https://github.com/Maxlumiere/bot-relay-mcp","bugs":{"url":"https://github.com/Maxlumiere/bot-relay-mcp/issues"},"bin":{"relay":"bin/relay","bot-relay-mcp":"dist/index.js"},"dist":{"shasum":"5c86e94a66947586ba7a19dc9a6cea0e2e4cf251","tarball":"https://registry.npmjs.org/bot-relay-mcp/-/bot-relay-mcp-2.1.1.tgz","fileCount":187,"integrity":"sha512-xEfyOFbWMWVHXhP/8vMInGAwKfHj6JxOsRr0f8BtpEvDYlNhBhsHQ5MnOUVj9wwqx6pc9xISML0OYUZOU+pQAg==","signatures":[{"sig":"MEQCIHyQwWF56UbMVs+hY74Q8mevCdCx2jL30gc/KWWLznMtAiBZo4SRn44e8VvS6Bh7gPuPW0IQVVkK57FXTaG7PffqfQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1039750},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"4d5d009e46bf012a5dcfe278009143f804db6cc4","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","prepublishOnly":"bash scripts/pre-publish-check.sh"},"_npmUser":{"name":"lumiereventures","email":"maxime@lumiereventures.co"},"overrides":{"hono":">=4.12.14"},"deprecated":"Contained inadvertently-published private data — please upgrade to 2.11.1+","repository":{"url":"git+https://github.com/Maxlumiere/bot-relay-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI coding agent terminal-to-terminal communication. Local-first, SQLite-backed, webhook-integrated.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"zod":"^3.24.4","uuid":"^11.1.0","express":"^5.2.1","bcryptjs":"^3.0.3","better-sqlite3":"^11.9.1","@modelcontextprotocol/sdk":"~1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.1.1","typescript":"^5.8.3","@types/uuid":"^10.0.0","@types/express":"^5.0.6","@types/bcryptjs":"^2.4.6","@types/better-sqlite3":"^7.6.13"},"optionalDependencies":{"sql.js":"^1.14.1"},"_npmOperationalInternal":{"tmp":"tmp/bot-relay-mcp_2.1.1_1776659574196_0.724396223668998","host":"s3://npm-registry-packages-npm-production"}},"2.1.2":{"name":"bot-relay-mcp","version":"2.1.2","keywords":["mcp","claude-code","agent-communication","multi-agent","ai","model-context-protocol","agent-relay","cursor","cline"],"author":{"name":"Lumiere Ventures","email":"contact@lumiereventures.co"},"license":"MIT","_id":"bot-relay-mcp@2.1.2","maintainers":[{"name":"lumiereventures","email":"contact@lumiereventures.co"}],"homepage":"https://github.com/Maxlumiere/bot-relay-mcp","bugs":{"url":"https://github.com/Maxlumiere/bot-relay-mcp/issues"},"bin":{"relay":"bin/relay","bot-relay-mcp":"dist/index.js"},"dist":{"shasum":"93202a3fe76083626107300f59f54265f771a5f9","tarball":"https://registry.npmjs.org/bot-relay-mcp/-/bot-relay-mcp-2.1.2.tgz","fileCount":187,"integrity":"sha512-C1Nansz05ElNlilOsE2MvrTFzFnwDC1YmKGGBjJbknPYn1+ogX5n1jhvtUFn51yoMaX3MApMXla2QOMfxtHD3A==","signatures":[{"sig":"MEYCIQDpaDXMoItXY86zWlwghBX7SXpttkz1EMzq/y77rNC3LgIhAODb7W3qd0oOXbwHU7caIgr/P0hRU5xXbOUIbrbxXFUR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1045848},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"3a4ed3596a605c1e014ae17173b1c3af7588118f","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","prepublishOnly":"bash scripts/pre-publish-check.sh"},"_npmUser":{"name":"lumiereventures","email":"contact@lumiereventures.co"},"overrides":{"hono":">=4.12.14"},"deprecated":"Contained inadvertently-published private data — please upgrade to 2.11.1+","repository":{"url":"git+https://github.com/Maxlumiere/bot-relay-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI coding agent terminal-to-terminal communication. Local-first, SQLite-backed, webhook-integrated.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"zod":"^3.24.4","uuid":"^11.1.0","express":"^5.2.1","bcryptjs":"^3.0.3","better-sqlite3":"^11.9.1","@modelcontextprotocol/sdk":"~1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.1.1","typescript":"^5.8.3","@types/uuid":"^10.0.0","@types/express":"^5.0.6","@types/bcryptjs":"^2.4.6","@types/better-sqlite3":"^7.6.13"},"optionalDependencies":{"sql.js":"^1.14.1"},"_npmOperationalInternal":{"tmp":"tmp/bot-relay-mcp_2.1.2_1776682151329_0.18541062453969337","host":"s3://npm-registry-packages-npm-production"}},"2.1.3":{"name":"bot-relay-mcp","version":"2.1.3","keywords":["mcp","claude-code","agent-communication","multi-agent","ai","model-context-protocol","agent-relay","cursor","cline"],"author":{"name":"Lumiere Ventures","email":"contact@lumiereventures.co"},"license":"MIT","_id":"bot-relay-mcp@2.1.3","maintainers":[{"name":"lumiereventures","email":"contact@lumiereventures.co"}],"homepage":"https://github.com/Maxlumiere/bot-relay-mcp","bugs":{"url":"https://github.com/Maxlumiere/bot-relay-mcp/issues"},"bin":{"relay":"bin/relay","bot-relay-mcp":"dist/index.js"},"dist":{"shasum":"4a353b5510c214043f1f33ce6e572b803c9c9c75","tarball":"https://registry.npmjs.org/bot-relay-mcp/-/bot-relay-mcp-2.1.3.tgz","fileCount":187,"integrity":"sha512-IpT5FkVwYrmea2P0dvjiEXgYo2BrdrcuZ6Y4VqMakz1Ph8VReBrjs/9w52jgCLVtv5viPeOUOK2YRyXQK5fklA==","signatures":[{"sig":"MEYCIQCtT0k2yy81v03Ze8BH0rpgKFkWpzPnuPYIiNHqsN2/mgIhALWxDgacAoiadNOvX5O5WSW8Wwsczxg54NPPs49fy1Uj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1085575},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"611532f8a0b91b660f0631a11fc1736da89a0c67","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","prepublishOnly":"bash scripts/pre-publish-check.sh"},"_npmUser":{"name":"lumiereventures","email":"contact@lumiereventures.co"},"overrides":{"hono":">=4.12.14"},"deprecated":"Contained inadvertently-published private data — please upgrade to 2.11.1+","repository":{"url":"git+https://github.com/Maxlumiere/bot-relay-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI coding agent terminal-to-terminal communication. Local-first, SQLite-backed, webhook-integrated.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"zod":"^3.24.4","uuid":"^11.1.0","express":"^5.2.1","bcryptjs":"^3.0.3","better-sqlite3":"^11.9.1","@modelcontextprotocol/sdk":"~1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.1.1","typescript":"^5.8.3","@types/uuid":"^10.0.0","@types/express":"^5.0.6","@types/bcryptjs":"^2.4.6","@types/better-sqlite3":"^7.6.13"},"optionalDependencies":{"sql.js":"^1.14.1"},"_npmOperationalInternal":{"tmp":"tmp/bot-relay-mcp_2.1.3_1776698647438_0.7134586684257278","host":"s3://npm-registry-packages-npm-production"}},"2.1.4":{"name":"bot-relay-mcp","version":"2.1.4","keywords":["mcp","claude-code","agent-communication","multi-agent","ai","model-context-protocol","agent-relay","cursor","cline"],"author":{"name":"Lumiere Ventures","email":"contact@lumiereventures.co"},"license":"MIT","_id":"bot-relay-mcp@2.1.4","maintainers":[{"name":"lumiereventures","email":"contact@lumiereventures.co"}],"homepage":"https://github.com/Maxlumiere/bot-relay-mcp","bugs":{"url":"https://github.com/Maxlumiere/bot-relay-mcp/issues"},"bin":{"relay":"bin/relay","bot-relay-mcp":"dist/index.js"},"dist":{"shasum":"7f94bdd27ab0c2d76a1781250c7b026d45d2e1f9","tarball":"https://registry.npmjs.org/bot-relay-mcp/-/bot-relay-mcp-2.1.4.tgz","fileCount":191,"integrity":"sha512-f/PZv12kjvtTBdM0y6jDInJcGWXsB7KZVTBLKxugWNNBxHlevTdG115PYAdJ0w0Uog7/Rmp8aOtgg2ZxT6L23g==","signatures":[{"sig":"MEUCICguoUhFO2s3aLiT0ADKMKHYSXLUowy7NxOD4/pfcf67AiEAnpvK9lJGQfqKhethgCfC5NnehJ52f179t5dn0v4donw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1148567},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"d6aab5d4d9143424162ebffcba4d519fdbe305f6","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","prepublishOnly":"bash scripts/pre-publish-check.sh"},"_npmUser":{"name":"lumiereventures","email":"contact@lumiereventures.co"},"overrides":{"hono":">=4.12.14"},"deprecated":"Contained inadvertently-published private data — please upgrade to 2.11.1+","repository":{"url":"git+https://github.com/Maxlumiere/bot-relay-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI coding agent terminal-to-terminal communication. Local-first, SQLite-backed, webhook-integrated.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"zod":"^3.24.4","uuid":"^11.1.0","express":"^5.2.1","bcryptjs":"^3.0.3","better-sqlite3":"^11.9.1","@modelcontextprotocol/sdk":"~1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.1.1","typescript":"^5.8.3","@types/uuid":"^10.0.0","@types/express":"^5.0.6","@types/bcryptjs":"^2.4.6","@types/better-sqlite3":"^7.6.13"},"optionalDependencies":{"sql.js":"^1.14.1"},"_npmOperationalInternal":{"tmp":"tmp/bot-relay-mcp_2.1.4_1776703220675_0.20005169591025584","host":"s3://npm-registry-packages-npm-production"}},"2.1.5":{"name":"bot-relay-mcp","version":"2.1.5","keywords":["mcp","claude-code","agent-communication","multi-agent","ai","model-context-protocol","agent-relay","cursor","cline"],"author":{"name":"Lumiere Ventures","email":"contact@lumiereventures.co"},"license":"MIT","_id":"bot-relay-mcp@2.1.5","maintainers":[{"name":"lumiereventures","email":"contact@lumiereventures.co"}],"homepage":"https://github.com/Maxlumiere/bot-relay-mcp","bugs":{"url":"https://github.com/Maxlumiere/bot-relay-mcp/issues"},"bin":{"relay":"bin/relay","bot-relay-mcp":"dist/index.js"},"dist":{"shasum":"bc2a265aab274ec3c3c16afe4766710ac17770ce","tarball":"https://registry.npmjs.org/bot-relay-mcp/-/bot-relay-mcp-2.1.5.tgz","fileCount":191,"integrity":"sha512-sE6dakELJzrSzCeHd03at8yj9xqWiP13Sjc+o6RBLEek1X0G7Up9+i0elrMV6cJxL9m/T7ElWIrDEv6tu2q23w==","signatures":[{"sig":"MEQCIEnrWaCFcjWpKmn8whzHMvmzFeVzn7f5aj8xscarMeJPAiAL2kZqz+Lck0GWgssMbOV9NKr046X3B54iRHSnznIrmg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1157182},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"bfaf3630dbedd3cfbb3d700dee36379f345ad167","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","prepublishOnly":"bash scripts/pre-publish-check.sh"},"_npmUser":{"name":"lumiereventures","email":"contact@lumiereventures.co"},"overrides":{"hono":">=4.12.14"},"deprecated":"Contained inadvertently-published private data — please upgrade to 2.11.1+","repository":{"url":"git+https://github.com/Maxlumiere/bot-relay-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI coding agent terminal-to-terminal communication. Local-first, SQLite-backed, webhook-integrated.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"zod":"^3.24.4","uuid":"^11.1.0","express":"^5.2.1","bcryptjs":"^3.0.3","better-sqlite3":"^11.9.1","@modelcontextprotocol/sdk":"~1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.1.1","typescript":"^5.8.3","@types/uuid":"^10.0.0","@types/express":"^5.0.6","@types/bcryptjs":"^2.4.6","@types/better-sqlite3":"^7.6.13"},"optionalDependencies":{"sql.js":"^1.14.1"},"_npmOperationalInternal":{"tmp":"tmp/bot-relay-mcp_2.1.5_1776736456638_0.46926210820993086","host":"s3://npm-registry-packages-npm-production"}},"2.1.6":{"name":"bot-relay-mcp","version":"2.1.6","keywords":["mcp","claude-code","agent-communication","multi-agent","ai","model-context-protocol","agent-relay","cursor","cline"],"author":{"name":"Lumiere Ventures","email":"contact@lumiereventures.co"},"license":"MIT","_id":"bot-relay-mcp@2.1.6","maintainers":[{"name":"lumiereventures","email":"contact@lumiereventures.co"}],"homepage":"https://github.com/Maxlumiere/bot-relay-mcp","bugs":{"url":"https://github.com/Maxlumiere/bot-relay-mcp/issues"},"bin":{"relay":"bin/relay","bot-relay-mcp":"dist/index.js"},"dist":{"shasum":"0f6a6959196cd1f34d9d0791e60bc7108d60d544","tarball":"https://registry.npmjs.org/bot-relay-mcp/-/bot-relay-mcp-2.1.6.tgz","fileCount":195,"integrity":"sha512-VrXV8KQgGfCwn6+BZu/FrEU+NDQp8l4QBH2J+MulDGzmnPY20us9BtiURC2oB46K9LdfY3XkdB57HzrykYXdvA==","signatures":[{"sig":"MEYCIQCQ/XxwkoeaWJCrFkfkwoHxmv5deKsXD3RJ3trAGv7kmAIhAOLD/lsv20gt2rhAa2NnlAVXRtgTUQd6qxEyKDagcTEQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1204270},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"87a4bc269b73f4cdc19ed45e2658fe92ae18c3c6","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","prepublishOnly":"bash scripts/pre-publish-check.sh"},"_npmUser":{"name":"lumiereventures","email":"contact@lumiereventures.co"},"overrides":{"hono":">=4.12.14"},"deprecated":"Contained inadvertently-published private data — please upgrade to 2.11.1+","repository":{"url":"git+https://github.com/Maxlumiere/bot-relay-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI coding agent terminal-to-terminal communication. Local-first, SQLite-backed, webhook-integrated.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"zod":"^3.24.4","uuid":"^11.1.0","express":"^5.2.1","bcryptjs":"^3.0.3","better-sqlite3":"^11.9.1","@modelcontextprotocol/sdk":"~1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.1.1","typescript":"^5.8.3","@types/uuid":"^10.0.0","@types/express":"^5.0.6","@types/bcryptjs":"^2.4.6","@types/better-sqlite3":"^7.6.13"},"optionalDependencies":{"sql.js":"^1.14.1"},"_npmOperationalInternal":{"tmp":"tmp/bot-relay-mcp_2.1.6_1776739720869_0.5442857587824486","host":"s3://npm-registry-packages-npm-production"}},"2.1.7":{"name":"bot-relay-mcp","version":"2.1.7","keywords":["mcp","claude-code","agent-communication","multi-agent","ai","model-context-protocol","agent-relay","cursor","cline"],"author":{"name":"Lumiere Ventures","email":"contact@lumiereventures.co"},"license":"MIT","_id":"bot-relay-mcp@2.1.7","maintainers":[{"name":"lumiereventures","email":"contact@lumiereventures.co"}],"homepage":"https://github.com/Maxlumiere/bot-relay-mcp","bugs":{"url":"https://github.com/Maxlumiere/bot-relay-mcp/issues"},"bin":{"relay":"bin/relay","bot-relay-mcp":"dist/index.js"},"dist":{"shasum":"444315ea49c5858d4e7f0dcaef59281cb48465f2","tarball":"https://registry.npmjs.org/bot-relay-mcp/-/bot-relay-mcp-2.1.7.tgz","fileCount":195,"integrity":"sha512-EuzsASNQNdzLkj38LCQ2WcO6pAir2svjz9g9F7pQt8IYiplMcjFTDmqTflzIRuRdJheQB6WKr0WMhovIzY/lhQ==","signatures":[{"sig":"MEYCIQDDizody6/mZhRkduozV3uifMwzz+cmwhFl6ShQWJUfYwIhALcVgHZzzzA2+TFc7+bFyzQ3lV12HdVDCxK7kDhG11Ok","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1235383},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"02fc46d03101ca6510663db7efcc859045ba1510","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","prepublishOnly":"bash scripts/pre-publish-check.sh"},"_npmUser":{"name":"lumiereventures","email":"contact@lumiereventures.co"},"overrides":{"hono":">=4.12.14"},"deprecated":"Contained inadvertently-published private data — please upgrade to 2.11.1+","repository":{"url":"git+https://github.com/Maxlumiere/bot-relay-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI coding agent terminal-to-terminal communication. Local-first, SQLite-backed, webhook-integrated.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"zod":"^3.24.4","uuid":"^11.1.0","express":"^5.2.1","bcryptjs":"^3.0.3","better-sqlite3":"^11.9.1","@modelcontextprotocol/sdk":"~1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.1.1","typescript":"^5.8.3","@types/uuid":"^10.0.0","@types/express":"^5.0.6","@types/bcryptjs":"^2.4.6","@types/better-sqlite3":"^7.6.13"},"optionalDependencies":{"sql.js":"^1.14.1"},"_npmOperationalInternal":{"tmp":"tmp/bot-relay-mcp_2.1.7_1776750062331_0.5520428451318855","host":"s3://npm-registry-packages-npm-production"}},"2.2.0":{"name":"bot-relay-mcp","version":"2.2.0","keywords":["mcp","claude-code","agent-communication","multi-agent","ai","model-context-protocol","agent-relay","cursor","cline"],"author":{"name":"Lumiere Ventures","email":"contact@lumiereventures.co"},"license":"MIT","_id":"bot-relay-mcp@2.2.0","maintainers":[{"name":"lumiereventures","email":"contact@lumiereventures.co"}],"homepage":"https://github.com/Maxlumiere/bot-relay-mcp","bugs":{"url":"https://github.com/Maxlumiere/bot-relay-mcp/issues"},"bin":{"relay":"bin/relay","bot-relay-mcp":"dist/index.js"},"dist":{"shasum":"77a213abbb61ed42f5fbfc24244ef529e43b2b45","tarball":"https://registry.npmjs.org/bot-relay-mcp/-/bot-relay-mcp-2.2.0.tgz","fileCount":235,"integrity":"sha512-ZDQEcvB+7djeoxtSAcu/fP8yM78+P7ZwGHSbez1SCB9Wra1KBu/LyUwxkre3BkxmTii5m0I2WVcVr/4lYRnG6w==","signatures":[{"sig":"MEUCIB61y5dc819aKMl+SfD7BXhGLgoLLu6WeYWPRbVGiC8AAiEA9ThiAlirm7rqnkw+JNu+gJ00Gda2A8s/ejUD9/8d2HY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1368844},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"3e367e5b853f8c581f1aad12181052a89d713a3c","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","prepublishOnly":"bash scripts/pre-publish-check.sh"},"_npmUser":{"name":"lumiereventures","email":"contact@lumiereventures.co"},"overrides":{"hono":">=4.12.14"},"deprecated":"Contained inadvertently-published private data — please upgrade to 2.11.1+","repository":{"url":"git+https://github.com/Maxlumiere/bot-relay-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI coding agent terminal-to-terminal communication. Local-first, SQLite-backed, webhook-integrated.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.20.0","zod":"^3.24.4","uuid":"^11.1.0","express":"^5.2.1","bcryptjs":"^3.0.3","better-sqlite3":"^11.9.1","@modelcontextprotocol/sdk":"~1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.1.1","@types/ws":"^8.18.1","typescript":"^5.8.3","@types/uuid":"^10.0.0","@types/express":"^5.0.6","@types/bcryptjs":"^2.4.6","@types/better-sqlite3":"^7.6.13"},"optionalDependencies":{"sql.js":"^1.14.1"},"_npmOperationalInternal":{"tmp":"tmp/bot-relay-mcp_2.2.0_1776769534900_0.7799116193876137","host":"s3://npm-registry-packages-npm-production"}},"2.2.1":{"name":"bot-relay-mcp","version":"2.2.1","keywords":["mcp","claude-code","agent-communication","multi-agent","ai","model-context-protocol","agent-relay","cursor","cline"],"author":{"name":"Lumiere Ventures","email":"contact@lumiereventures.co"},"license":"MIT","_id":"bot-relay-mcp@2.2.1","maintainers":[{"name":"lumiereventures","email":"contact@lumiereventures.co"}],"homepage":"https://github.com/Maxlumiere/bot-relay-mcp","bugs":{"url":"https://github.com/Maxlumiere/bot-relay-mcp/issues"},"bin":{"relay":"bin/relay","bot-relay-mcp":"dist/index.js"},"dist":{"shasum":"a8f1377ec2e3d8ac5215fb847ff25ed2fe58ed49","tarball":"https://registry.npmjs.org/bot-relay-mcp/-/bot-relay-mcp-2.2.1.tgz","fileCount":247,"integrity":"sha512-N5rOafEc8i0RUJaTnI5P2/f+MpRR62yEshlK7YRl/myJl8r5XUIDNlKaIl32TSoze4+Q5QaGyADYEIS8/LUvzg==","signatures":[{"sig":"MEUCIQDzG896m49uyGscp2PKKx2oYfoL6SyK8c/m3Gk2UtcXuwIgbqt9pBxcFd0ogefqT6U3A0OQqus6NFt/dXS2IbwKcNI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1482432},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"2744064ee79b27e674a0a5dd080b38a9c1db8a01","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","prepublishOnly":"bash scripts/pre-publish-check.sh"},"_npmUser":{"name":"lumiereventures","email":"contact@lumiereventures.co"},"overrides":{"hono":">=4.12.14"},"deprecated":"Contained inadvertently-published private data — please upgrade to 2.11.1+","repository":{"url":"git+https://github.com/Maxlumiere/bot-relay-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI coding agent terminal-to-terminal communication. Local-first, SQLite-backed, webhook-integrated.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.20.0","zod":"^3.24.4","uuid":"^11.1.0","express":"^5.2.1","bcryptjs":"^3.0.3","better-sqlite3":"^11.9.1","@modelcontextprotocol/sdk":"~1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.1.1","@types/ws":"^8.18.1","typescript":"^5.8.3","@types/uuid":"^10.0.0","@types/express":"^5.0.6","@types/bcryptjs":"^2.4.6","@types/better-sqlite3":"^7.6.13"},"optionalDependencies":{"sql.js":"^1.14.1"},"_npmOperationalInternal":{"tmp":"tmp/bot-relay-mcp_2.2.1_1776832101376_0.8223773077706449","host":"s3://npm-registry-packages-npm-production"}},"2.2.2":{"name":"bot-relay-mcp","version":"2.2.2","keywords":["mcp","claude-code","agent-communication","multi-agent","ai","model-context-protocol","agent-relay","cursor","cline"],"author":{"name":"Lumiere Ventures","email":"contact@lumiereventures.co"},"license":"MIT","_id":"bot-relay-mcp@2.2.2","maintainers":[{"name":"lumiereventures","email":"contact@lumiereventures.co"}],"homepage":"https://github.com/Maxlumiere/bot-relay-mcp","bugs":{"url":"https://github.com/Maxlumiere/bot-relay-mcp/issues"},"bin":{"relay":"bin/relay","bot-relay-mcp":"dist/index.js"},"dist":{"shasum":"e11e7d7c0ad6dc4e97ce9fa53e0ff121ec3476ff","tarball":"https://registry.npmjs.org/bot-relay-mcp/-/bot-relay-mcp-2.2.2.tgz","fileCount":255,"integrity":"sha512-WLVNhZvh9p1WJm5HESC984chS7CFa4HUhMlPMGu8Tl6J42ukN06bpkUw1P0icbrjD4Axw5oUXBjbyTmmh8TP5Q==","signatures":[{"sig":"MEUCIC/gffXtPH1cdevZWTk1WhAL0YG8AsFzgYEZJDh+5w7RAiEA9+DcUxooMd8XsIU++0um1h9ap2gEnfJq52gdwwKrXzQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1585093},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"7c1745c3297c92123000592aad40ef55fcc366ea","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","prepublishOnly":"bash scripts/pre-publish-check.sh"},"_npmUser":{"name":"lumiereventures","email":"contact@lumiereventures.co"},"overrides":{"hono":">=4.12.14"},"deprecated":"Contained inadvertently-published private data — please upgrade to 2.11.1+","repository":{"url":"git+https://github.com/Maxlumiere/bot-relay-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI coding agent terminal-to-terminal communication. Local-first, SQLite-backed, webhook-integrated.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.20.0","zod":"^3.24.4","uuid":"^11.1.0","express":"^5.2.1","bcryptjs":"^3.0.3","better-sqlite3":"^11.9.1","@modelcontextprotocol/sdk":"~1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.1.1","@types/ws":"^8.18.1","typescript":"^5.8.3","@types/uuid":"^10.0.0","@types/express":"^5.0.6","@types/bcryptjs":"^2.4.6","@types/better-sqlite3":"^7.6.13"},"optionalDependencies":{"sql.js":"^1.14.1"},"_npmOperationalInternal":{"tmp":"tmp/bot-relay-mcp_2.2.2_1776849839536_0.613921301991768","host":"s3://npm-registry-packages-npm-production"}},"2.2.3":{"name":"bot-relay-mcp","version":"2.2.3","keywords":["mcp","claude-code","agent-communication","multi-agent","ai","model-context-protocol","agent-relay","cursor","cline"],"author":{"name":"Lumiere Ventures","email":"contact@lumiereventures.co"},"license":"MIT","_id":"bot-relay-mcp@2.2.3","maintainers":[{"name":"lumiereventures","email":"contact@lumiereventures.co"}],"homepage":"https://github.com/Maxlumiere/bot-relay-mcp","bugs":{"url":"https://github.com/Maxlumiere/bot-relay-mcp/issues"},"bin":{"relay":"bin/relay","bot-relay-mcp":"dist/index.js"},"dist":{"shasum":"c45c6cf47ae17de7f68225aa55aa8e65834d431a","tarball":"https://registry.npmjs.org/bot-relay-mcp/-/bot-relay-mcp-2.2.3.tgz","fileCount":255,"integrity":"sha512-OSd9/3HwqbNI3yI35lzB1vRX+Q3wU9U+RZ0vCQoOZa/n9LKTJrFg9swSBK6bddSJoU/xbOthMqqcq7CrBGYEJw==","signatures":[{"sig":"MEUCIQDwLAJRym1niT2hfE85liddNjuduXEFFh4i3n+PjitL+wIgIluSzxykGQOmEGd0Q3JMhtmttNeFlCUTN+pyC/Lc5Vg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1591126},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"a4c0f0998e843c267ee81274a8c110fb6ea04dcd","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","prepublishOnly":"bash scripts/pre-publish-check.sh"},"_npmUser":{"name":"lumiereventures","email":"contact@lumiereventures.co"},"overrides":{"hono":">=4.12.14"},"deprecated":"Contained inadvertently-published private data — please upgrade to 2.11.1+","repository":{"url":"git+https://github.com/Maxlumiere/bot-relay-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI coding agent terminal-to-terminal communication. Local-first, SQLite-backed, webhook-integrated.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.20.0","zod":"^3.24.4","uuid":"^11.1.0","express":"^5.2.1","bcryptjs":"^3.0.3","better-sqlite3":"^11.9.1","@modelcontextprotocol/sdk":"~1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.1.1","@types/ws":"^8.18.1","typescript":"^5.8.3","@types/uuid":"^10.0.0","@types/express":"^5.0.6","@types/bcryptjs":"^2.4.6","@types/better-sqlite3":"^7.6.13"},"optionalDependencies":{"sql.js":"^1.14.1"},"_npmOperationalInternal":{"tmp":"tmp/bot-relay-mcp_2.2.3_1776856994678_0.9346783045500091","host":"s3://npm-registry-packages-npm-production"}},"2.3.0":{"name":"bot-relay-mcp","version":"2.3.0","keywords":["mcp","claude-code","agent-communication","multi-agent","ai","model-context-protocol","agent-relay","cursor","cline"],"author":{"name":"Lumiere Ventures","email":"contact@lumiereventures.co"},"license":"MIT","_id":"bot-relay-mcp@2.3.0","maintainers":[{"name":"lumiereventures","email":"contact@lumiereventures.co"}],"homepage":"https://github.com/Maxlumiere/bot-relay-mcp","bugs":{"url":"https://github.com/Maxlumiere/bot-relay-mcp/issues"},"bin":{"relay":"bin/relay","bot-relay-mcp":"dist/index.js"},"dist":{"shasum":"c67a211e26572a2cb5db7557faf7013b6f1ae07b","tarball":"https://registry.npmjs.org/bot-relay-mcp/-/bot-relay-mcp-2.3.0.tgz","fileCount":267,"integrity":"sha512-THcan0F9fg8aHsfNQkZHSge3sWVRLJvNA7aOhTJ+ruFp9knlKiuymWBYxBNPP0UsG0i9cwNw0EWFaz/zCd9sEw==","signatures":[{"sig":"MEYCIQDU4jdCkUndYUNkuJlQGAZYX04LuYTPR74VTq5veqO6UwIhAPtXorhI8P20UisC0E0HEhWcjGKlu5/86/s1Hy+ZdNag","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1667647},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"fc6d0221cf4ecbb6cc16c02614bbd47834a48c1e","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","prepublishOnly":"bash scripts/pre-publish-check.sh"},"_npmUser":{"name":"lumiereventures","email":"contact@lumiereventures.co"},"overrides":{"hono":">=4.12.14"},"deprecated":"Contained inadvertently-published private data — please upgrade to 2.11.1+","repository":{"url":"git+https://github.com/Maxlumiere/bot-relay-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI coding agent terminal-to-terminal communication. Local-first, SQLite-backed, webhook-integrated.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.20.0","zod":"^3.24.4","uuid":"^11.1.0","express":"^5.2.1","bcryptjs":"^3.0.3","better-sqlite3":"^11.9.1","@modelcontextprotocol/sdk":"~1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.1.1","@types/ws":"^8.18.1","fast-check":"^4.7.0","typescript":"^5.8.3","@types/uuid":"^10.0.0","@types/express":"^5.0.6","@types/bcryptjs":"^2.4.6","@types/better-sqlite3":"^7.6.13"},"optionalDependencies":{"sql.js":"^1.14.1"},"_npmOperationalInternal":{"tmp":"tmp/bot-relay-mcp_2.3.0_1776923113114_0.2615586952086062","host":"s3://npm-registry-packages-npm-production"}},"2.4.0":{"name":"bot-relay-mcp","version":"2.4.0","keywords":["mcp","claude-code","agent-communication","multi-agent","ai","model-context-protocol","agent-relay","cursor","cline"],"author":{"name":"Lumiere Ventures","email":"contact@lumiereventures.co"},"license":"MIT","_id":"bot-relay-mcp@2.4.0","maintainers":[{"name":"lumiereventures","email":"contact@lumiereventures.co"}],"homepage":"https://github.com/Maxlumiere/bot-relay-mcp","bugs":{"url":"https://github.com/Maxlumiere/bot-relay-mcp/issues"},"bin":{"relay":"bin/relay","bot-relay-mcp":"dist/index.js"},"dist":{"shasum":"e168c9db8e1391d8b584a10e89343530f169ef3f","tarball":"https://registry.npmjs.org/bot-relay-mcp/-/bot-relay-mcp-2.4.0.tgz","fileCount":291,"integrity":"sha512-4SDz6wZGgVs8ta+LaF3VUol7+fmLJUqNXvbKPqvSXP+f7DdAOR7j4jIW3YSdiAy1HiOnxOfSqVRkbSKW/v0QTA==","signatures":[{"sig":"MEUCIEFuA7ilEnGa4zX4G9tBxPhNJ7mjVoToxJZZs6HOdX5NAiEAqON2Wj3nK1JDXZD+6PK37ltII6yF3t4ZPpVcl0/ExPI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1770410},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"fb4cff0747b6809c02ae3124473b6a485f9aee9d","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","prepublishOnly":"bash scripts/pre-publish-check.sh"},"_npmUser":{"name":"lumiereventures","email":"contact@lumiereventures.co"},"overrides":{"hono":">=4.12.14"},"deprecated":"Contained inadvertently-published private data — please upgrade to 2.11.1+","repository":{"url":"git+https://github.com/Maxlumiere/bot-relay-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI coding agent terminal-to-terminal communication. Local-first, SQLite-backed, webhook-integrated.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.20.0","zod":"^3.24.4","uuid":"^11.1.0","express":"^5.2.1","bcryptjs":"^3.0.3","better-sqlite3":"^11.9.1","@modelcontextprotocol/sdk":"~1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.1.1","@types/ws":"^8.18.1","fast-check":"^4.7.0","typescript":"^5.8.3","@types/uuid":"^10.0.0","@types/express":"^5.0.6","@types/bcryptjs":"^2.4.6","@types/better-sqlite3":"^7.6.13"},"optionalDependencies":{"sql.js":"^1.14.1"},"_npmOperationalInternal":{"tmp":"tmp/bot-relay-mcp_2.4.0_1777011151963_0.41666061932969733","host":"s3://npm-registry-packages-npm-production"}},"2.4.1":{"name":"bot-relay-mcp","version":"2.4.1","keywords":["mcp","claude-code","agent-communication","multi-agent","ai","model-context-protocol","agent-relay","cursor","cline"],"author":{"name":"Lumiere Ventures","email":"contact@lumiereventures.co"},"license":"MIT","_id":"bot-relay-mcp@2.4.1","maintainers":[{"name":"lumiereventures","email":"contact@lumiereventures.co"}],"homepage":"https://github.com/Maxlumiere/bot-relay-mcp","bugs":{"url":"https://github.com/Maxlumiere/bot-relay-mcp/issues"},"bin":{"relay":"bin/relay","bot-relay-mcp":"dist/index.js"},"dist":{"shasum":"45009e17ac74799b8dda2ebd8c4370f5a52490c2","tarball":"https://registry.npmjs.org/bot-relay-mcp/-/bot-relay-mcp-2.4.1.tgz","fileCount":291,"integrity":"sha512-PXcRCvcSErfuepj5PuBavPp1U+VJME3pq8vhw4fJoS2LCJm0HkTWVRbuYf380iy9O+hkvprTFlDHMJlw7iNTrg==","signatures":[{"sig":"MEUCIF7n7J2r3epWKmwHr6ABZji9cHTW8UxpE38svVfvQ1H7AiEA9sJzdBfmH69v40gM2FB2bOTFR9V/or6IYb7nu2ULRR8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1780191},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"0ff25c905cb11df673e177ef8ebe477f1bf1addf","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","prepublishOnly":"bash scripts/pre-publish-check.sh"},"_npmUser":{"name":"lumiereventures","email":"contact@lumiereventures.co"},"overrides":{"hono":">=4.12.14"},"deprecated":"Contained inadvertently-published private data — please upgrade to 2.11.1+","repository":{"url":"git+https://github.com/Maxlumiere/bot-relay-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI coding agent terminal-to-terminal communication. Local-first, SQLite-backed, webhook-integrated.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.20.0","zod":"^3.24.4","uuid":"^11.1.0","express":"^5.2.1","bcryptjs":"^3.0.3","better-sqlite3":"^11.9.1","@modelcontextprotocol/sdk":"~1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.1.1","@types/ws":"^8.18.1","fast-check":"^4.7.0","typescript":"^5.8.3","@types/uuid":"^10.0.0","@types/express":"^5.0.6","@types/bcryptjs":"^2.4.6","@types/better-sqlite3":"^7.6.13"},"optionalDependencies":{"sql.js":"^1.14.1"},"_npmOperationalInternal":{"tmp":"tmp/bot-relay-mcp_2.4.1_1777022509562_0.0014224360656791557","host":"s3://npm-registry-packages-npm-production"}},"2.4.2":{"name":"bot-relay-mcp","version":"2.4.2","keywords":["mcp","claude-code","agent-communication","multi-agent","ai","model-context-protocol","agent-relay","cursor","cline"],"author":{"name":"Lumiere Ventures","email":"contact@lumiereventures.co"},"license":"MIT","_id":"bot-relay-mcp@2.4.2","maintainers":[{"name":"lumiereventures","email":"contact@lumiereventures.co"}],"homepage":"https://github.com/Maxlumiere/bot-relay-mcp","bugs":{"url":"https://github.com/Maxlumiere/bot-relay-mcp/issues"},"bin":{"relay":"bin/relay","bot-relay-mcp":"dist/index.js"},"dist":{"shasum":"1eec92c5732d01ac4f71f9f297e7520a5e12feb3","tarball":"https://registry.npmjs.org/bot-relay-mcp/-/bot-relay-mcp-2.4.2.tgz","fileCount":291,"integrity":"sha512-UPuz9vuIpL3K/NDsKddwm1zTATp05++/0oG8HjEPzvzQPKhCPmGZ2y1bjJg7KKu37ZZ/Zo+fgw+mwbyJdP/72w==","signatures":[{"sig":"MEYCIQCUjQQg1FnD8I/GudU1ehfW4gmo5zLWQlCrxWjdx9heawIhAMp5CTjWBKmwNZjAhXR6HkDDUCq5Ak88bMbNASENfPkk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1789004},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"72aacd2f4ad854953143124c829602c07f1e14f8","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","prepublishOnly":"bash scripts/pre-publish-check.sh"},"_npmUser":{"name":"lumiereventures","email":"contact@lumiereventures.co"},"overrides":{"hono":">=4.12.14"},"deprecated":"Contained inadvertently-published private data — please upgrade to 2.11.1+","repository":{"url":"git+https://github.com/Maxlumiere/bot-relay-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI coding agent terminal-to-terminal communication. Local-first, SQLite-backed, webhook-integrated.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.20.0","zod":"^3.24.4","uuid":"^11.1.0","express":"^5.2.1","bcryptjs":"^3.0.3","better-sqlite3":"^11.9.1","@modelcontextprotocol/sdk":"~1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.1.1","@types/ws":"^8.18.1","fast-check":"^4.7.0","typescript":"^5.8.3","@types/uuid":"^10.0.0","@types/express":"^5.0.6","@types/bcryptjs":"^2.4.6","@types/better-sqlite3":"^7.6.13"},"optionalDependencies":{"sql.js":"^1.14.1"},"_npmOperationalInternal":{"tmp":"tmp/bot-relay-mcp_2.4.2_1777261986128_0.7982324440982229","host":"s3://npm-registry-packages-npm-production"}},"2.4.3":{"name":"bot-relay-mcp","version":"2.4.3","keywords":["mcp","claude-code","agent-communication","multi-agent","ai","model-context-protocol","agent-relay","cursor","cline"],"author":{"name":"Lumiere Ventures","email":"contact@lumiereventures.co"},"license":"MIT","_id":"bot-relay-mcp@2.4.3","maintainers":[{"name":"lumiereventures","email":"contact@lumiereventures.co"}],"homepage":"https://github.com/Maxlumiere/bot-relay-mcp","bugs":{"url":"https://github.com/Maxlumiere/bot-relay-mcp/issues"},"bin":{"relay":"bin/relay","bot-relay-mcp":"dist/index.js"},"dist":{"shasum":"9848d1f046041a56ef92a28eebc3d31c1d18e569","tarball":"https://registry.npmjs.org/bot-relay-mcp/-/bot-relay-mcp-2.4.3.tgz","fileCount":291,"integrity":"sha512-A6ySgBtLQHczhe8ZbvHJ8g7DZ3pxGVELz6W24flVlaV85yaesMno5/3aWX2PfB30D9A7AXGJq5JofvWwxMjWOw==","signatures":[{"sig":"MEYCIQCBAofr7gligmtg6PIwf5BuKgyyVgy4nIFXKiHPbywpwwIhAMAGVr1xJxygEsCPUxKrD+Wyk+wwo5IbLsIgueaWfR+R","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1794220},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"0b36ede61fbb37ef0c18da907007103432df60cc","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","prepublishOnly":"bash scripts/pre-publish-check.sh"},"_npmUser":{"name":"lumiereventures","email":"contact@lumiereventures.co"},"overrides":{"hono":">=4.12.14"},"deprecated":"Contained inadvertently-published private data — please upgrade to 2.11.1+","repository":{"url":"git+https://github.com/Maxlumiere/bot-relay-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI coding agent terminal-to-terminal communication. Local-first, SQLite-backed, webhook-integrated.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.20.0","zod":"^3.24.4","uuid":"^11.1.0","express":"^5.2.1","bcryptjs":"^3.0.3","better-sqlite3":"^11.9.1","@modelcontextprotocol/sdk":"~1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.1.1","@types/ws":"^8.18.1","fast-check":"^4.7.0","typescript":"^5.8.3","@types/uuid":"^10.0.0","@types/express":"^5.0.6","@types/bcryptjs":"^2.4.6","@types/better-sqlite3":"^7.6.13"},"optionalDependencies":{"sql.js":"^1.14.1"},"_npmOperationalInternal":{"tmp":"tmp/bot-relay-mcp_2.4.3_1777277563220_0.7791468381070987","host":"s3://npm-registry-packages-npm-production"}},"2.4.4":{"name":"bot-relay-mcp","version":"2.4.4","keywords":["mcp","claude-code","agent-communication","multi-agent","ai","model-context-protocol","agent-relay","cursor","cline"],"author":{"name":"Lumiere Ventures","email":"contact@lumiereventures.co"},"license":"MIT","_id":"bot-relay-mcp@2.4.4","maintainers":[{"name":"lumiereventures","email":"contact@lumiereventures.co"}],"homepage":"https://github.com/Maxlumiere/bot-relay-mcp","bugs":{"url":"https://github.com/Maxlumiere/bot-relay-mcp/issues"},"bin":{"relay":"bin/relay","bot-relay-mcp":"dist/index.js"},"dist":{"shasum":"394b72128720f478187cec61d843f9dc842655c6","tarball":"https://registry.npmjs.org/bot-relay-mcp/-/bot-relay-mcp-2.4.4.tgz","fileCount":291,"integrity":"sha512-OKUMrS8PPFjGbnyPesVsY9ihXTGOQKaGVpmD/OO1lbW2cBGxD3uo7A2pL8w+stFZGqcALcAa6XqHX5sO2IrJXw==","signatures":[{"sig":"MEYCIQCZc434jJqzuqzu1/1mNzeb81MRK6ZiRDVApao4s1Gz0AIhAPDGa9uZ2awopiMbmGdP9w0a5BhJ6KFBHN4d3b8u9CRQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1826508},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"34436312f2ebfd1b81f4a839bfbbf8115bb28aae","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","prepublishOnly":"bash scripts/pre-publish-check.sh"},"_npmUser":{"name":"lumiereventures","email":"contact@lumiereventures.co"},"overrides":{"hono":">=4.12.14"},"deprecated":"Contained inadvertently-published private data — please upgrade to 2.11.1+","repository":{"url":"git+https://github.com/Maxlumiere/bot-relay-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI coding agent terminal-to-terminal communication. Local-first, SQLite-backed, webhook-integrated.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.20.0","zod":"^3.24.4","uuid":"^11.1.0","express":"^5.2.1","bcryptjs":"^3.0.3","better-sqlite3":"^11.9.1","@modelcontextprotocol/sdk":"~1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.1.1","@types/ws":"^8.18.1","fast-check":"^4.7.0","typescript":"^5.8.3","@types/uuid":"^10.0.0","@types/express":"^5.0.6","@types/bcryptjs":"^2.4.6","@types/better-sqlite3":"^7.6.13"},"optionalDependencies":{"sql.js":"^1.14.1"},"_npmOperationalInternal":{"tmp":"tmp/bot-relay-mcp_2.4.4_1777355209492_0.6690694494213087","host":"s3://npm-registry-packages-npm-production"}},"2.4.5":{"name":"bot-relay-mcp","version":"2.4.5","keywords":["mcp","claude-code","agent-communication","multi-agent","ai","model-context-protocol","agent-relay","cursor","cline"],"author":{"name":"Lumiere Ventures","email":"contact@lumiereventures.co"},"license":"MIT","_id":"bot-relay-mcp@2.4.5","maintainers":[{"name":"lumiereventures","email":"contact@lumiereventures.co"}],"homepage":"https://github.com/Maxlumiere/bot-relay-mcp","bugs":{"url":"https://github.com/Maxlumiere/bot-relay-mcp/issues"},"bin":{"relay":"bin/relay","bot-relay-mcp":"dist/index.js"},"dist":{"shasum":"782f78dfa5a615631c9e40eddda13088557d09ce","tarball":"https://registry.npmjs.org/bot-relay-mcp/-/bot-relay-mcp-2.4.5.tgz","fileCount":291,"integrity":"sha512-7Avrg/Aa8SaNM7x0OsGiC9J+JDvq3IMnuC8INlyJkCiA9h9Qc44jq5ctlH27Gtl/Q2XB2g4ankYvSuWoYHnTfA==","signatures":[{"sig":"MEUCIQC0Luh1ePs+Gx7SDYtjuMFtbK15wRxe7QaRN3QoqY2IXgIgU84RhJ5qwSU6+Uod3CXGST6Y6ldGdw7qh0y94u0PRDk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1844136},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"644364540dc4a8fed4a858c253d31362a4e0e940","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","prepublishOnly":"bash scripts/pre-publish-check.sh"},"_npmUser":{"name":"lumiereventures","email":"contact@lumiereventures.co"},"overrides":{"hono":">=4.12.14"},"deprecated":"Contained inadvertently-published private data — please upgrade to 2.11.1+","repository":{"url":"git+https://github.com/Maxlumiere/bot-relay-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI coding agent terminal-to-terminal communication. Local-first, SQLite-backed, webhook-integrated.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.20.0","zod":"^3.24.4","uuid":"^11.1.0","express":"^5.2.1","bcryptjs":"^3.0.3","better-sqlite3":"^11.9.1","@modelcontextprotocol/sdk":"~1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.1.1","@types/ws":"^8.18.1","fast-check":"^4.7.0","typescript":"^5.8.3","@types/uuid":"^10.0.0","@types/express":"^5.0.6","@types/bcryptjs":"^2.4.6","@types/better-sqlite3":"^7.6.13"},"optionalDependencies":{"sql.js":"^1.14.1"},"_npmOperationalInternal":{"tmp":"tmp/bot-relay-mcp_2.4.5_1777432395993_0.27165330150375167","host":"s3://npm-registry-packages-npm-production"}},"2.5.0":{"name":"bot-relay-mcp","version":"2.5.0","keywords":["mcp","claude-code","agent-communication","multi-agent","ai","model-context-protocol","agent-relay","cursor","cline"],"author":{"name":"Lumiere Ventures","email":"contact@lumiereventures.co"},"license":"MIT","_id":"bot-relay-mcp@2.5.0","maintainers":[{"name":"lumiereventures","email":"contact@lumiereventures.co"}],"homepage":"https://github.com/Maxlumiere/bot-relay-mcp","bugs":{"url":"https://github.com/Maxlumiere/bot-relay-mcp/issues"},"bin":{"relay":"bin/relay","bot-relay-mcp":"dist/index.js"},"dist":{"shasum":"3102b61ebccb4d05609123c78f586c18f3770b0a","tarball":"https://registry.npmjs.org/bot-relay-mcp/-/bot-relay-mcp-2.5.0.tgz","fileCount":299,"integrity":"sha512-iK6f5mZJXp7aqnxzSaxHWbHd8/Trzg3ukFaG5FW+1ljvhjBALNQ25Y14CImK26HFDYUbOJi0xvqz99V3mT+6Eg==","signatures":[{"sig":"MEUCIFOG0KP0/6HFi8G/n2lWx4uUuoxhMck/x6rq0oswFDBwAiEAw+ehdDfC44x9f67PLNwQJrza10OQYHE43fwwuBb6LQQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1897113},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"058b3fe683f3a234833d1b8f3dcea55d96e8ca79","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","prepublishOnly":"bash scripts/pre-publish-check.sh"},"_npmUser":{"name":"lumiereventures","email":"contact@lumiereventures.co"},"overrides":{"hono":">=4.12.14"},"deprecated":"Contained inadvertently-published private data — please upgrade to 2.11.1+","repository":{"url":"git+https://github.com/Maxlumiere/bot-relay-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI coding agent terminal-to-terminal communication. Local-first, SQLite-backed, webhook-integrated.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.20.0","zod":"^3.24.4","uuid":"^11.1.0","express":"^5.2.1","bcryptjs":"^3.0.3","better-sqlite3":"^11.9.1","@modelcontextprotocol/sdk":"~1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.1.1","@types/ws":"^8.18.1","fast-check":"^4.7.0","typescript":"^5.8.3","@types/uuid":"^10.0.0","@types/express":"^5.0.6","@types/bcryptjs":"^2.4.6","@types/better-sqlite3":"^7.6.13"},"optionalDependencies":{"sql.js":"^1.14.1"},"_npmOperationalInternal":{"tmp":"tmp/bot-relay-mcp_2.5.0_1777871918359_0.6477530050790026","host":"s3://npm-registry-packages-npm-production"}},"2.6.0":{"name":"bot-relay-mcp","version":"2.6.0","keywords":["mcp","claude-code","agent-communication","multi-agent","ai","model-context-protocol","agent-relay","cursor","cline"],"author":{"name":"Lumiere Ventures","email":"contact@lumiereventures.co"},"license":"MIT","_id":"bot-relay-mcp@2.6.0","maintainers":[{"name":"lumiereventures","email":"contact@lumiereventures.co"}],"homepage":"https://github.com/Maxlumiere/bot-relay-mcp","bugs":{"url":"https://github.com/Maxlumiere/bot-relay-mcp/issues"},"bin":{"relay":"bin/relay","bot-relay-mcp":"dist/index.js"},"dist":{"shasum":"ce27ec4ef91a7b9ccec7c1c49f5af518c6473c5a","tarball":"https://registry.npmjs.org/bot-relay-mcp/-/bot-relay-mcp-2.6.0.tgz","fileCount":340,"integrity":"sha512-oD6Olh+F0ZDonv4efv9KuVWpRaZYtPIWbmZTBQ3v5e4rW9JYC0vpFeoHDdZOA8exz6Misz5UVXySDHoXwO+nSA==","signatures":[{"sig":"MEQCICjXyUcWo77Q/H0mDL4Bu7thXeCnjukEFw3uiBnZt/xrAiAUCRTaqoZkOyLLWbPYNz69Fw/L0zKl687rOLyasetpNw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2233943},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"ef8b9055de0c448b7adc7399d66ed66cbd0122b6","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","prepublishOnly":"bash scripts/pre-publish-check.sh"},"_npmUser":{"name":"lumiereventures","email":"contact@lumiereventures.co"},"overrides":{"hono":">=4.12.14"},"deprecated":"Contained inadvertently-published private data — please upgrade to 2.11.1+","repository":{"url":"git+https://github.com/Maxlumiere/bot-relay-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI coding agent terminal-to-terminal communication. Local-first, SQLite-backed, webhook-integrated.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.20.0","zod":"^3.24.4","uuid":"^11.1.0","express":"^5.2.1","bcryptjs":"^3.0.3","better-sqlite3":"^11.9.1","@modelcontextprotocol/sdk":"~1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.1.1","@types/ws":"^8.18.1","fast-check":"^4.7.0","typescript":"^5.8.3","@types/uuid":"^10.0.0","@types/express":"^5.0.6","@types/bcryptjs":"^2.4.6","@types/better-sqlite3":"^7.6.13"},"optionalDependencies":{"sql.js":"^1.14.1"},"_npmOperationalInternal":{"tmp":"tmp/bot-relay-mcp_2.6.0_1777993804408_0.17235053313962134","host":"s3://npm-registry-packages-npm-production"}},"2.6.1":{"name":"bot-relay-mcp","version":"2.6.1","keywords":["mcp","claude-code","agent-communication","multi-agent","ai","model-context-protocol","agent-relay","cursor","cline"],"author":{"name":"Lumiere Ventures","email":"contact@lumiereventures.co"},"license":"MIT","_id":"bot-relay-mcp@2.6.1","maintainers":[{"name":"lumiereventures","email":"contact@lumiereventures.co"}],"homepage":"https://github.com/Maxlumiere/bot-relay-mcp","bugs":{"url":"https://github.com/Maxlumiere/bot-relay-mcp/issues"},"bin":{"relay":"bin/relay","bot-relay-mcp":"dist/index.js"},"dist":{"shasum":"14067fdcf91fa9c2dea404bf2c84d378c6488e89","tarball":"https://registry.npmjs.org/bot-relay-mcp/-/bot-relay-mcp-2.6.1.tgz","fileCount":340,"integrity":"sha512-pSqOLposTT9GqjT6M1kpLgL1QWdBdqi/5PtZEJQhjYc/TJh0r8MJ5lbEZX1/2eADeTDXqTtVRnzEoZMpX/+adQ==","signatures":[{"sig":"MEYCIQCJgkFSjX8eE7JWyntHrHkLKVqb7e/DBTIPQSoZvXpLWQIhAJcdNBMS2KqEy6tvun3wLBC0xeNqJDeEsnC5JBh8HXhA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2238353},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"94c8905c297594b070a0d091c155eb9f46e4c616","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","prepublishOnly":"bash scripts/pre-publish-check.sh"},"_npmUser":{"name":"lumiereventures","email":"contact@lumiereventures.co"},"overrides":{"hono":">=4.12.14"},"deprecated":"Contained inadvertently-published private data — please upgrade to 2.11.1+","repository":{"url":"git+https://github.com/Maxlumiere/bot-relay-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI coding agent terminal-to-terminal communication. Local-first, SQLite-backed, webhook-integrated.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.20.0","zod":"^3.24.4","uuid":"^11.1.0","express":"^5.2.1","bcryptjs":"^3.0.3","better-sqlite3":"^11.9.1","@modelcontextprotocol/sdk":"~1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.1.1","@types/ws":"^8.18.1","fast-check":"^4.7.0","typescript":"^5.8.3","@types/uuid":"^10.0.0","@types/express":"^5.0.6","@types/bcryptjs":"^2.4.6","@types/better-sqlite3":"^7.6.13"},"optionalDependencies":{"sql.js":"^1.14.1"},"_npmOperationalInternal":{"tmp":"tmp/bot-relay-mcp_2.6.1_1778052935279_0.6879169768749018","host":"s3://npm-registry-packages-npm-production"}},"2.6.2":{"name":"bot-relay-mcp","version":"2.6.2","keywords":["mcp","claude-code","agent-communication","multi-agent","ai","model-context-protocol","agent-relay","cursor","cline"],"author":{"name":"Lumiere Ventures","email":"contact@lumiereventures.co"},"license":"MIT","_id":"bot-relay-mcp@2.6.2","maintainers":[{"name":"lumiereventures","email":"contact@lumiereventures.co"}],"homepage":"https://github.com/Maxlumiere/bot-relay-mcp","bugs":{"url":"https://github.com/Maxlumiere/bot-relay-mcp/issues"},"bin":{"relay":"bin/relay","bot-relay-mcp":"dist/index.js"},"dist":{"shasum":"4df73583244f3b789af84c81e2f02e56f6a14495","tarball":"https://registry.npmjs.org/bot-relay-mcp/-/bot-relay-mcp-2.6.2.tgz","fileCount":340,"integrity":"sha512-E7mFPOBIhsSwUbEK+Dnq5NmaJNOUuw5w/65Uu86TxeZGwTC8YaCbxM0l9SMdYogJuJdepgcq27Wt3okNw+J1nQ==","signatures":[{"sig":"MEUCIBZDimGPlqcTusLSw5x3wLgtS0+zoNnOrMOknX3WKohVAiEA0r2XC5pV4GWACeAEarFyoftR9jWrxaF28xn8qK1NpQM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2246789},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"4825ef98a5a454a81f04b8515c9af2dd8dd25aca","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","prepublishOnly":"bash scripts/pre-publish-check.sh"},"_npmUser":{"name":"lumiereventures","email":"contact@lumiereventures.co"},"overrides":{"hono":">=4.12.14"},"deprecated":"Contained inadvertently-published private data — please upgrade to 2.11.1+","repository":{"url":"git+https://github.com/Maxlumiere/bot-relay-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI coding agent terminal-to-terminal communication. Local-first, SQLite-backed, webhook-integrated.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.20.0","zod":"^3.24.4","uuid":"^11.1.0","express":"^5.2.1","bcryptjs":"^3.0.3","better-sqlite3":"^11.9.1","@modelcontextprotocol/sdk":"~1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.1.1","@types/ws":"^8.18.1","fast-check":"^4.7.0","typescript":"^5.8.3","@types/uuid":"^10.0.0","@types/express":"^5.0.6","@types/bcryptjs":"^2.4.6","@types/better-sqlite3":"^7.6.13"},"optionalDependencies":{"sql.js":"^1.14.1"},"_npmOperationalInternal":{"tmp":"tmp/bot-relay-mcp_2.6.2_1778122300587_0.7607434126381667","host":"s3://npm-registry-packages-npm-production"}},"2.6.3":{"name":"bot-relay-mcp","version":"2.6.3","keywords":["mcp","claude-code","agent-communication","multi-agent","ai","model-context-protocol","agent-relay","cursor","cline"],"author":{"name":"Lumiere Ventures","email":"contact@lumiereventures.co"},"license":"MIT","_id":"bot-relay-mcp@2.6.3","maintainers":[{"name":"lumiereventures","email":"contact@lumiereventures.co"}],"homepage":"https://github.com/Maxlumiere/bot-relay-mcp","bugs":{"url":"https://github.com/Maxlumiere/bot-relay-mcp/issues"},"bin":{"relay":"bin/relay","bot-relay-mcp":"dist/index.js"},"dist":{"shasum":"892387522b6eaf97eff35212b9efd01491569492","tarball":"https://registry.npmjs.org/bot-relay-mcp/-/bot-relay-mcp-2.6.3.tgz","fileCount":340,"integrity":"sha512-jS1cwIpcthnOfmWEwDbild64ECifGM3yVRISw51HPXosFso2HptyG8bhOjfDFjgy7amIxSeQqFry28/X7evYgA==","signatures":[{"sig":"MEUCIQC5YGLq/EL+Z7HNX1WxCWYgpy7Gn/MA6Jp7RBP+1vvQWAIgftkYVed4GgocjLSD74NfAYIW0gobILr2Bm0sZt6awvo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2250830},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"7a169ecfe90cc991d9d6af943fcbdab2d4f382fd","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","prepublishOnly":"bash scripts/pre-publish-check.sh"},"_npmUser":{"name":"lumiereventures","email":"contact@lumiereventures.co"},"overrides":{"hono":">=4.12.14"},"deprecated":"Contained inadvertently-published private data — please upgrade to 2.11.1+","repository":{"url":"git+https://github.com/Maxlumiere/bot-relay-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI coding agent terminal-to-terminal communication. Local-first, SQLite-backed, webhook-integrated.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.20.0","zod":"^3.24.4","uuid":"^11.1.0","express":"^5.2.1","bcryptjs":"^3.0.3","better-sqlite3":"^11.9.1","@modelcontextprotocol/sdk":"~1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.1.1","@types/ws":"^8.18.1","fast-check":"^4.7.0","typescript":"^5.8.3","@types/uuid":"^10.0.0","@types/express":"^5.0.6","@types/bcryptjs":"^2.4.6","@types/better-sqlite3":"^7.6.13"},"optionalDependencies":{"sql.js":"^1.14.1"},"_npmOperationalInternal":{"tmp":"tmp/bot-relay-mcp_2.6.3_1778206436350_0.15491626925994284","host":"s3://npm-registry-packages-npm-production"}},"2.7.1":{"name":"bot-relay-mcp","version":"2.7.1","keywords":["mcp","claude-code","agent-communication","multi-agent","ai","model-context-protocol","agent-relay","cursor","cline"],"author":{"name":"Lumiere Ventures","email":"contact@lumiereventures.co"},"license":"MIT","_id":"bot-relay-mcp@2.7.1","maintainers":[{"name":"lumiereventures","email":"contact@lumiereventures.co"}],"homepage":"https://github.com/Maxlumiere/bot-relay-mcp","bugs":{"url":"https://github.com/Maxlumiere/bot-relay-mcp/issues"},"bin":{"relay":"bin/relay","bot-relay-mcp":"dist/index.js"},"dist":{"shasum":"b5fbdc04bd1b63609ce4496ffe4c5de0574729bb","tarball":"https://registry.npmjs.org/bot-relay-mcp/-/bot-relay-mcp-2.7.1.tgz","fileCount":347,"integrity":"sha512-NLqGVPOlRBrZFykmpSvSVwsJLAzpvsxdRsBNSj76ILY8tkzYTPdWQK8TRNFkAygFRevVYKb5bWDmjopaUKwsFQ==","signatures":[{"sig":"MEUCIQCiOOJm3HBgWj66unzU2rGF5gLKWqxYEmxm64N+ioQ4jAIgHhRihdYV8PlkhtRftzfqbWSFpqsaoBrGHpOx/haCpx4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2372009},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"189a170acdb6f6f030b70643b992afcff705da38","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","prepublishOnly":"bash scripts/pre-publish-check.sh"},"_npmUser":{"name":"lumiereventures","email":"contact@lumiereventures.co"},"overrides":{"hono":">=4.12.14"},"deprecated":"Contained inadvertently-published private data — please upgrade to 2.11.1+","repository":{"url":"git+https://github.com/Maxlumiere/bot-relay-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI coding agent terminal-to-terminal communication. Local-first, SQLite-backed, webhook-integrated.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.20.0","zod":"^3.24.4","uuid":"^11.1.0","express":"^5.2.1","bcryptjs":"^3.0.3","better-sqlite3":"^11.9.1","@modelcontextprotocol/sdk":"~1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.1.1","@types/ws":"^8.18.1","fast-check":"^4.7.0","typescript":"^5.8.3","@types/uuid":"^10.0.0","@types/express":"^5.0.6","@types/bcryptjs":"^2.4.6","@types/better-sqlite3":"^7.6.13"},"optionalDependencies":{"sql.js":"^1.14.1"},"_npmOperationalInternal":{"tmp":"tmp/bot-relay-mcp_2.7.1_1778662892822_0.08735322681588586","host":"s3://npm-registry-packages-npm-production"}},"2.7.2":{"name":"bot-relay-mcp","version":"2.7.2","keywords":["mcp","claude-code","agent-communication","multi-agent","ai","model-context-protocol","agent-relay","cursor","cline"],"author":{"name":"Lumiere Ventures","email":"contact@lumiereventures.co"},"license":"MIT","_id":"bot-relay-mcp@2.7.2","maintainers":[{"name":"lumiereventures","email":"contact@lumiereventures.co"}],"homepage":"https://github.com/Maxlumiere/bot-relay-mcp","bugs":{"url":"https://github.com/Maxlumiere/bot-relay-mcp/issues"},"bin":{"relay":"bin/relay","bot-relay-mcp":"dist/index.js"},"dist":{"shasum":"3b9a3a17d1bcb717af93f26b5a9039a58ca867a9","tarball":"https://registry.npmjs.org/bot-relay-mcp/-/bot-relay-mcp-2.7.2.tgz","fileCount":347,"integrity":"sha512-MqJrUESfHNzL4RnguqEmlbkzq6+fvNtW0nguyr4eopkXC9ltUGQfqRkNxZzRuhbnSEYxc8YnWgBG2oOpZr6/cg==","signatures":[{"sig":"MEUCIE10eqPyhOqte2HsEEUNGqZCPRLlJHGE6UwIlgPA7qQDAiEA6u0cj0NreAjHdUCiyB1QvojAmkQo5Qcqi4+W5EZJfcA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2389486},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"14bb3dbe92f891eac04a9f7c0bcc645df9e03d46","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","prepublishOnly":"bash scripts/pre-publish-check.sh"},"_npmUser":{"name":"lumiereventures","email":"contact@lumiereventures.co"},"overrides":{"hono":">=4.12.14"},"deprecated":"Contained inadvertently-published private data — please upgrade to 2.11.1+","repository":{"url":"git+https://github.com/Maxlumiere/bot-relay-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI coding agent terminal-to-terminal communication. Local-first, SQLite-backed, webhook-integrated.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.20.0","zod":"^3.24.4","uuid":"^11.1.0","express":"^5.2.1","bcryptjs":"^3.0.3","better-sqlite3":"^11.9.1","@modelcontextprotocol/sdk":"~1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.1.1","@types/ws":"^8.18.1","fast-check":"^4.7.0","typescript":"^5.8.3","@types/uuid":"^10.0.0","@types/express":"^5.0.6","@types/bcryptjs":"^2.4.6","@types/better-sqlite3":"^7.6.13"},"optionalDependencies":{"sql.js":"^1.14.1"},"_npmOperationalInternal":{"tmp":"tmp/bot-relay-mcp_2.7.2_1779395948534_0.34404440913354883","host":"s3://npm-registry-packages-npm-production"}},"2.7.3":{"name":"bot-relay-mcp","version":"2.7.3","keywords":["mcp","claude-code","agent-communication","multi-agent","ai","model-context-protocol","agent-relay","cursor","cline"],"author":{"name":"Lumiere Ventures","email":"contact@lumiereventures.co"},"license":"MIT","_id":"bot-relay-mcp@2.7.3","maintainers":[{"name":"lumiereventures","email":"contact@lumiereventures.co"}],"homepage":"https://github.com/Maxlumiere/bot-relay-mcp","bugs":{"url":"https://github.com/Maxlumiere/bot-relay-mcp/issues"},"bin":{"relay":"bin/relay","bot-relay-mcp":"dist/index.js"},"dist":{"shasum":"108cee6c4240072137754f07336c50db07157e0f","tarball":"https://registry.npmjs.org/bot-relay-mcp/-/bot-relay-mcp-2.7.3.tgz","fileCount":355,"integrity":"sha512-LBP+hLZgjUqcQolgBw9eIKDZfESmhDPclgBUKQB6tO3fvpvO7gl/B/wUM7AEhUROPoPuh1jY3tu7QpC6fHfqpg==","signatures":[{"sig":"MEUCICbxxb4HQdr80zqDdMBKqwyiqITTMAbA7PMdql/9wRISAiEAv0maw5M2d4Yw2L5P3c2EP/ce8O7JdJQgieIyowa1o80=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2423511},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"7fabf7f32f00b34243737771249c54af1b9bf8bb","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","prepublishOnly":"bash scripts/pre-publish-check.sh"},"_npmUser":{"name":"lumiereventures","email":"contact@lumiereventures.co"},"overrides":{"hono":">=4.12.14"},"deprecated":"Contained inadvertently-published private data — please upgrade to 2.11.1+","repository":{"url":"git+https://github.com/Maxlumiere/bot-relay-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI coding agent terminal-to-terminal communication. Local-first, SQLite-backed, webhook-integrated.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.20.0","zod":"^3.24.4","uuid":"^11.1.0","express":"^5.2.1","bcryptjs":"^3.0.3","better-sqlite3":"^11.9.1","@modelcontextprotocol/sdk":"~1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","@types/ws":"^8.18.1","fast-check":"^4.7.0","typescript":"^5.8.3","@types/uuid":"^10.0.0","@types/express":"^5.0.6","@types/bcryptjs":"^2.4.6","@types/better-sqlite3":"^7.6.13"},"optionalDependencies":{"sql.js":"^1.14.1"},"_npmOperationalInternal":{"tmp":"tmp/bot-relay-mcp_2.7.3_1780475291015_0.21477236211492245","host":"s3://npm-registry-packages-npm-production"}},"2.7.4":{"name":"bot-relay-mcp","version":"2.7.4","keywords":["mcp","claude-code","agent-communication","multi-agent","ai","model-context-protocol","agent-relay","cursor","cline"],"author":{"name":"Lumiere Ventures","email":"contact@lumiereventures.co"},"license":"MIT","_id":"bot-relay-mcp@2.7.4","maintainers":[{"name":"lumiereventures","email":"contact@lumiereventures.co"}],"homepage":"https://github.com/Maxlumiere/bot-relay-mcp","bugs":{"url":"https://github.com/Maxlumiere/bot-relay-mcp/issues"},"bin":{"relay":"bin/relay","bot-relay-mcp":"dist/index.js"},"dist":{"shasum":"6ea392bac9f7befdc0d47d06eb259f90ec96476c","tarball":"https://registry.npmjs.org/bot-relay-mcp/-/bot-relay-mcp-2.7.4.tgz","fileCount":355,"integrity":"sha512-3HlETZGgQd9NmM+gj067PpjH6wD0jNLQGNkhFrFnq1ymtOsdeld0OmNxOhPUpdilG7WYBKo+oXeUGtzcmUpC2g==","signatures":[{"sig":"MEUCIDPI8oh0gk2vcyIfY2eNqlq5ithil4VbtDAGCUV0byLVAiEAjmNuVmcartrjuvYmtvHmcXxnuPhfMEufIfsgO4/tBbM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2429968},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"98b049db0ff9a8aeda83ffb02f25f8f7a4d99077","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","prepublishOnly":"bash scripts/pre-publish-check.sh"},"_npmUser":{"name":"lumiereventures","email":"contact@lumiereventures.co"},"overrides":{"hono":">=4.12.14"},"deprecated":"Contained inadvertently-published private data — please upgrade to 2.11.1+","repository":{"url":"git+https://github.com/Maxlumiere/bot-relay-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI coding agent terminal-to-terminal communication. Local-first, SQLite-backed, webhook-integrated.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.20.0","zod":"^3.24.4","uuid":"^11.1.0","express":"^5.2.1","bcryptjs":"^3.0.3","better-sqlite3":"^11.9.1","@modelcontextprotocol/sdk":"~1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","@types/ws":"^8.18.1","fast-check":"^4.7.0","typescript":"^5.8.3","@types/uuid":"^10.0.0","@types/express":"^5.0.6","@types/bcryptjs":"^2.4.6","@types/better-sqlite3":"^7.6.13"},"optionalDependencies":{"sql.js":"^1.14.1"},"_npmOperationalInternal":{"tmp":"tmp/bot-relay-mcp_2.7.4_1780565414034_0.9857022684915373","host":"s3://npm-registry-packages-npm-production"}},"2.8.0":{"name":"bot-relay-mcp","version":"2.8.0","keywords":["mcp","claude-code","agent-communication","multi-agent","ai","model-context-protocol","agent-relay","cursor","cline"],"author":{"name":"Lumiere Ventures","email":"contact@lumiereventures.co"},"license":"MIT","_id":"bot-relay-mcp@2.8.0","maintainers":[{"name":"lumiereventures","email":"contact@lumiereventures.co"}],"homepage":"https://github.com/Maxlumiere/bot-relay-mcp","bugs":{"url":"https://github.com/Maxlumiere/bot-relay-mcp/issues"},"bin":{"relay":"bin/relay","bot-relay-mcp":"dist/index.js"},"dist":{"shasum":"648a72748a368253d89afcd9b14a4504a0db6922","tarball":"https://registry.npmjs.org/bot-relay-mcp/-/bot-relay-mcp-2.8.0.tgz","fileCount":355,"integrity":"sha512-z5EBSZzA76whrFiWnNxkMiW0v9xO9OmM/BYCeHTyb4gkfMdfhS0d56P7Vd9wpoA47kAyLBOojsRgysrQDD01yA==","signatures":[{"sig":"MEYCIQD3EJObp6dQi53NhRatFgK0qWnwKDu8DycTxmaIHEjYDQIhALZR1gXyI7nTMs9GmLph6CMvhISnHavtHm5lqidDm7Dp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2463002},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"60f69503d1617af7254d16995342cc562e087448","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","prepublishOnly":"bash scripts/pre-publish-check.sh"},"_npmUser":{"name":"lumiereventures","email":"contact@lumiereventures.co"},"overrides":{"hono":">=4.12.14"},"deprecated":"Contained inadvertently-published private data — please upgrade to 2.11.1+","repository":{"url":"git+https://github.com/Maxlumiere/bot-relay-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI coding agent terminal-to-terminal communication. Local-first, SQLite-backed, webhook-integrated.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.20.0","zod":"^3.24.4","uuid":"^11.1.0","express":"^5.2.1","bcryptjs":"^3.0.3","better-sqlite3":"^11.9.1","@modelcontextprotocol/sdk":"~1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","@types/ws":"^8.18.1","fast-check":"^4.7.0","typescript":"^5.8.3","@types/uuid":"^10.0.0","@types/express":"^5.0.6","@types/bcryptjs":"^2.4.6","@types/better-sqlite3":"^7.6.13"},"optionalDependencies":{"sql.js":"^1.14.1"},"_npmOperationalInternal":{"tmp":"tmp/bot-relay-mcp_2.8.0_1780650556845_0.6850553164246111","host":"s3://npm-registry-packages-npm-production"}},"2.9.0":{"name":"bot-relay-mcp","version":"2.9.0","keywords":["mcp","claude-code","agent-communication","multi-agent","ai","model-context-protocol","agent-relay","cursor","cline"],"author":{"name":"Lumiere Ventures","email":"contact@lumiereventures.co"},"license":"MIT","_id":"bot-relay-mcp@2.9.0","maintainers":[{"name":"lumiereventures","email":"contact@lumiereventures.co"}],"homepage":"https://github.com/Maxlumiere/bot-relay-mcp","bugs":{"url":"https://github.com/Maxlumiere/bot-relay-mcp/issues"},"bin":{"relay":"bin/relay","bot-relay-mcp":"dist/index.js"},"dist":{"shasum":"1b7101af3fbda585ae7f2dbec6e5ef425e7f8c39","tarball":"https://registry.npmjs.org/bot-relay-mcp/-/bot-relay-mcp-2.9.0.tgz","fileCount":356,"integrity":"sha512-9eeLDN4f4Jg+zJHN8qFcZF7UYm9hwvy/uDil+MgedqlmL1aXzaZj3wmhn8g9oD0NFQAYNlYtnM11dsBIUVxFMg==","signatures":[{"sig":"MEUCIQC9x2XMratQiy5tC5u1+VvFEERtOZW9Iz56fvTCrADbOwIgWlBghhwi2Hkq2ssk9BsZAPlZGiYFnIeZFi/34caW+E8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2490674},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"bfba23a017b52f9535c8988328f540899a25e6f0","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","prepublishOnly":"bash scripts/pre-publish-check.sh"},"_npmUser":{"name":"lumiereventures","email":"contact@lumiereventures.co"},"overrides":{"hono":">=4.12.14"},"deprecated":"Contained inadvertently-published private data — please upgrade to 2.11.1+","repository":{"url":"git+https://github.com/Maxlumiere/bot-relay-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI coding agent terminal-to-terminal communication. Local-first, SQLite-backed, webhook-integrated.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.20.0","zod":"^3.24.4","uuid":"^11.1.0","express":"^5.2.1","bcryptjs":"^3.0.3","better-sqlite3":"^11.9.1","@modelcontextprotocol/sdk":"~1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","@types/ws":"^8.18.1","fast-check":"^4.7.0","typescript":"^5.8.3","@types/uuid":"^10.0.0","@types/express":"^5.0.6","@types/bcryptjs":"^2.4.6","@types/better-sqlite3":"^7.6.13"},"optionalDependencies":{"sql.js":"^1.14.1"},"_npmOperationalInternal":{"tmp":"tmp/bot-relay-mcp_2.9.0_1780995628995_0.06546627940776895","host":"s3://npm-registry-packages-npm-production"}},"2.9.1":{"name":"bot-relay-mcp","version":"2.9.1","keywords":["mcp","claude-code","agent-communication","multi-agent","ai","model-context-protocol","agent-relay","cursor","cline"],"author":{"name":"Lumiere Ventures","email":"contact@lumiereventures.co"},"license":"MIT","_id":"bot-relay-mcp@2.9.1","maintainers":[{"name":"lumiereventures","email":"contact@lumiereventures.co"}],"homepage":"https://github.com/Maxlumiere/bot-relay-mcp","bugs":{"url":"https://github.com/Maxlumiere/bot-relay-mcp/issues"},"bin":{"relay":"bin/relay","bot-relay-mcp":"dist/index.js"},"dist":{"shasum":"416052bee4aea4185a37d5955e28694a2c7d41f6","tarball":"https://registry.npmjs.org/bot-relay-mcp/-/bot-relay-mcp-2.9.1.tgz","fileCount":356,"integrity":"sha512-Jvwq+2xhkvyrKO56YkS48+HRtRpc2eumBsXbPgRLZYwWafeVJtTnsLuofoxJkjf7V94NGqTJropPJVYK2w5JHg==","signatures":[{"sig":"MEUCIE8A5cyZYmGL0XseCBu3HUdKTqfdSXt2cm8M/jehf5fVAiEA5hfkLknY/F8QNHvJRZM3rGBYA/n7mna5+bWTePaNRas=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2496939},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"dca2237092d6c429d6371fcafed311a7a729ad56","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","prepublishOnly":"bash scripts/pre-publish-check.sh"},"_npmUser":{"name":"lumiereventures","email":"contact@lumiereventures.co"},"overrides":{"hono":">=4.12.14"},"deprecated":"Contained inadvertently-published private data — please upgrade to 2.11.1+","repository":{"url":"git+https://github.com/Maxlumiere/bot-relay-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI coding agent terminal-to-terminal communication. Local-first, SQLite-backed, webhook-integrated.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.20.0","zod":"^3.24.4","uuid":"^11.1.0","express":"^5.2.1","bcryptjs":"^3.0.3","better-sqlite3":"^11.9.1","@modelcontextprotocol/sdk":"~1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","@types/ws":"^8.18.1","fast-check":"^4.7.0","typescript":"^5.8.3","@types/uuid":"^10.0.0","@types/express":"^5.0.6","@types/bcryptjs":"^2.4.6","@types/better-sqlite3":"^7.6.13"},"optionalDependencies":{"sql.js":"^1.14.1"},"_npmOperationalInternal":{"tmp":"tmp/bot-relay-mcp_2.9.1_1781163755984_0.16216077657569183","host":"s3://npm-registry-packages-npm-production"}},"2.10.0":{"name":"bot-relay-mcp","version":"2.10.0","keywords":["mcp","claude-code","agent-communication","multi-agent","ai","model-context-protocol","agent-relay","cursor","cline"],"author":{"name":"Lumiere Ventures","email":"contact@lumiereventures.co"},"license":"MIT","_id":"bot-relay-mcp@2.10.0","maintainers":[{"name":"lumiereventures","email":"contact@lumiereventures.co"}],"homepage":"https://github.com/Maxlumiere/bot-relay-mcp","bugs":{"url":"https://github.com/Maxlumiere/bot-relay-mcp/issues"},"bin":{"relay":"bin/relay","bot-relay-mcp":"dist/index.js"},"dist":{"shasum":"b6563e6eb476abb89ed8355a1dafa2f0a877e8f1","tarball":"https://registry.npmjs.org/bot-relay-mcp/-/bot-relay-mcp-2.10.0.tgz","fileCount":360,"integrity":"sha512-4rvBpQoj05IgDYY9+FQz9/Mof4d/ZtF4NKI+yh10FNsX8O+hQ50BWXZR46PWgQqAsbtNvkIc/HWmjRs2l+NuNg==","signatures":[{"sig":"MEQCIG9ynQGbENwm81p7+cbG2aIa/Q2ztsjsI/uiRGePPxolAiBgw5xKpHqilGw67ZnENpLg/joEe02vXm/W2XmW5t/4qQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2565647},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"09be7c80710d80f2d52fa80476b8133d1fcc6c7c","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","prepublishOnly":"bash scripts/pre-publish-check.sh"},"_npmUser":{"name":"lumiereventures","email":"contact@lumiereventures.co"},"overrides":{"hono":">=4.12.14"},"deprecated":"Contained inadvertently-published private data — please upgrade to 2.11.1+","repository":{"url":"git+https://github.com/Maxlumiere/bot-relay-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI coding agent terminal-to-terminal communication. Local-first, SQLite-backed, webhook-integrated.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.20.0","ajv":"^8.20.0","zod":"^3.24.4","uuid":"^11.1.0","express":"^5.2.1","bcryptjs":"^3.0.3","better-sqlite3":"^11.9.1","@modelcontextprotocol/sdk":"~1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","@types/ws":"^8.18.1","fast-check":"^4.7.0","typescript":"^5.8.3","@types/uuid":"^10.0.0","@types/express":"^5.0.6","@types/bcryptjs":"^2.4.6","@types/better-sqlite3":"^7.6.13"},"optionalDependencies":{"sql.js":"^1.14.1"},"_npmOperationalInternal":{"tmp":"tmp/bot-relay-mcp_2.10.0_1781577912617_0.38761568413681236","host":"s3://npm-registry-packages-npm-production"}},"2.11.1":{"name":"bot-relay-mcp","version":"2.11.1","keywords":["mcp","claude-code","agent-communication","multi-agent","ai","model-context-protocol","agent-relay","cursor","cline"],"author":{"name":"Lumiere Ventures","email":"contact@lumiereventures.co"},"license":"MIT","_id":"bot-relay-mcp@2.11.1","maintainers":[{"name":"lumiereventures","email":"contact@lumiereventures.co"}],"homepage":"https://github.com/Maxlumiere/bot-relay-mcp","bugs":{"url":"https://github.com/Maxlumiere/bot-relay-mcp/issues"},"bin":{"relay":"bin/relay","bot-relay-mcp":"dist/index.js"},"dist":{"shasum":"56ddea6d5d5fb8a7de66289d2157ab02304828fb","tarball":"https://registry.npmjs.org/bot-relay-mcp/-/bot-relay-mcp-2.11.1.tgz","fileCount":360,"integrity":"sha512-tn4P5s41acIqy3q3Vn6OnEqWQ4a7/2/CFlE4GD2fXM1Dxs9alOJq8zbHQZYpaHAK57E9mIpvJmCM45grY1cU+A==","signatures":[{"sig":"MEUCIQCwkEpHTiloG6ofkZ/5p8sYoPRqm9X6l3R4tEeblthAFwIgRR48xkaYiR4Z1gOjiaqr6ulXBrcjFZmz68L5/CRUos0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2577619},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"8d6da0b8d9d259580054cc5f89a908449b49e289","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","prepublishOnly":"bash scripts/pre-publish-check.sh"},"_npmUser":{"name":"lumiereventures","email":"contact@lumiereventures.co"},"overrides":{"hono":">=4.12.14"},"repository":{"url":"git+https://github.com/Maxlumiere/bot-relay-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI coding agent terminal-to-terminal communication. Local-first, SQLite-backed, webhook-integrated.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.20.0","ajv":"^8.20.0","zod":"^3.24.4","uuid":"^11.1.0","express":"^5.2.1","bcryptjs":"^3.0.3","better-sqlite3":"^11.9.1","@modelcontextprotocol/sdk":"~1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","@types/ws":"^8.18.1","fast-check":"^4.7.0","typescript":"^5.8.3","@types/uuid":"^10.0.0","@types/express":"^5.0.6","@types/bcryptjs":"^2.4.6","@types/better-sqlite3":"^7.6.13"},"optionalDependencies":{"sql.js":"^1.14.1"},"_npmOperationalInternal":{"tmp":"tmp/bot-relay-mcp_2.11.1_1782373715406_0.6266859889500174","host":"s3://npm-registry-packages-npm-production"}},"2.12.0":{"name":"bot-relay-mcp","version":"2.12.0","keywords":["mcp","claude-code","agent-communication","multi-agent","ai","model-context-protocol","agent-relay","cursor","cline"],"author":{"name":"Lumiere Ventures","email":"contact@lumiereventures.co"},"license":"MIT","_id":"bot-relay-mcp@2.12.0","maintainers":[{"name":"lumiereventures","email":"contact@lumiereventures.co"}],"homepage":"https://github.com/Maxlumiere/bot-relay-mcp","bugs":{"url":"https://github.com/Maxlumiere/bot-relay-mcp/issues"},"bin":{"relay":"bin/relay","bot-relay-mcp":"dist/index.js"},"dist":{"shasum":"5107f750d3d7f31ddc5bbd166def519662e52fd1","tarball":"https://registry.npmjs.org/bot-relay-mcp/-/bot-relay-mcp-2.12.0.tgz","fileCount":363,"integrity":"sha512-ShWMwQiQfj1ipeLawCW41D6BmIRotGhxdaNSvPh/11j+d9/9XMCVNnwPlZhBqWKzvbowHKj76+UlutBqnMELnQ==","signatures":[{"sig":"MEYCIQD64xZzshX3lDtNNAIExA0R8YphLby48KQaoxZVAfpNawIhANN6qeWOXAoxX3nq2evOTbormVbXeJg6AyOrbFg7IIcQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2630113},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"7e090e6c3725fb629a5ac6f4716275779fba88a7","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","prepublishOnly":"bash scripts/pre-publish-check.sh"},"_npmUser":{"name":"lumiereventures","email":"contact@lumiereventures.co"},"overrides":{"hono":"4.12.27"},"repository":{"url":"git+https://github.com/Maxlumiere/bot-relay-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI coding agent terminal-to-terminal communication. Local-first, SQLite-backed, webhook-integrated.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.20.0","ajv":"^8.20.0","zod":"^3.24.4","uuid":"^11.1.0","express":"^5.2.1","bcryptjs":"^3.0.3","better-sqlite3":"^11.9.1","@modelcontextprotocol/sdk":"~1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","@types/ws":"^8.18.1","fast-check":"^4.7.0","typescript":"^5.8.3","@types/uuid":"^10.0.0","@types/express":"^5.0.6","@types/bcryptjs":"^2.4.6","@types/better-sqlite3":"^7.6.13"},"optionalDependencies":{"sql.js":"^1.14.1"},"_npmOperationalInternal":{"tmp":"tmp/bot-relay-mcp_2.12.0_1782744021332_0.631945005225997","host":"s3://npm-registry-packages-npm-production"}},"2.13.0":{"name":"bot-relay-mcp","version":"2.13.0","keywords":["mcp","claude-code","agent-communication","multi-agent","ai","model-context-protocol","agent-relay","cursor","cline"],"author":{"name":"Lumiere Ventures","email":"contact@lumiereventures.co"},"license":"MIT","_id":"bot-relay-mcp@2.13.0","maintainers":[{"name":"lumiereventures","email":"contact@lumiereventures.co"}],"homepage":"https://github.com/Maxlumiere/bot-relay-mcp","bugs":{"url":"https://github.com/Maxlumiere/bot-relay-mcp/issues"},"bin":{"relay":"bin/relay","bot-relay-mcp":"dist/index.js"},"dist":{"shasum":"14af80b348989551fdcd10b177187b399431f705","tarball":"https://registry.npmjs.org/bot-relay-mcp/-/bot-relay-mcp-2.13.0.tgz","fileCount":367,"integrity":"sha512-WFUYo7z8mvcBJUHOCSHHf4Ht2cThDTcaH2Hj1eJx+OrE4KaJn97T5tyC5EtVYPvC1g85aKTDhsiW+roVHOVTRQ==","signatures":[{"sig":"MEUCIGaz1GhJGc80Hm4R79hqMuTFryVr/AyQOUWFGVD54NM1AiEAtMQ79hu8ZETl3WlS5OjavmWrpX+FWWXUdoCHC46PR40=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2692238},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"92eabb0e36aa3e39aceaf199769b2ad3141aefd1","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","prepublishOnly":"bash scripts/pre-publish-check.sh"},"_npmUser":{"name":"lumiereventures","email":"contact@lumiereventures.co"},"overrides":{"hono":"4.12.27"},"repository":{"url":"git+https://github.com/Maxlumiere/bot-relay-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI coding agent terminal-to-terminal communication. Local-first, SQLite-backed, webhook-integrated.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.20.0","ajv":"^8.20.0","zod":"^3.24.4","uuid":"^11.1.0","express":"^5.2.1","bcryptjs":"^3.0.3","better-sqlite3":"^11.9.1","@modelcontextprotocol/sdk":"~1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","@types/ws":"^8.18.1","fast-check":"^4.7.0","typescript":"^5.8.3","@types/uuid":"^10.0.0","@types/express":"^5.0.6","@types/bcryptjs":"^2.4.6","@types/better-sqlite3":"^7.6.13"},"optionalDependencies":{"sql.js":"^1.14.1"},"_npmOperationalInternal":{"tmp":"tmp/bot-relay-mcp_2.13.0_1782803379393_0.07677657587826614","host":"s3://npm-registry-packages-npm-production"}},"2.14.0":{"name":"bot-relay-mcp","version":"2.14.0","keywords":["mcp","claude-code","agent-communication","multi-agent","ai","model-context-protocol","agent-relay","cursor","cline"],"author":{"name":"Lumiere Ventures","email":"contact@lumiereventures.co"},"license":"MIT","_id":"bot-relay-mcp@2.14.0","maintainers":[{"name":"lumiereventures","email":"contact@lumiereventures.co"}],"homepage":"https://github.com/Maxlumiere/bot-relay-mcp","bugs":{"url":"https://github.com/Maxlumiere/bot-relay-mcp/issues"},"bin":{"relay":"bin/relay","bot-relay-mcp":"dist/index.js"},"dist":{"shasum":"0282a8ada03c33081b8d2f3045cace2b1c053cf9","tarball":"https://registry.npmjs.org/bot-relay-mcp/-/bot-relay-mcp-2.14.0.tgz","fileCount":371,"integrity":"sha512-tlyMt5pM4H+lozwEXOc+ToQzG8xDSQlIF02AD10mf0tuY1Czy5si/kENqXwJg35X9OS7CHCU3NzDZAzm3wS30w==","signatures":[{"sig":"MEUCIQCaKoe/qWze4JUF7wrkGW2PA/8zM4VqxvVVnhwJG680jQIgS5qT5lz+e6aVj6FfxNfGxDWAshX2DguEjBw4K5td8MQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2708328},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"6f4e93174dca5341c890b0c689d65dbf8b9226f9","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","prepublishOnly":"bash scripts/pre-publish-check.sh"},"_npmUser":{"name":"lumiereventures","email":"contact@lumiereventures.co"},"overrides":{"hono":"4.12.27"},"repository":{"url":"git+https://github.com/Maxlumiere/bot-relay-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI coding agent terminal-to-terminal communication. Local-first, SQLite-backed, webhook-integrated.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.20.0","ajv":"^8.20.0","zod":"^3.24.4","uuid":"^11.1.0","express":"^5.2.1","bcryptjs":"^3.0.3","better-sqlite3":"^11.9.1","@modelcontextprotocol/sdk":"~1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","@types/ws":"^8.18.1","fast-check":"^4.7.0","typescript":"^5.8.3","@types/uuid":"^10.0.0","@types/express":"^5.0.6","@types/bcryptjs":"^2.4.6","@types/better-sqlite3":"^7.6.13"},"optionalDependencies":{"sql.js":"^1.14.1"},"_npmOperationalInternal":{"tmp":"tmp/bot-relay-mcp_2.14.0_1782830253275_0.17611127200754684","host":"s3://npm-registry-packages-npm-production"}},"2.14.1":{"name":"bot-relay-mcp","version":"2.14.1","keywords":["mcp","claude-code","agent-communication","multi-agent","ai","model-context-protocol","agent-relay","cursor","cline"],"author":{"name":"Lumiere Ventures","email":"contact@lumiereventures.co"},"license":"MIT","_id":"bot-relay-mcp@2.14.1","maintainers":[{"name":"lumiereventures","email":"contact@lumiereventures.co"}],"homepage":"https://github.com/Maxlumiere/bot-relay-mcp","bugs":{"url":"https://github.com/Maxlumiere/bot-relay-mcp/issues"},"bin":{"relay":"bin/relay","bot-relay-mcp":"dist/index.js"},"dist":{"shasum":"518d1f90f5571405ca38af3ce1f959257f4b43f2","tarball":"https://registry.npmjs.org/bot-relay-mcp/-/bot-relay-mcp-2.14.1.tgz","fileCount":371,"integrity":"sha512-BeIK0wrqXjWtk6xMY3LqZPRFgnPCSqApAUPcrVwEnjq3OzU7CtN0Qkt46OCVpMIr3O0y9/qt2WuPKI1GWdd87g==","signatures":[{"sig":"MEUCIHPdVfnArNPqqtmgg7JJKzqmbEcNv1geeNh0sTqq1hOvAiEA0Zex/8v7d3K5qiKW77mHe1tYENkj+7GtW3B9wPOBG9Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2728903},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"befb84c6786e0ed22be27339b88ef112fe35b7b5","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","prepublishOnly":"bash scripts/pre-publish-check.sh"},"_npmUser":{"name":"lumiereventures","email":"contact@lumiereventures.co"},"overrides":{"hono":"4.12.27"},"repository":{"url":"git+https://github.com/Maxlumiere/bot-relay-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI coding agent terminal-to-terminal communication. Local-first, SQLite-backed, webhook-integrated.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.20.0","ajv":"^8.20.0","zod":"^3.24.4","uuid":"^11.1.0","express":"^5.2.1","bcryptjs":"^3.0.3","better-sqlite3":"^11.9.1","@modelcontextprotocol/sdk":"~1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","@types/ws":"^8.18.1","fast-check":"^4.7.0","typescript":"^5.8.3","@types/uuid":"^10.0.0","@types/express":"^5.0.6","@types/bcryptjs":"^2.4.6","@types/better-sqlite3":"^7.6.13"},"optionalDependencies":{"sql.js":"^1.14.1"},"_npmOperationalInternal":{"tmp":"tmp/bot-relay-mcp_2.14.1_1782978726557_0.6059841795892884","host":"s3://npm-registry-packages-npm-production"}},"2.15.0":{"name":"bot-relay-mcp","version":"2.15.0","keywords":["mcp","claude-code","agent-communication","multi-agent","ai","model-context-protocol","agent-relay","cursor","cline"],"author":{"name":"Lumiere Ventures","email":"contact@lumiereventures.co"},"license":"MIT","_id":"bot-relay-mcp@2.15.0","maintainers":[{"name":"lumiereventures","email":"contact@lumiereventures.co"}],"homepage":"https://github.com/Maxlumiere/bot-relay-mcp","bugs":{"url":"https://github.com/Maxlumiere/bot-relay-mcp/issues"},"bin":{"relay":"bin/relay","bot-relay-mcp":"dist/index.js"},"dist":{"shasum":"bc5d7a667bbbc739905f037dea42cd96610d08fd","tarball":"https://registry.npmjs.org/bot-relay-mcp/-/bot-relay-mcp-2.15.0.tgz","fileCount":371,"integrity":"sha512-/s0l5MXlyfEt6bfRIC8Splc0NQ7ZSre1Dx2wm3FXi0kyyLDWSz8kqiE0w5c/Ac7og16X5ORdYk39HZ3FwDxXzw==","signatures":[{"sig":"MEYCIQCJFxOROtzOMiFAzKzUbNjsQu4Fc4p6mjIAYZ9JxfeO0AIhAIDjQJtcOsOLDYkY8/ThGqDasol92ttPvSrN1eHY7n6Z","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2744377},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"cee9482c3908baec52dfb64a3f12a9f13c194f97","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","prepublishOnly":"bash scripts/pre-publish-check.sh"},"_npmUser":{"name":"lumiereventures","email":"contact@lumiereventures.co"},"overrides":{"hono":"4.12.27"},"repository":{"url":"git+https://github.com/Maxlumiere/bot-relay-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI coding agent terminal-to-terminal communication. Local-first, SQLite-backed, webhook-integrated.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.20.0","ajv":"^8.20.0","zod":"^3.24.4","uuid":"^11.1.0","express":"^5.2.1","bcryptjs":"^3.0.3","better-sqlite3":"^11.9.1","@modelcontextprotocol/sdk":"~1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","@types/ws":"^8.18.1","fast-check":"^4.7.0","typescript":"^5.8.3","@types/uuid":"^10.0.0","@types/express":"^5.0.6","@types/bcryptjs":"^2.4.6","@types/better-sqlite3":"^7.6.13"},"optionalDependencies":{"sql.js":"^1.14.1"},"_npmOperationalInternal":{"tmp":"tmp/bot-relay-mcp_2.15.0_1783328802037_0.5067985094170069","host":"s3://npm-registry-packages-npm-production"}},"2.15.1":{"name":"bot-relay-mcp","version":"2.15.1","keywords":["mcp","claude-code","agent-communication","multi-agent","ai","model-context-protocol","agent-relay","cursor","cline"],"author":{"name":"Lumiere Ventures","email":"contact@lumiereventures.co"},"license":"MIT","_id":"bot-relay-mcp@2.15.1","maintainers":[{"name":"lumiereventures","email":"contact@lumiereventures.co"}],"homepage":"https://github.com/Maxlumiere/bot-relay-mcp","bugs":{"url":"https://github.com/Maxlumiere/bot-relay-mcp/issues"},"bin":{"relay":"bin/relay","bot-relay-mcp":"dist/index.js"},"dist":{"shasum":"e4e8d5e17abc466ab0a67e9dd093958b7fa60b5d","tarball":"https://registry.npmjs.org/bot-relay-mcp/-/bot-relay-mcp-2.15.1.tgz","fileCount":371,"integrity":"sha512-EbnHdl+uvP859n7UoGeA59drQR6QRrP2jMDzZXc5CtJ5JIe2X9pFMB/jl7q7xgU/PmoxcJqdAHiLsO61siP8WQ==","signatures":[{"sig":"MEYCIQCFtQJF2B/nhTQy+L/XVoB+picEUIFhKPVG3Lxero55wAIhAPLkpXae5tr2yEkCtbJGB3vQEVbRn+3CsfXWJJSq+7Tz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2749503},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"ddf377abdf68f3e4432df1b4334fdd0ae447f1f7","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","prepublishOnly":"bash scripts/pre-publish-check.sh"},"_npmUser":{"name":"lumiereventures","email":"contact@lumiereventures.co"},"overrides":{"hono":"4.12.27"},"repository":{"url":"git+https://github.com/Maxlumiere/bot-relay-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI coding agent terminal-to-terminal communication. Local-first, SQLite-backed, webhook-integrated.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.20.0","ajv":"^8.20.0","zod":"^3.24.4","uuid":"^11.1.0","express":"^5.2.1","bcryptjs":"^3.0.3","better-sqlite3":"^11.9.1","@modelcontextprotocol/sdk":"~1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","@types/ws":"^8.18.1","fast-check":"^4.7.0","typescript":"^5.8.3","@types/uuid":"^10.0.0","@types/express":"^5.0.6","@types/bcryptjs":"^2.4.6","@types/better-sqlite3":"^7.6.13"},"optionalDependencies":{"sql.js":"^1.14.1"},"_npmOperationalInternal":{"tmp":"tmp/bot-relay-mcp_2.15.1_1783351021206_0.25797192573515026","host":"s3://npm-registry-packages-npm-production"}},"2.15.2":{"name":"bot-relay-mcp","version":"2.15.2","keywords":["mcp","claude-code","agent-communication","multi-agent","ai","model-context-protocol","agent-relay","cursor","cline"],"author":{"name":"Lumiere Ventures","email":"contact@lumiereventures.co"},"license":"MIT","_id":"bot-relay-mcp@2.15.2","maintainers":[{"name":"lumiereventures","email":"contact@lumiereventures.co"}],"homepage":"https://github.com/Maxlumiere/bot-relay-mcp","bugs":{"url":"https://github.com/Maxlumiere/bot-relay-mcp/issues"},"bin":{"relay":"bin/relay","bot-relay-mcp":"dist/index.js"},"dist":{"shasum":"6a216f4f176b4da3d6f22d6a1d0cad7efc95c9a4","tarball":"https://registry.npmjs.org/bot-relay-mcp/-/bot-relay-mcp-2.15.2.tgz","fileCount":371,"integrity":"sha512-5zuVNXwl5PcthIO25UzBhFUiPFBHaWfdY+pXaUfwqkSF/1Lp1oVqaNh9xrmx0jl0oHt3K0D0eAQVcaCDhFGeJQ==","signatures":[{"sig":"MEQCIDCBVyXzr7LZ2pYqbXMtZIkyPRSikV/3lfmAd5CumOaGAiBd4YGYZHMKEN8Uw273ptim9hwJ0Gq6xwidJQ1eG6ialw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2761694},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"6f00aafee0e44559e620aae45af41341d2038fb3","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","prepublishOnly":"bash scripts/pre-publish-check.sh"},"_npmUser":{"name":"lumiereventures","email":"contact@lumiereventures.co"},"overrides":{"hono":"4.12.27"},"repository":{"url":"git+https://github.com/Maxlumiere/bot-relay-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI coding agent terminal-to-terminal communication. Local-first, SQLite-backed, webhook-integrated.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.20.0","ajv":"^8.20.0","zod":"^3.24.4","uuid":"^11.1.0","express":"^5.2.1","bcryptjs":"^3.0.3","better-sqlite3":"^11.9.1","@modelcontextprotocol/sdk":"~1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","@types/ws":"^8.18.1","fast-check":"^4.7.0","typescript":"^5.8.3","@types/uuid":"^10.0.0","@types/express":"^5.0.6","@types/bcryptjs":"^2.4.6","@types/better-sqlite3":"^7.6.13"},"optionalDependencies":{"sql.js":"^1.14.1"},"_npmOperationalInternal":{"tmp":"tmp/bot-relay-mcp_2.15.2_1783412400558_0.3629832073579451","host":"s3://npm-registry-packages-npm-production"}},"2.16.2":{"name":"bot-relay-mcp","version":"2.16.2","keywords":["mcp","claude-code","agent-communication","multi-agent","ai","model-context-protocol","agent-relay","cursor","cline"],"author":{"name":"Lumiere Ventures","email":"contact@lumiereventures.co"},"license":"MIT","_id":"bot-relay-mcp@2.16.2","maintainers":[{"name":"lumiereventures","email":"contact@lumiereventures.co"}],"homepage":"https://github.com/Maxlumiere/bot-relay-mcp","bugs":{"url":"https://github.com/Maxlumiere/bot-relay-mcp/issues"},"bin":{"relay":"bin/relay","bot-relay-mcp":"dist/index.js"},"dist":{"shasum":"55377edc8f214a6ceb534a9051d0712112555c50","tarball":"https://registry.npmjs.org/bot-relay-mcp/-/bot-relay-mcp-2.16.2.tgz","fileCount":383,"integrity":"sha512-gwyGHOlvwbUmRwXTyxIDYmstOy2cGAIWH5sUqdQEDMGptEToB3TDjNIEn5bMQd4BCmqcjG35jc1sthhz5f+ycg==","signatures":[{"sig":"MEQCIB2o69tgzoq8WRjf9nFHDd7umfT+tL3GioypnMdNPFETAiBbdMiUicHkcCwdgnX7kpvpzstJwL4PmP/aj/ZpTbg9sA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2821555},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"24301a1a1f478c36893eb393a82da6707aea39d6","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","prepublishOnly":"bash scripts/pre-publish-check.sh"},"_npmUser":{"name":"lumiereventures","email":"contact@lumiereventures.co"},"overrides":{"hono":"4.12.27"},"repository":{"url":"git+https://github.com/Maxlumiere/bot-relay-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI coding agent terminal-to-terminal communication. Local-first, SQLite-backed, webhook-integrated.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.20.0","ajv":"^8.20.0","zod":"^3.24.4","uuid":"^11.1.0","express":"^5.2.1","bcryptjs":"^3.0.3","better-sqlite3":"^11.9.1","@modelcontextprotocol/sdk":"~1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","@types/ws":"^8.18.1","fast-check":"^4.7.0","typescript":"^5.8.3","@types/uuid":"^10.0.0","@types/express":"^5.0.6","@types/bcryptjs":"^2.4.6","@types/better-sqlite3":"^7.6.13"},"optionalDependencies":{"sql.js":"^1.14.1"},"_npmOperationalInternal":{"tmp":"tmp/bot-relay-mcp_2.16.2_1784016239988_0.13551845174660238","host":"s3://npm-registry-packages-npm-production"}},"2.16.4":{"name":"bot-relay-mcp","version":"2.16.4","keywords":["mcp","claude-code","agent-communication","multi-agent","ai","model-context-protocol","agent-relay","cursor","cline"],"author":{"name":"Lumiere Ventures","email":"contact@lumiereventures.co"},"license":"MIT","_id":"bot-relay-mcp@2.16.4","maintainers":[{"name":"lumiereventures","email":"contact@lumiereventures.co"}],"homepage":"https://github.com/Maxlumiere/bot-relay-mcp","bugs":{"url":"https://github.com/Maxlumiere/bot-relay-mcp/issues"},"bin":{"relay":"bin/relay","bot-relay-mcp":"dist/index.js"},"dist":{"shasum":"72c3955870b08c7afbb2cfd44ec688759c7655db","tarball":"https://registry.npmjs.org/bot-relay-mcp/-/bot-relay-mcp-2.16.4.tgz","fileCount":383,"integrity":"sha512-5eXijdimqyQKmqxc9Q0y7a+0RP3M0NwmMqiRbE22PSTmmkBM/nyJK95secsSEFhLpEvUhavbOCZIq87wV3CRTA==","signatures":[{"sig":"MEQCIF8drkTb/hnXJde12yFIn0WlJntp4pw1ytYM0JIggnNeAiBYZGu0Ji1moZuG2DeGrsAnaru2wszGtp4ZBwGvuJ2flg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2840669},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"baa4c4f11fd4619a870b2d96a189c0ab91e1d093","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","prepublishOnly":"bash scripts/pre-publish-check.sh"},"_npmUser":{"name":"lumiereventures","email":"contact@lumiereventures.co"},"overrides":{"hono":"4.12.27"},"repository":{"url":"git+https://github.com/Maxlumiere/bot-relay-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI coding agent terminal-to-terminal communication. Local-first, SQLite-backed, webhook-integrated.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.20.0","ajv":"^8.20.0","zod":"^3.24.4","uuid":"^11.1.0","express":"^5.2.1","bcryptjs":"^3.0.3","better-sqlite3":"^11.9.1","@modelcontextprotocol/sdk":"~1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","@types/ws":"^8.18.1","fast-check":"^4.7.0","typescript":"^5.8.3","@types/uuid":"^10.0.0","@types/express":"^5.0.6","@types/bcryptjs":"^2.4.6","@types/better-sqlite3":"^7.6.13"},"optionalDependencies":{"sql.js":"^1.14.1"},"_npmOperationalInternal":{"tmp":"tmp/bot-relay-mcp_2.16.4_1784552463718_0.40623896251542946","host":"s3://npm-registry-packages-npm-production"}},"2.17.1":{"name":"bot-relay-mcp","version":"2.17.1","keywords":["mcp","claude-code","agent-communication","multi-agent","ai","model-context-protocol","agent-relay","cursor","cline"],"author":{"name":"Lumiere Ventures","email":"contact@lumiereventures.co"},"license":"MIT","_id":"bot-relay-mcp@2.17.1","maintainers":[{"name":"lumiereventures","email":"contact@lumiereventures.co"}],"homepage":"https://github.com/Maxlumiere/bot-relay-mcp","bugs":{"url":"https://github.com/Maxlumiere/bot-relay-mcp/issues"},"bin":{"relay":"bin/relay","bot-relay-mcp":"dist/index.js"},"dist":{"shasum":"833ad9d1c11a965dbe61033e2c8a37537d32713e","tarball":"https://registry.npmjs.org/bot-relay-mcp/-/bot-relay-mcp-2.17.1.tgz","fileCount":395,"integrity":"sha512-z/+sn6XhP47DaLJJJt8EdL3t4pGg7C7LRnTi00gCSEUjy7gpLYGDdV263iDd/U0W2qaPZIFBcZ7H2Q5noDNWGQ==","signatures":[{"sig":"MEUCIQD13mbIumLhZxxVDAr1tQiubRwYEwN8QgkvvXNm5GRaswIgW2aeT0XmzlpBPC0G9pLEAtbmmUQOpV9QRBbKmO2AZg4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2908331},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"337808d763f1fce1c2f9f80b68ef22cf83635772","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","prepublishOnly":"bash scripts/pre-publish-check.sh"},"_npmUser":{"name":"lumiereventures","email":"contact@lumiereventures.co"},"overrides":{"hono":"4.12.27"},"repository":{"url":"git+https://github.com/Maxlumiere/bot-relay-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI coding agent terminal-to-terminal communication. Local-first, SQLite-backed, webhook-integrated.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.20.0","ajv":"^8.20.0","zod":"^3.24.4","uuid":"^11.1.0","express":"^5.2.1","bcryptjs":"^3.0.3","better-sqlite3":"^11.9.1","@modelcontextprotocol/sdk":"~1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","@types/ws":"^8.18.1","fast-check":"^4.7.0","typescript":"^5.8.3","@types/uuid":"^10.0.0","@types/express":"^5.0.6","@types/bcryptjs":"^2.4.6","@types/better-sqlite3":"^7.6.13"},"optionalDependencies":{"sql.js":"^1.14.1"},"_npmOperationalInternal":{"tmp":"tmp/bot-relay-mcp_2.17.1_1784640954174_0.12747971572488148","host":"s3://npm-registry-packages-npm-production"}},"2.20.0":{"name":"bot-relay-mcp","version":"2.20.0","keywords":["mcp","claude-code","agent-communication","multi-agent","ai","model-context-protocol","agent-relay","cursor","cline"],"author":{"name":"Lumiere Ventures","email":"contact@lumiereventures.co"},"license":"MIT","_id":"bot-relay-mcp@2.20.0","maintainers":[{"name":"lumiereventures","email":"contact@lumiereventures.co"}],"homepage":"https://github.com/Maxlumiere/bot-relay-mcp","bugs":{"url":"https://github.com/Maxlumiere/bot-relay-mcp/issues"},"bin":{"relay":"bin/relay","bot-relay-mcp":"dist/index.js"},"dist":{"shasum":"bc2dc4995c1560e830be64808f62b49224447bab","tarball":"https://registry.npmjs.org/bot-relay-mcp/-/bot-relay-mcp-2.20.0.tgz","fileCount":407,"integrity":"sha512-GFvF7TWXpNyor8SRzXCRAobL0qU05KjRWBy5UzlZqzY250KY94FKCIn1ptITQIFiKX9OK8BpIsps3Cvvz000pg==","signatures":[{"sig":"MEQCIAxBFgIrpIkaJkkRGKgFBEUhkqOtrPnW369s4bVp7UwwAiB2QxuOGfK7o6JFAc51CQrQajKNG4nAlqpKS65rtYMwIQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2982325},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"7282c7a223b132ccd668a2dcd7a1723eba8a334f","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","prepublishOnly":"bash scripts/pre-publish-check.sh"},"_npmUser":{"name":"lumiereventures","email":"contact@lumiereventures.co"},"overrides":{"hono":"4.12.27","fast-uri":"3.1.4"},"repository":{"url":"git+https://github.com/Maxlumiere/bot-relay-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI coding agent terminal-to-terminal communication. Local-first, SQLite-backed, webhook-integrated.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.20.0","ajv":"^8.20.0","zod":"^3.24.4","uuid":"^11.1.0","express":"^5.2.1","bcryptjs":"^3.0.3","better-sqlite3":"^11.9.1","@modelcontextprotocol/sdk":"~1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","@types/ws":"^8.18.1","fast-check":"^4.7.0","typescript":"^5.8.3","@types/uuid":"^10.0.0","@types/express":"^5.0.6","@types/bcryptjs":"^2.4.6","@types/better-sqlite3":"^7.6.13"},"optionalDependencies":{"sql.js":"^1.14.1"},"_npmOperationalInternal":{"tmp":"tmp/bot-relay-mcp_2.20.0_1784691746909_0.5122102299938649","host":"s3://npm-registry-packages-npm-production"}},"2.21.0":{"name":"bot-relay-mcp","version":"2.21.0","keywords":["mcp","claude-code","agent-communication","multi-agent","ai","model-context-protocol","agent-relay","cursor","cline"],"author":{"name":"Lumiere Ventures","email":"contact@lumiereventures.co"},"license":"MIT","_id":"bot-relay-mcp@2.21.0","maintainers":[{"name":"lumiereventures","email":"contact@lumiereventures.co"}],"homepage":"https://github.com/Maxlumiere/bot-relay-mcp","bugs":{"url":"https://github.com/Maxlumiere/bot-relay-mcp/issues"},"bin":{"relay":"bin/relay","bot-relay-mcp":"dist/index.js"},"dist":{"shasum":"f21aec2d13675b74ded5acfcdc32d48e0e963c48","tarball":"https://registry.npmjs.org/bot-relay-mcp/-/bot-relay-mcp-2.21.0.tgz","fileCount":410,"integrity":"sha512-2QtbU6uYyxvggTAw8BseLIesTliRnzoZ0RP6D3pDmUqmhkw+wfpezU1xYOfNZb+uwAPLVLrCYlAKgmeZFoGSUQ==","signatures":[{"sig":"MEUCIQCcwA+QV8fDmF90mdJxuD7FE65tC8RERbQUIrHM996bnQIgSBQse+sO8AhGCai80eGWT/ggz8LC71YVfmNBV8B2XIg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3011601},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"8c8136ee4f71cf052f2087694e84c30ac1849e04","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","prepublishOnly":"bash scripts/pre-publish-check.sh"},"_npmUser":{"name":"lumiereventures","email":"contact@lumiereventures.co"},"overrides":{"hono":"4.12.27","fast-uri":"3.1.4"},"repository":{"url":"git+https://github.com/Maxlumiere/bot-relay-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI coding agent terminal-to-terminal communication. Local-first, SQLite-backed, webhook-integrated.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.20.0","ajv":"^8.20.0","zod":"^3.24.4","uuid":"^11.1.0","express":"^5.2.1","bcryptjs":"^3.0.3","better-sqlite3":"^11.9.1","@modelcontextprotocol/sdk":"~1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","@types/ws":"^8.18.1","fast-check":"^4.7.0","typescript":"^5.8.3","@types/uuid":"^10.0.0","@types/express":"^5.0.6","@types/bcryptjs":"^2.4.6","@types/better-sqlite3":"^7.6.13"},"optionalDependencies":{"sql.js":"^1.14.1"},"_npmOperationalInternal":{"tmp":"tmp/bot-relay-mcp_2.21.0_1784782426507_0.5386728544382322","host":"s3://npm-registry-packages-npm-production"}},"2.23.0":{"name":"bot-relay-mcp","version":"2.23.0","keywords":["mcp","claude-code","agent-communication","multi-agent","ai","model-context-protocol","agent-relay","cursor","cline"],"author":{"name":"Lumiere Ventures","email":"contact@lumiereventures.co"},"license":"MIT","_id":"bot-relay-mcp@2.23.0","maintainers":[{"name":"lumiereventures","email":"contact@lumiereventures.co"}],"homepage":"https://github.com/Maxlumiere/bot-relay-mcp","bugs":{"url":"https://github.com/Maxlumiere/bot-relay-mcp/issues"},"bin":{"relay":"bin/relay","bot-relay-mcp":"dist/index.js"},"dist":{"shasum":"8a63f5f988f4b7c51fd45745217a8aa6eaffcfdc","tarball":"https://registry.npmjs.org/bot-relay-mcp/-/bot-relay-mcp-2.23.0.tgz","fileCount":421,"integrity":"sha512-FEvbvV3nfGuzlkbcigm+sJChXDuE80iwKX0ESrLN32iBbY3s/Qx4B81M1t4e+0fwxcDOksSf5gbLOHuwXKpeJA==","signatures":[{"sig":"MEYCIQCjYD9u9Hdbgh8IjABCPFRDkM1a0s6IqPFmizbEXj8NgwIhAK9OIgKTSUUtkc4qkCg0OXiLLPW8Z9mV3h2rubof3AXn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3261434},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"22c92db8fa880e5ea284b4d780dff09f58e94c9b","mcpName":"io.github.Maxlumiere/bot-relay-mcp","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","prepublishOnly":"bash scripts/pre-publish-check.sh"},"_npmUser":{"name":"lumiereventures","email":"contact@lumiereventures.co"},"overrides":{"hono":"4.12.27","fast-uri":"3.1.4"},"repository":{"url":"git+https://github.com/Maxlumiere/bot-relay-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI coding agent terminal-to-terminal communication. Local-first, SQLite-backed, webhook-integrated.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.20.0","ajv":"^8.20.0","zod":"^3.24.4","uuid":"^11.1.0","express":"^5.2.1","bcryptjs":"^3.0.3","better-sqlite3":"^11.9.1","@modelcontextprotocol/sdk":"~1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","@types/ws":"^8.18.1","fast-check":"^4.7.0","typescript":"^5.8.3","@types/uuid":"^10.0.0","@types/express":"^5.0.6","@types/bcryptjs":"^2.4.6","@types/better-sqlite3":"^7.6.13"},"optionalDependencies":{"sql.js":"^1.14.1"},"_npmOperationalInternal":{"tmp":"tmp/bot-relay-mcp_2.23.0_1784971355164_0.19835534095879792","host":"s3://npm-registry-packages-npm-production"}},"2.24.0":{"name":"bot-relay-mcp","version":"2.24.0","keywords":["mcp","claude-code","agent-communication","multi-agent","ai","model-context-protocol","agent-relay","cursor","cline"],"author":{"name":"Lumiere Ventures","email":"contact@lumiereventures.co"},"license":"MIT","_id":"bot-relay-mcp@2.24.0","maintainers":[{"name":"lumiereventures","email":"contact@lumiereventures.co"}],"homepage":"https://github.com/Maxlumiere/bot-relay-mcp","bugs":{"url":"https://github.com/Maxlumiere/bot-relay-mcp/issues"},"bin":{"relay":"bin/relay","bot-relay-mcp":"dist/index.js"},"dist":{"shasum":"302b380c00076e3fb7c36f43e4e9fb4557916993","tarball":"https://registry.npmjs.org/bot-relay-mcp/-/bot-relay-mcp-2.24.0.tgz","fileCount":440,"integrity":"sha512-QYcW6u6KXCX8tUB9ucJjQ2a0II7kqjexqjOWbRuw/62hTLOG5jUw1KuPWuY8yQQlzlYDTRJRZXYzeAcyC+JjHQ==","signatures":[{"sig":"MEUCIEthasHifTUkVc8luu6rm7utcXDO3qedfg0r0fPCe80XAiEApICycadC2Lovp1M5HAe6jBw+ElmeZvlHhA7iIs67jN8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3439897},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"110c63e8e7c8ddb4b4687fad804b38083bfe4d5f","mcpName":"io.github.Maxlumiere/bot-relay-mcp","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","prebuild":"node scripts/prebuild-guard.mjs","prepublishOnly":"bash scripts/pre-publish-check.sh"},"_npmUser":{"name":"lumiereventures","email":"contact@lumiereventures.co"},"overrides":{"hono":"4.12.27","fast-uri":"3.1.4"},"repository":{"url":"git+https://github.com/Maxlumiere/bot-relay-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI coding agent terminal-to-terminal communication. Local-first, SQLite-backed, webhook-integrated.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.20.0","ajv":"^8.20.0","zod":"^3.24.4","uuid":"^11.1.0","express":"^5.2.1","bcryptjs":"^3.0.3","better-sqlite3":"^11.9.1","@modelcontextprotocol/sdk":"~1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","@types/ws":"^8.18.1","fast-check":"^4.7.0","typescript":"^5.8.3","@types/uuid":"^10.0.0","@types/express":"^5.0.6","@types/bcryptjs":"^2.4.6","@types/better-sqlite3":"^7.6.13"},"optionalDependencies":{"sql.js":"^1.14.1"},"_npmOperationalInternal":{"tmp":"tmp/bot-relay-mcp_2.24.0_1785554662970_0.7640684518081766","host":"s3://npm-registry-packages-npm-production"}},"2.25.0":{"name":"bot-relay-mcp","version":"2.25.0","keywords":["mcp","claude-code","agent-communication","multi-agent","ai","model-context-protocol","agent-relay","cursor","cline"],"author":{"name":"Lumiere Ventures","email":"contact@lumiereventures.co"},"license":"MIT","_id":"bot-relay-mcp@2.25.0","maintainers":[{"name":"lumiereventures","email":"contact@lumiereventures.co"}],"homepage":"https://github.com/Maxlumiere/bot-relay-mcp","bugs":{"url":"https://github.com/Maxlumiere/bot-relay-mcp/issues"},"bin":{"relay":"bin/relay","bot-relay-mcp":"dist/index.js"},"dist":{"shasum":"9320836ad82daa91ec6aaf91d70a854d0493e561","tarball":"https://registry.npmjs.org/bot-relay-mcp/-/bot-relay-mcp-2.25.0.tgz","fileCount":440,"integrity":"sha512-bkVJSLWKDYTTDk/DP3CxwHCJ+8tz3ICH9hDgUM35hEzvBRuce1aTo4IekhYltATpSjNvv2UyauJB/1f3VMUPUw==","signatures":[{"sig":"MEUCICORCOyrNSaT0K13RMA+TSm8q0AHraJ/udWXm1l7v/iBAiEAhmcoVGcyIcZDKnTBO2UY8QWkMkXbcoBg7m7X0lHj7G4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3469562},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"1ffa867e68e4483887416288903015187d986f49","mcpName":"io.github.Maxlumiere/bot-relay-mcp","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","prebuild":"node scripts/prebuild-guard.mjs","prepublishOnly":"bash scripts/pre-publish-check.sh"},"_npmUser":{"name":"lumiereventures","email":"contact@lumiereventures.co"},"overrides":{"hono":"4.12.27","fast-uri":"3.1.5","ip-address":"^10.4.0"},"repository":{"url":"git+https://github.com/Maxlumiere/bot-relay-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI coding agent terminal-to-terminal communication. Local-first, SQLite-backed, webhook-integrated.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.20.0","ajv":"^8.20.0","zod":"^3.24.4","uuid":"^14.0.1","express":"^5.2.1","bcryptjs":"^3.0.3","better-sqlite3":"^11.9.1","@modelcontextprotocol/sdk":"~1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","@types/ws":"^8.18.1","fast-check":"^4.7.0","typescript":"^6.0.3","@types/uuid":"^10.0.0","@types/express":"^5.0.6","@types/bcryptjs":"^3.0.0","@types/better-sqlite3":"^7.6.13"},"optionalDependencies":{"sql.js":"^1.14.1"},"_npmOperationalInternal":{"tmp":"tmp/bot-relay-mcp_2.25.0_1786027583873_0.22414429775253186","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"bot-relay-mcp","version":"3.0.0","keywords":["mcp","claude-code","agent-communication","multi-agent","ai","model-context-protocol","agent-relay","cursor","cline"],"author":{"name":"Lumiere Ventures","email":"contact@lumiereventures.co"},"license":"MIT","_id":"bot-relay-mcp@3.0.0","maintainers":[{"name":"lumiereventures","email":"contact@lumiereventures.co"}],"homepage":"https://github.com/Maxlumiere/bot-relay-mcp","bugs":{"url":"https://github.com/Maxlumiere/bot-relay-mcp/issues"},"bin":{"relay":"bin/relay","bot-relay-mcp":"dist/index.js"},"dist":{"shasum":"7b31e03bc6445b44a962c00297df2407b6b34232","tarball":"https://registry.npmjs.org/bot-relay-mcp/-/bot-relay-mcp-3.0.0.tgz","fileCount":444,"integrity":"sha512-3Y2D5ILb69ADV9SPGgkvQF+EnG3VP99x8VMYqbeSGhBgWsWBPqzsPK9u1zQonco+cyXjsgeFIA+11mQzB6NaSg==","signatures":[{"sig":"MEUCIBscHTlEGyA5YN8RFnKvs+uUZhKQxYpuyBUZ8mmPy1GsAiEAsPAK2gq38jGjF+3NQynKE7f9R1x6mS9pyKa3bquERzI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3566350},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"d0aec6240e2d46408fb6794fa83b1832f1a77093","mcpName":"io.github.Maxlumiere/bot-relay-mcp","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","prebuild":"node scripts/prebuild-guard.mjs","prepublishOnly":"bash scripts/pre-publish-check.sh"},"_npmUser":{"name":"lumiereventures","email":"contact@lumiereventures.co"},"overrides":{"hono":"^4.12.34","fast-uri":"3.1.5","ip-address":"^10.4.0"},"repository":{"url":"git+https://github.com/Maxlumiere/bot-relay-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI coding agent terminal-to-terminal communication. Local-first, SQLite-backed, webhook-integrated.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.20.0","ajv":"^8.20.0","zod":"^3.24.4","uuid":"^14.0.1","express":"^5.2.1","bcryptjs":"^3.0.3","better-sqlite3":"^11.9.1","@modelcontextprotocol/sdk":"~1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","@types/ws":"^8.18.1","fast-check":"^4.7.0","typescript":"^6.0.3","@types/uuid":"^10.0.0","@types/express":"^5.0.6","@types/bcryptjs":"^3.0.0","typescript-legacy":"npm:typescript@^6.0.0","@types/better-sqlite3":"^7.6.13"},"optionalDependencies":{"sql.js":"^1.14.1"},"_npmOperationalInternal":{"tmp":"tmp/bot-relay-mcp_3.0.0_1786592652444_0.6794607415549798","host":"s3://npm-registry-packages-npm-production"}},"3.0.1":{"name":"bot-relay-mcp","mcpName":"io.github.Maxlumiere/bot-relay-mcp","version":"3.0.1","description":"MCP server for AI coding agent terminal-to-terminal communication. Local-first, SQLite-backed, webhook-integrated.","type":"module","main":"dist/index.js","bin":{"bot-relay-mcp":"dist/index.js","relay":"bin/relay"},"scripts":{"prebuild":"node scripts/prebuild-guard.mjs","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","test":"vitest run","dev":"tsc --watch","prepublishOnly":"bash scripts/pre-publish-check.sh"},"keywords":["mcp","claude-code","agent-communication","multi-agent","ai","model-context-protocol","agent-relay","cursor","cline"],"homepage":"https://github.com/Maxlumiere/bot-relay-mcp","repository":{"type":"git","url":"git+https://github.com/Maxlumiere/bot-relay-mcp.git"},"bugs":{"url":"https://github.com/Maxlumiere/bot-relay-mcp/issues"},"license":"MIT","author":{"name":"Lumiere Ventures","email":"contact@lumiereventures.co"},"engines":{"node":">=20.0.0"},"dependencies":{"@modelcontextprotocol/sdk":"~1.29.0","bcryptjs":"^3.0.3","better-sqlite3":"^11.9.1","express":"^5.2.1","uuid":"^14.0.1","ws":"^8.20.0","zod":"^3.24.4","ajv":"^8.20.0"},"devDependencies":{"@types/bcryptjs":"^3.0.0","@types/better-sqlite3":"^7.6.13","@types/express":"^5.0.6","@types/uuid":"^10.0.0","@types/ws":"^8.18.1","fast-check":"^4.7.0","typescript":"^6.0.3","typescript-legacy":"npm:typescript@^6.0.0","vitest":"^4.1.8"},"optionalDependencies":{"sql.js":"^1.14.1"},"overrides":{"hono":"^4.12.34","fast-uri":"3.1.5","ip-address":"^10.4.0"},"gitHead":"1e89f550da4cbac3dd46456fc9b2b9237c2a53e5","types":"./dist/index.d.ts","_id":"bot-relay-mcp@3.0.1","_nodeVersion":"24.13.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-ssSKJMdYl2JoeRNdj9YOjBQf9fnRglopfFUA/iGbAleEitDguzOq6WYNxH/hSkcIwnE8Rv0abCpiISechTlYpg==","shasum":"83aea1d2633afcd114e0d735b9a39721e09e7a51","tarball":"https://registry.npmjs.org/bot-relay-mcp/-/bot-relay-mcp-3.0.1.tgz","fileCount":444,"unpackedSize":3571197,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIFqGyfMuKjFPUb4uqiaQxjjko7MkXnuE9GNLrv+HqikTAiEAgxuNxeThbaTC+dEMZrxhK8GiMMRqWBoHxt9ExeJjoCo="}]},"_npmUser":{"name":"lumiereventures","email":"contact@lumiereventures.co"},"directories":{},"maintainers":[{"name":"lumiereventures","email":"contact@lumiereventures.co"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/bot-relay-mcp_3.0.1_1787038845298_0.7981166589988264"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-20T04:32:54.195Z","modified":"2026-08-18T07:40:45.622Z","2.1.1":"2026-04-20T04:32:54.381Z","2.1.2":"2026-04-20T10:49:11.490Z","2.1.3":"2026-04-20T15:24:07.633Z","2.1.4":"2026-04-20T16:40:20.842Z","2.1.5":"2026-04-21T01:54:16.840Z","2.1.6":"2026-04-21T02:48:41.070Z","2.1.7":"2026-04-21T05:41:02.488Z","2.2.0":"2026-04-21T11:05:35.062Z","2.2.1":"2026-04-22T04:28:21.581Z","2.2.2":"2026-04-22T09:23:59.731Z","2.2.3":"2026-04-22T11:23:14.829Z","2.3.0":"2026-04-23T05:45:13.306Z","2.4.0":"2026-04-24T06:12:32.192Z","2.4.1":"2026-04-24T09:21:49.742Z","2.4.2":"2026-04-27T03:53:06.295Z","2.4.3":"2026-04-27T08:12:43.399Z","2.4.4":"2026-04-28T05:46:49.676Z","2.4.5":"2026-04-29T03:13:16.171Z","2.5.0":"2026-05-04T05:18:38.578Z","2.6.0":"2026-05-05T15:10:04.663Z","2.6.1":"2026-05-06T07:35:35.512Z","2.6.2":"2026-05-07T02:51:40.813Z","2.6.3":"2026-05-08T02:13:56.586Z","2.7.1":"2026-05-13T09:01:33.084Z","2.7.2":"2026-05-21T20:39:08.730Z","2.7.3":"2026-06-03T08:28:11.201Z","2.7.4":"2026-06-04T09:30:14.251Z","2.8.0":"2026-06-05T09:09:17.019Z","2.9.0":"2026-06-09T09:00:29.309Z","2.9.1":"2026-06-11T07:42:36.204Z","2.10.0":"2026-06-16T02:45:12.828Z","2.11.0":"2026-06-23T04:40:11.472Z","2.11.1":"2026-06-25T07:48:35.677Z","2.12.0":"2026-06-29T14:40:21.524Z","2.13.0":"2026-06-30T07:09:39.592Z","2.14.0":"2026-06-30T14:37:33.468Z","2.14.1":"2026-07-02T07:52:06.738Z","2.15.0":"2026-07-06T09:06:42.185Z","2.15.1":"2026-07-06T15:17:01.456Z","2.15.2":"2026-07-07T08:20:00.751Z","2.16.2":"2026-07-14T08:04:00.194Z","2.16.4":"2026-07-20T13:01:03.912Z","2.17.1":"2026-07-21T13:35:54.422Z","2.20.0":"2026-07-22T03:42:27.172Z","2.21.0":"2026-07-23T04:53:46.797Z","2.23.0":"2026-07-25T09:22:35.372Z","2.24.0":"2026-08-01T03:24:23.184Z","2.25.0":"2026-08-06T14:46:24.073Z","3.0.0":"2026-08-13T03:44:12.649Z","3.0.1":"2026-08-18T07:40:45.493Z"},"bugs":{"url":"https://github.com/Maxlumiere/bot-relay-mcp/issues"},"author":{"name":"Lumiere Ventures","email":"contact@lumiereventures.co"},"license":"MIT","homepage":"https://github.com/Maxlumiere/bot-relay-mcp","keywords":["mcp","claude-code","agent-communication","multi-agent","ai","model-context-protocol","agent-relay","cursor","cline"],"repository":{"type":"git","url":"git+https://github.com/Maxlumiere/bot-relay-mcp.git"},"description":"MCP server for AI coding agent terminal-to-terminal communication. Local-first, SQLite-backed, webhook-integrated.","maintainers":[{"name":"lumiereventures","email":"contact@lumiereventures.co"}],"readme":"# bot-relay-mcp\n\n[![CI](https://github.com/Maxlumiere/bot-relay-mcp/actions/workflows/ci.yml/badge.svg)](https://github.com/Maxlumiere/bot-relay-mcp/actions/workflows/ci.yml)\n[![Tether on VSCode Marketplace](https://img.shields.io/badge/VSCode%20Marketplace-Tether-007ACC?logo=visualstudiocode)](https://marketplace.visualstudio.com/items?itemName=lumiere-ventures.bot-relay-tether)\n\nA local-first coordination bus for AI coding agents. Durable inboxes, task queues, and wakeups for Claude Code, Cursor, Cline, Codex-style CLIs, scripts, and webhooks. Two interfaces, one shared SQLite database, zero infrastructure.\n\n**37 MCP tools.** The headline feature is **hands-free, LLM-agnostic autowake**: agents running on different models (Claude Code, Codex) wake on relay mail and coordinate as a team without manual polling, via the [Tether VSCode extension](https://marketplace.visualstudio.com/items?itemName=lumiere-ventures.bot-relay-tether) plus a durable cross-process outbox, so an inbox change in one process wakes subscribers in another. See the [CHANGELOG](./CHANGELOG.md) for the full phase-by-phase arc.\n\n## What is this?\n\nbot-relay-mcp gives AI coding agents and external systems a way to coordinate.\n\n**Two audiences, two transports:**\n- **AI coding agents (Claude Code, Cursor, Cline, Zed)** connect via **stdio MCP**. Drop one entry into `~/.claude.json` and the relay's tools appear inside Claude. No daemon required.\n- **External systems (n8n, Slack, Telegram, custom scripts)** connect via **HTTP+SSE** with optional Bearer auth. Trigger agent actions or receive webhook events.\n\nEverything reads and writes the same SQLite file at `~/.bot-relay/relay.db`. There is no cloud, no daemon you have to install, no service mesh.\n\n## Why not just use Claude Agent Teams?\n\nFair question. Claude Code v2.1.32 shipped Agent Teams — native multi-agent coordination inside Claude. If your setup is Claude-only and stays that way, use it. It's the right tool.\n\nbot-relay-mcp solves a different problem: coordination across a heterogeneous LLM stack. The tools your agents run on probably aren't all Claude. You might have Claude Code terminals for architecture work, Codex or Cursor on a different repo, an n8n workflow firing webhooks, a background Python process polling results, a Telegram bot forwarding alerts. Agent Teams coordinates Claude with Claude. bot-relay-mcp coordinates whatever speaks MCP (or plain HTTP) with whatever else does.\n\nThree things it does that a vendor-native solution can't:\n\n- **LLM-agnostic.** Any MCP client — Claude Code, Cursor, Cline, Zed — registers and talks to any other. Non-MCP systems join over the HTTP+SSE transport with optional Bearer auth. No client is privileged.\n- **Self-hosted.** Everything lives in a single SQLite file on your machine. No cloud account, no control plane, no vendor lock-in. The HTTP daemon is optional; stdio-only works offline.\n- **Federation-bound (v2.3 roadmap).** Hub/edge federation is on the locked plan so multiple self-hosted relays can mesh without collapsing into one shared namespace. Teams of teams, across orgs, without routing through someone else's service.\n\nIt's also a durable bus, not an in-process coordinator. Messages, tasks, and channels survive individual agent sessions — restart a terminal, spawn a fresh one, come back tomorrow; the state is still there.\n\nIf your stack is Claude-only and stays that way, use Agent Teams. If it isn't, or if you want a self-hosted bus that survives individual sessions, that's what bot-relay-mcp is for.\n\n## Quick Start (30 seconds)\n\nThe relay is [published on npm](https://www.npmjs.com/package/bot-relay-mcp) — setup is a single config entry, no cloning, no compiling, no absolute paths.\n\nAdd to your `~/.claude.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"bot-relay\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"bot-relay-mcp\"],\n      \"type\": \"stdio\"\n    }\n  }\n}\n```\n\nThe first invocation fetches the package and starts the server. Subsequent launches are instant.\n\n### Quick Start (from source)\n\n```bash\ngit clone https://github.com/Maxlumiere/bot-relay-mcp.git\ncd bot-relay-mcp\nnpm install\nnpm run build\n```\n\n### One-command setup (`relay init`)\n\nAfter building, run the installer:\n\n```bash\n./bin/relay init\n```\n\nIt reconciles your `~/.claude.json` (mcpServers entry), `~/.claude/settings.json` (SessionStart hook), and — on macOS — installs a keep-alive launchd daemon. It never touches your agent tokens, and re-running is always safe (idempotent). Use `--config-only` / `--skip-hooks` / `--skip-daemon` to opt out of any step.\n\n> **⚠️ Security — the default is local-trust.** A default `relay init` install has **no HTTP secret**: the relay binds to `127.0.0.1` and trusts every process on the same machine. Any local process can then reach the loopback HTTP surface — including the dashboard operator endpoints (`/api/snapshot`, `set-status`, `wake-agent`, `kill-agent`, `operator-identity`). Per-agent tokens protect *who you can act as* (you can't impersonate another agent), but they do **not** gate the whole surface. This is a reasonable boundary on a personal, single-user machine (a local process already has OS-level access to the same data), and non-loopback binds are still refused without a secret.\n>\n> **On a shared machine, or any non-loopback / team / remote setup, gate it:** run `relay init --secret <strong-random>` (or export `RELAY_DASHBOARD_SECRET`). The daemon *requires* a secret to bind to any non-loopback host.\n\nAlternatively, wire it up by hand — add to `~/.claude.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"bot-relay\": {\n      \"command\": \"node\",\n      \"args\": [\"/absolute/path/to/bot-relay-mcp/dist/index.js\"],\n      \"type\": \"stdio\"\n    }\n  }\n}\n```\n\nOpen two Claude Code terminals and try it:\n\n**Terminal A:**\n```\n> Register on the relay as \"planner\" with role \"orchestrator\"\n> Discover other agents\n> Send a message to \"builder\": \"Can you handle the API layer?\"\n```\n\n**Terminal B:**\n```\n> Register on the relay as \"builder\" with role \"builder\"\n> Check my relay messages\n> Reply to planner: \"On it.\"\n```\n\nThe database is created automatically at `~/.bot-relay/relay.db` on first use. That is the full setup.\n\n**File permissions (v2.1).** The relay creates `~/.bot-relay/` at `0700` and `relay.db` + backup tarballs at `0600` — owner-only. `config.json` is operator-managed; the relay never chmods it but logs a warning at startup if it's more permissive than `0600`. POSIX only — native Windows NTFS uses ACLs, not POSIX modes, so the chmod calls are no-ops there (documented).\n\n## Tether (v2.5 + v2.7 cross-process delivery)\n\n`relay://inbox/<agent_name>` is a subscribable MCP resource. Any MCP-aware client subscribes via the standard `subscribe` request and receives `notifications/resources/updated` pushes when the agent's inbox changes (new mail, broadcast, drain). No polling, standard MCP semantics.\n\n**v2.7 added cross-process delivery.** A message sent from a stdio MCP terminal (one OS process) now wakes IDE subscribers connected to the HTTP daemon (a different OS process) via a durable `inbox_events` outbox table polled by the daemon. v2.5 only delivered events same-process — v2.7 is the load-bearing release for any Tether-style IDE integration.\n\nThe bundled VSCode extension ships on the marketplace:\n\n```bash\ncode --install-extension lumiere-ventures.bot-relay-tether\n```\n\nOr browse [marketplace.visualstudio.com/items?itemName=lumiere-ventures.bot-relay-tether](https://marketplace.visualstudio.com/items?itemName=lumiere-ventures.bot-relay-tether). Source for the extension lives at `extensions/vscode/` in this repo for users who want to build from source. The extension surfaces pending count + last-message recency in the status bar, opens a webview with the last message preview on click, and optionally auto-types `inbox` into the integrated terminal so Claude Code wakes up. See `extensions/vscode/README.md` for install + config and `docs/tether-roadmap.md` for the free-vs-paid scope line.\n\n## Sentinel — `relay watch` (v2.18)\n\nTether is push-wake **inside VSCode**. **Sentinel is wake-anywhere** — the poll/marker-based sibling for agents *not* in VSCode: iTerm2 personas, plain terminals, remote SSH sessions.\n\n```bash\nrelay watch <agent> [--interval S] [--once] [--json]\n```\n\nIt stands watch over `<agent>`'s inbox and prints a wake line the moment new mail arrives, so a harness (or you) can nudge the agent to read it — the shipped replacement for a hand-rolled inbox-polling loop. When the daemon writes filesystem delivery markers (`RELAY_FILESYSTEM_MARKERS=1`), it waits on the marker via `fs.watch` (near-zero idle cost) with a slow fallback re-check so a dropped event is never a silent miss; otherwise it falls back to bounded polling. It reads the active per-instance DB directly under the local-trust boundary (no token), and `--once` / `--json` make it scriptable.\n\n**Tether = push-wake in VSCode; Sentinel = wake anywhere.**\n\n## Tools\n\n### Identity\n\n| Tool | Inputs | Description |\n|------|--------|-------------|\n| `register_agent` | `name`, `role`, `capabilities[]` | Register this terminal as a named agent. Uses upsert — safe to call multiple times. |\n| `unregister_agent` | `name` | Remove an agent from the relay. Idempotent. Fires `agent.unregistered` webhook on success. |\n| `discover_agents` | `role` (optional) | List all registered agents with status (online/offline/unknown). |\n| `spawn_agent` | `name`, `role`, `capabilities`, `cwd?`, `initial_message?` | Spawn a new Claude Code terminal pre-configured as a relay agent. Cross-platform (v1.9): macOS (iTerm2/Terminal.app), Linux (gnome-terminal/konsole/xterm/tmux fallback chain — tmux covers headless servers), Windows (wt.exe/powershell.exe/cmd.exe). See `docs/cross-platform-spawn.md`. |\n\n### Messaging\n\n| Tool | Inputs | Description |\n|------|--------|-------------|\n| `send_message` | `from`, `to`, `content`, `priority` | Send a direct message to another agent by name. |\n| `get_messages` | `agent_name`, `status`, `limit` | Check your mailbox. Pending messages are auto-marked as read. |\n| `broadcast` | `from`, `content`, `role` (optional) | Send a message to all registered agents (or filter by role). |\n\n### Tasks\n\n| Tool | Inputs | Description |\n|------|--------|-------------|\n| `post_task` | `from`, `to`, `title`, `description`, `priority` | Assign a task to another agent. |\n| `post_task_auto` (v2.0) | `from`, `title`, `description`, `required_capabilities[]`, `priority` | Auto-route to the least-loaded agent whose capabilities match ALL required. Queues if no match; assigns on the next capable registration. |\n| `update_task` | `task_id`, `agent_name`, `action`, `result?` | Actions: `accept` / `complete` / `reject` / **`cancel` (v2.0, requester-only)** / **`heartbeat` (v2.0, renews lease)**. State machine + CAS enforced. |\n| `get_tasks` | `agent_name`, `role`, `status`, `limit` | Query your task queue (assigned to you or posted by you). |\n| `get_task` | `task_id` | Get a single task by ID with full details. |\n\n### Channels (v2.0)\n\n| Tool | Inputs | Description |\n|------|--------|-------------|\n| `create_channel` | `name`, `description?`, `creator` | Create a named channel for multi-agent coordination. Requires `channels` capability. |\n| `join_channel` | `channel_name`, `agent_name` | Join any public channel. |\n| `leave_channel` | `channel_name`, `agent_name` | Leave a channel. |\n| `post_to_channel` | `channel_name`, `from`, `content`, `priority` | Post to a channel you are a member of. |\n| `get_channel_messages` | `channel_name`, `agent_name`, `limit`, `since?` | Read messages posted to a channel since your join time. |\n\n### Status + Health (v2.0)\n\n| Tool | Inputs | Description |\n|------|--------|-------------|\n| `set_status` | `agent_name`, `status` | Signal `online` / `busy` / `away` / `offline`. `busy`/`away` exempt you from health-monitor task reassignment. |\n| `health_check` | _(none)_ | Report relay version, uptime, and live counts (agents, messages, tasks, channels). No auth required. |\n\n### Webhooks (v1.2+)\n\n| Tool | Inputs | Description |\n|------|--------|-------------|\n| `register_webhook` | `url`, `event`, `filter`, `secret` | Subscribe to relay events via HTTP POST. |\n| `list_webhooks` | _(none)_ | List all registered webhook subscriptions. |\n| `delete_webhook` | `webhook_id` | Remove a webhook subscription. |\n\nSupported events: `message.sent`, `message.broadcast`, `task.posted`, `task.accepted`, `task.completed`, `task.rejected`, `task.cancelled` (v2.0), `task.auto_routed` (v2.0), `task.health_reassigned` (v2.0), `channel.message_posted` (v2.0), `agent.unregistered`, `agent.spawned`, `webhook.delivery_failed`, `*` (all).\n\n**v2.0 — retry with backoff.** Failed webhook deliveries retry at 60s / 300s / 900s (3 attempts). CAS-claimed per row — no double delivery. Piggybacks on webhook-firing tool calls, no background thread.\n\nWhen `secret` is provided, each delivery includes an `X-Relay-Signature: sha256=...` HMAC header. Filter optionally restricts firing to events where `from_agent` or `to_agent` matches.\n\n## Example: Task Delegation\n\n**Terminal A — Orchestrator:**\n```\n1. register_agent(\"orchestrator\", \"planner\", [\"delegation\", \"review\"])\n2. discover_agents() → sees \"worker\" is online\n3. post_task(from: \"orchestrator\", to: \"worker\",\n     title: \"Write auth tests\",\n     description: \"Cover login, logout, token refresh. Use vitest.\",\n     priority: \"high\")\n4. send_message(from: \"orchestrator\", to: \"worker\",\n     content: \"Task posted — check your queue.\")\n```\n\n**Terminal B — Worker:**\n```\n1. register_agent(\"worker\", \"builder\", [\"testing\", \"backend\"])\n2. get_messages(\"worker\") → message from orchestrator\n3. get_tasks(\"worker\", role: \"assigned\", status: \"posted\") → auth test task\n4. update_task(task_id, \"worker\", \"accept\")\n5. ... does the work ...\n6. update_task(task_id, \"worker\", \"complete\", result: \"12 tests passing\")\n7. send_message(from: \"worker\", to: \"orchestrator\",\n     content: \"Auth tests done. All passing.\")\n```\n\n**Terminal A checks results:**\n```\n1. get_messages(\"orchestrator\") → \"Auth tests done.\"\n2. get_task(task_id) → status: completed, result: \"12 tests passing\"\n```\n\n## How It Works\n\nEvery Claude Code terminal spawns its own MCP server process via stdio. All processes read and write the same SQLite file at `~/.bot-relay/relay.db`. SQLite WAL mode handles concurrent access safely. Messages older than 7 days and completed tasks older than 30 days are purged automatically on startup.\n\n### Unified `relay` CLI (v2.1)\n\nOne entry, six subcommands: `doctor` / `init` / `test` / `generate-hooks` / `backup` / `restore`. First-run setup:\n\n```bash\nrelay init          # interactive\nrelay init --yes    # defaults + random HTTP secret\n```\n\n`relay doctor` runs a diagnostic sweep; `relay test` runs a minimal self-check against a throwaway relay; `relay generate-hooks` emits Claude Code hook JSON for `~/.claude/settings.json`. Full reference in [`docs/cli.md`](./docs/cli.md). The standalone `bin/relay-backup` + `bin/relay-restore` from Phase 2c have been absorbed into `relay backup` + `relay restore`.\n\n### Token lifecycle (v2.1)\n\nTwo new tools for credential hygiene: `rotate_token` lets an agent swap its own token with history preserved; `revoke_token` lets an admin-capable agent nullify another agent's token_hash (target re-bootstraps via the Phase 2b migration path). New `admin` capability is never auto-granted — register admin agents explicitly. Full operator runbook in [`docs/token-lifecycle.md`](./docs/token-lifecycle.md).\n\n### Error codes (v2.1)\n\nEvery tool error response carries a stable `error_code` token alongside the free-form `error` string. Branch on the code; never string-match the message. Full catalog + stability guarantee in [`docs/error-codes.md`](./docs/error-codes.md). Source of truth: [`src/error-codes.ts`](./src/error-codes.ts).\n\n### Protocol version (v2.1)\n\nBeyond the package `version` string, the relay surfaces a `protocol_version` via `register_agent` + `health_check` responses. Clients should key compatibility on **protocol_version** (bumps only on tool-surface changes) rather than the package version (bumps on every ship). See [`docs/protocol-version.md`](./docs/protocol-version.md) for SemVer rules + a client-side compatibility snippet.\n\n### HTTP Mode — for n8n, Slack, Telegram, custom scripts\n\nRun the relay as an HTTP daemon and any HTTP client can drive it:\n\n```bash\nRELAY_TRANSPORT=http RELAY_HTTP_SECRET=your-shared-secret node dist/index.js\n# Listens on http://127.0.0.1:3777\n```\n\n> **Production deployment — set `RELAY_HTTP_SECRET`.** v2.1 refuses to start on a non-loopback host (`0.0.0.0`, a public IP, Docker `-p 3777:3777` without loopback pinning) unless `RELAY_HTTP_SECRET` is set. Loopback binds (`127.0.0.1`, `::1`, `localhost`) stay zero-config for local development.\n>\n> Dev-only escape hatch: `RELAY_ALLOW_OPEN_PUBLIC=1` lets the relay start anyway on a public host without a secret — useful for throwaway local Docker nets, but logs a loud warning every startup. Never use in production.\n\nEndpoints:\n- `POST /mcp` — JSON-RPC (the MCP protocol over HTTP+SSE). Requires `Authorization: Bearer <secret>` if `http_secret` is configured.\n- `GET /health` — server status (always open, no auth)\n- `GET /` — built-in dashboard (live view of agents, messages, tasks, webhooks). **ADR-0006:** protected by a Host-header allowlist (DNS-rebinding defense) + an auth gate (`RELAY_DASHBOARD_SECRET` or the `dashboard_secret` config, generated by default at `relay init`). Operator-power endpoints (kill-agent, wake-agent, set-status, …) require it regardless of network position. Loopback binds allow a restricted, secret-free read view; non-loopback binds require the secret. `http_secret` no longer authenticates the dashboard — that fallback was a removed privilege-escalation. Full policy in [`docs/dashboard-security.md`](./docs/dashboard-security.md).\n- `GET /api/snapshot` — JSON snapshot of relay state (same gates as `/`)\n\nThree transport modes:\n- `stdio` (default) — per-terminal, for AI coding agents\n- `http` — daemon, for external systems\n- `both` — HTTP daemon plus a stdio connection (useful for bridge scripts)\n\nAll transports share the same SQLite database. Stdio agents and HTTP clients see the same world.\n\n**Process-boundary reminder (v2.1.3):** stdio MCP clients and the HTTP daemon are **separate processes**. Each Claude Code terminal with `\"type\":\"stdio\"` in `~/.claude.json` spawns its own `node dist/index.js` child. Restarting the `:3777` HTTP daemon never affects stdio clients — their own child processes are untouched. Operator `/mcp` reconnect is only needed after restart for `\"type\":\"http\"` MCP clients pointed at the daemon URL. See [`docs/transport-architecture.md`](./docs/transport-architecture.md) for the full topology + post-restart operator checklist.\n\n### n8n integration example\n\nTrigger a Claude Code agent from an n8n workflow:\n\n```json\nPOST http://127.0.0.1:3777/mcp\nAuthorization: Bearer your-shared-secret\nContent-Type: application/json\n\n{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 1,\n  \"method\": \"tools/call\",\n  \"params\": {\n    \"name\": \"post_task\",\n    \"arguments\": {\n      \"from\": \"n8n-workflow-42\",\n      \"to\": \"builder\",\n      \"title\": \"Process new lead\",\n      \"description\": \"Lead data: ...\",\n      \"priority\": \"high\"\n    }\n  }\n}\n```\n\nThen register a webhook so n8n hears about completion:\n\n```json\n{\n  \"jsonrpc\": \"2.0\", \"id\": 2, \"method\": \"tools/call\",\n  \"params\": {\n    \"name\": \"register_webhook\",\n    \"arguments\": {\n      \"url\": \"https://your-n8n.example.com/webhook/abc\",\n      \"event\": \"task.completed\",\n      \"secret\": \"shared-with-n8n\"\n    }\n  }\n}\n```\n\nWhen a task completes, n8n receives a POST with the result and an HMAC signature in `X-Relay-Signature`.\n\n### Config File (v1.2+)\n\nOptional `~/.bot-relay/config.json`:\n\n```json\n{\n  \"transport\": \"http\",\n  \"http_port\": 3777,\n  \"http_host\": \"127.0.0.1\",\n  \"webhook_timeout_ms\": 5000,\n  \"http_secret\": null,\n  \"trusted_proxies\": []\n}\n```\n\nEnv vars override file config: `RELAY_TRANSPORT`, `RELAY_HTTP_PORT`, `RELAY_HTTP_HOST`, `RELAY_HTTP_SECRET`, `RELAY_TRUSTED_PROXIES` (comma-separated CIDRs).\n\n### Trusted Proxies and X-Forwarded-For (v1.6.2)\n\nBy default, the relay IGNORES the `X-Forwarded-For` header completely. Rate limits are keyed on the direct socket peer IP only. This prevents a caller from sending a spoofed header to get their own rate-limit bucket.\n\nIf you front the relay with Cloudflare, nginx, or any other reverse proxy, configure `trusted_proxies` with CIDRs of those proxies:\n\n```json\n{\n  \"trusted_proxies\": [\"127.0.0.0/8\", \"::1/128\", \"10.0.0.0/8\"]\n}\n```\n\nOr via env var:\n\n```bash\nRELAY_TRUSTED_PROXIES=\"127.0.0.0/8,::1/128,10.0.0.0/8\"\n```\n\nWhen the direct peer IP falls in the trusted list, the relay walks the `X-Forwarded-For` chain right-to-left, skipping trusted hops, and uses the leftmost-untrusted hop as the real client IP. This matches RFC 7239 §7.4 and how nginx/Express normally handle this.\n\n## Per-Agent Tokens (v1.7)\n\nEvery tool call (other than first-time `register_agent` and `/health`) requires an agent token. The token identifies WHO is calling — separate from and stronger than the shared HTTP secret, which only identifies a trusted network.\n\n**Issuing a token — first registration:**\n\n```bash\n# The response returns `agent_token` ONCE. Save it.\n{\n  \"jsonrpc\": \"2.0\", \"id\": 1, \"method\": \"tools/call\",\n  \"params\": {\n    \"name\": \"register_agent\",\n    \"arguments\": { \"name\": \"builder\", \"role\": \"builder\", \"capabilities\": [\"tasks\"] }\n  }\n}\n```\n\nThe server stores only a bcrypt hash. The raw token is surfaced **once** in the response `agent_token` field and echoed to stderr as `[auth] New agent_token issued for \"builder\". Save it: RELAY_AGENT_TOKEN=...`. If you lose it, `unregister_agent` (auth'd) then re-register.\n\n**Presenting the token on every subsequent call — three ways:**\n\n1. Arg field (works for stdio + HTTP):\n   ```json\n   { \"name\": \"send_message\", \"arguments\": { \"from\": \"builder\", \"to\": \"ops\", \"content\": \"hi\", \"agent_token\": \"...\" } }\n   ```\n2. HTTP header:\n   ```\n   X-Agent-Token: <token>\n   ```\n3. Env var (stdio flow, also picked up by HTTP client wrappers):\n   ```bash\n   export RELAY_AGENT_TOKEN=<token>\n   ```\n\n**Capabilities** are set at first registration and are **immutable** (v1.7.1). To change an agent's capability set, call `unregister_agent` (with its token) then `register_agent` with the new capability list. Re-register attempts that change caps are ignored with a `capabilities_note` in the response.\n\n**Capability catalog:**\n- `spawn` — required for `spawn_agent`\n- `tasks` — required for `post_task`, `update_task`\n- `webhooks` — required for `register_webhook`, `list_webhooks`, `delete_webhook`\n- `broadcast` — required for `broadcast`\n- All other tools are always allowed for any authenticated agent (no capability check).\n\n**Migration for pre-v1.7 agents (v2.1+):** agents registered before v1.7 have no token hash. A `register_agent` call against such a row self-migrates — the relay detects the null hash, issues a fresh token, and the agent is first-class from that point on. **No `RELAY_ALLOW_LEGACY=1` required** for the migration call itself. `RELAY_ALLOW_LEGACY` is still available as a coarser escape hatch for non-register tool calls against unmigrated legacy rows (e.g., if you want `send_message` to work before an agent has migrated); turn it OFF once all your agents have migrated.\n\n## Encryption at Rest (v1.7 opt-in; keyring + rotation in v2.1 Phase 4b.3)\n\nSet the keyring to encrypt message/task/audit/webhook content fields in the SQLite database with AES-256-GCM. Three configuration sources (pick exactly one — multi-set is rejected at startup):\n\n```bash\n# 1. Inline JSON (for CI / secrets managers)\nexport RELAY_ENCRYPTION_KEYRING='{\"current\":\"k1\",\"keys\":{\"k1\":\"<base64-32>\"}}'\n\n# 2. File path (operator-friendly; chmod 600)\nexport RELAY_ENCRYPTION_KEYRING_PATH=~/.bot-relay/keyring.json\n\n# 3. Legacy single-key (auto-wraps to { current: \"k1\", keys: { k1: <value> } }; deprecation warning at startup)\nexport RELAY_ENCRYPTION_KEY=\"<base64-32>\"\n\n# Generate a key:\nopenssl rand -base64 32\n# or:\nnode -e 'console.log(require(\"crypto\").randomBytes(32).toString(\"base64\"))'\n```\n\nWhen the keyring is set, the relay transparently encrypts on write (with `current` key) and decrypts on read (with any key in the keyring). Every ciphertext carries an `enc:<key_id>:...` prefix so rows are self-describing. Legacy `enc1:...` rows (pre-Phase-4b.3 deployments) decrypt via `RELAY_ENCRYPTION_LEGACY_KEY_ID` (default `k1`).\n\n### Rotating keys (online)\n\nFull runbook at [`docs/key-rotation.md`](./docs/key-rotation.md). In summary:\n\n1. Add the new key to the keyring while keeping the old one (both decrypt; `current` still points to old).\n2. Flip `current` to the new key; restart. New writes use the new key.\n3. `relay re-encrypt --from old_key_id --to new_key_id --yes` — scans + migrates all existing rows across 5 encrypted columns. Resumable.\n4. `relay re-encrypt --verify-clean old_key_id` — exit 0 = safe to retire.\n5. Remove the old key from the keyring; restart.\n\nWithout the keyring set, content is stored plaintext (default, convenient for local dev).\n\n## Rotation Guide — HTTP Shared Secret (v1.7)\n\nThe `RELAY_HTTP_SECRET` shared secret can be rotated without downtime using a grace window:\n\n**Step 1 — promote the new secret as primary, keep the old as previous:**\n\n```bash\nRELAY_HTTP_SECRET=\"new-secret-v2\" \\\nRELAY_HTTP_SECRET_PREVIOUS=\"old-secret-v1\" \\\nRELAY_TRANSPORT=http node dist/index.js\n```\n\nDuring this window, BOTH secrets are accepted. Requests using the old secret receive an `X-Relay-Secret-Deprecated: true` response header as a signal to upgrade.\n\n**Step 2 — update every client** to present `new-secret-v2` in their `Authorization: Bearer …` or `X-Relay-Secret` header.\n\n**Step 3 — watch for the deprecation header** on your dashboard/logs until no more requests use the old secret.\n\n**Step 4 — drop the old secret:**\n\n```bash\nRELAY_HTTP_SECRET=\"new-secret-v2\" \\\nRELAY_TRANSPORT=http node dist/index.js    # RELAY_HTTP_SECRET_PREVIOUS unset\n```\n\nMultiple previous secrets are supported as a comma-separated list:\n\n```bash\nRELAY_HTTP_SECRET_PREVIOUS=\"v1-secret,v0-secret\"\n```\n\nSecret comparisons are timing-safe (v1.7.1 — `crypto.timingSafeEqual`), so an attacker cannot recover the secret via byte-by-byte response-timing measurement.\n\n## Multi-machine: centralized deployment (v2.1)\n\nbot-relay-mcp is LLM-agnostic, CLI-agnostic, and deployment-flexible. Pick the path that fits your setup:\n\n**Path A — Single-machine (default).** Stdio transport, per-terminal process, zero infrastructure. Best for solo development on one laptop. No secrets, no reverse proxies, no ops — run `npm install` + add the stdio entry to your MCP client config and you're done. Covered throughout this README.\n\n**Path B — Multi-machine (centralized, v2.1 Phase 7r).** One bot-relay-mcp hub on a VPS, multiple thin MCP clients connecting via HTTP. Agents on different machines can `send_message`, post tasks, subscribe to webhooks, and join channels through shared state. No new architecture — just the HTTP transport we've had since v1.2, packaged with a convenience CLI in v2.1.\n\n### When to pick centralized\n\n- Two or more machines in play (dev laptop + CI, work + personal, family devices)\n- AI agents running on different hosts that need to coordinate\n- Team environments where multiple people connect their MCP clients to a shared relay\n\n### Quick pair flow\n\n**On the hub** (VPS, reachable at e.g. `https://relay.example.com`): install bot-relay-mcp, run under systemd with `RELAY_TRANSPORT=http` + `RELAY_HTTP_SECRET`, terminate TLS with Caddy/nginx. See [`docs/multi-machine-deployment.md`](./docs/multi-machine-deployment.md) for the worked VPS runbook.\n\n**On each client machine:**\n\n```bash\nrelay pair https://relay.example.com \\\n  --name \"$(whoami)-$(hostname -s)\" \\\n  --role operator \\\n  --capabilities spawn,tasks,webhooks,broadcast,channels \\\n  --secret \"$RELAY_HTTP_SECRET\"\n```\n\n`relay pair` probes the hub, registers this machine as an agent, captures the returned one-time `agent_token`, and emits an MCP client config snippet ready to paste into `~/.claude.json` / `~/.cursor/mcp.json` / etc. Persist the token (`export RELAY_AGENT_TOKEN=…` in your shell rc) so hooks can authenticate on every terminal open.\n\nVerify after pairing:\n\n```bash\nrelay doctor --remote https://relay.example.com\n```\n\nExpected: PASS on reachability + protocol compatibility + token auth + hub auth config.\n\n### Trust-model tradeoffs\n\n- Hub operator can read plaintext messages in RAM (even with `RELAY_ENCRYPTION_KEY` set, decryption happens server-side for routing)\n- Hub is a single point of failure for cross-machine coordination\n- Recommended for trusted groups (families, small teams, personal multi-machine setups)\n- NOT recommended for mutually distrustful parties sharing a single hub, or compliance-bound workloads where in-RAM access by the operator is a policy violation\n\nSee [`SECURITY.md` §Centralized deployment trust model](./SECURITY.md) for the full posture + incident response playbook.\n\n### Bridge to other tools via MCP\n\nbot-relay-mcp is MCP-compatible, so your MCP client can connect to **both** bot-relay-mcp AND other MCP servers (Slack, Discord, Matrix, email, etc.) simultaneously. That's an operator deployment choice — we don't integrate those into bot-relay-mcp. See [`docs/multi-machine-deployment.md` §3](./docs/multi-machine-deployment.md) for the pattern.\n\n## Zero-Friction Setup\n\nTo skip approval prompts for relay tools, add this to your project's `.claude/settings.json`:\n\n```json\n{\n  \"permissions\": {\n    \"allow\": [\n      \"mcp__bot-relay__register_agent\",\n      \"mcp__bot-relay__discover_agents\",\n      \"mcp__bot-relay__send_message\",\n      \"mcp__bot-relay__get_messages\",\n      \"mcp__bot-relay__broadcast\",\n      \"mcp__bot-relay__post_task\",\n      \"mcp__bot-relay__update_task\",\n      \"mcp__bot-relay__get_tasks\",\n      \"mcp__bot-relay__get_task\",\n      \"mcp__bot-relay__register_webhook\",\n      \"mcp__bot-relay__list_webhooks\",\n      \"mcp__bot-relay__delete_webhook\"\n    ]\n  }\n}\n```\n\n## Auto-Check on Session Start\n\nAdd a `SessionStart` hook so every terminal automatically checks the relay for pending messages when it opens. See `docs/hooks.md` for the full configuration.\n\n## Near-Real-Time Mail Delivery (v1.8)\n\nThe `SessionStart` hook only fires when a terminal opens. If an agent is actively working and mail arrives mid-session, it does not see the message until next startup (or a human pastes it in).\n\nv1.8 adds a `PostToolUse` hook — `hooks/post-tool-use-check.sh` — that fires after every tool call, checks the mailbox, and injects pending messages as `additionalContext` so the running session picks them up immediately.\n\nInstall per-project (NOT global), in `<project>/.claude/settings.json`:\n\n```json\n{\n  \"hooks\": {\n    \"PostToolUse\": [\n      {\n        \"matcher\": \"*\",\n        \"hooks\": [\n          {\n            \"type\": \"command\",\n            \"command\": \"/path/to/bot-relay-mcp/hooks/post-tool-use-check.sh\",\n            \"timeout\": 5\n          }\n        ]\n      }\n    ]\n  }\n}\n```\n\n> **Important — if your path contains spaces, single-quote it inside the JSON string.** Claude Code passes the `command` to the shell, which splits on whitespace. Without the single quotes the hook silently fails with errors like `/bin/sh: ... is a directory`. Example for an installation at `/path/to/My Projects/bot-relay-mcp/`:\n>\n> ```json\n> \"command\": \"'/path/to/My Projects/bot-relay-mcp/hooks/post-tool-use-check.sh'\"\n> ```\n>\n> The outer double-quotes are JSON; the inner single-quotes are shell. Paths with no spaces do not need this treatment.\n\nThe hook prefers the HTTP path when `RELAY_AGENT_TOKEN` is set and the daemon is running (full auth + audit), falling back to direct sqlite on `RELAY_DB_PATH` otherwise. It does NOT re-register (SessionStart handles that), does NOT check tasks (simpler focus, less context pressure), and silent-exits when there is no mail. Full docs + troubleshooting in [`docs/post-tool-use-hook.md`](./docs/post-tool-use-hook.md).\n\n**Honest limitation:** idle terminals get no delivery. The hook only fires when the agent is actively running tool calls. For long-idle windows, still rely on SessionStart + human attention.\n\n## Turn-Boundary Wake (v2.1, rewritten v2.23)\n\n`PostToolUse` only fires on turns that include at least one tool call. A text-only turn (Claude responds with no tool invocation) does not trigger it. The `Stop` hook — `hooks/stop-check.sh` — closes that gap by firing at every turn end, whether or not the turn invoked tools. It is a **read-only wake**: it peeks at the mailbox and, if mail is pending, emits `decision:\"block\"` so the agent continues immediately and fetches its own mail via `get_messages`. The hook itself never marks anything read — a wake that cannot prove delivery must not consume (`additionalContext` on Stop is queued for a next turn that may never come, so the original mark-read-and-inject shape was a silent data-loss path). Install both together in your project's `.claude/settings.json`:\n\n```json\n{\n  \"hooks\": {\n    \"Stop\": [\n      {\n        \"matcher\": \"*\",\n        \"hooks\": [\n          {\n            \"type\": \"command\",\n            \"command\": \"/path/to/bot-relay-mcp/hooks/stop-check.sh\",\n            \"timeout\": 5\n          }\n        ]\n      }\n    ]\n  }\n}\n```\n\nSame single-quote-the-path-if-it-contains-spaces rule, same env vars, same HTTP/sqlite fallback (both non-mutating: `peek:true` over HTTP, a bare SELECT over sqlite — no mutating SQL exists in the script), same silent-fail contract as `PostToolUse`. Two loop guards bound the blocking: `stop_hook_active` in the hook payload (one wake per natural stop) and a time damper (`RELAY_STOP_WAKE_DAMPER_SECS`, default 120s) that applies only when the payload lacks a parseable `stop_hook_active`. All guards leave mail pending when they suppress — a delayed wake, never a lost one. Full docs + troubleshooting in [`docs/stop-hook.md`](./docs/stop-hook.md).\n\n**Honest limitation:** `Stop` does NOT wake truly idle terminals. If no turn is in progress, neither hook fires. For long-idle windows, use the Layer 2 Managed Agent reference (`examples/managed-agent-reference/`).\n\n## Backup & Restore (v2.1)\n\nTwo CLIs for disaster recovery:\n\n```bash\nrelay-backup                              # snapshot to ~/.bot-relay/backups/\nrelay-backup --output /srv/backup.tgz     # custom path\nrelay-restore ~/.bot-relay/backups/relay-backup-<iso>.tar.gz\n```\n\n`relay-backup` produces a `tar.gz` of the live DB (via a consistent snapshot — safe while the daemon is running), the optional `config.json`, and a `manifest.json` with schema version and row counts. Works on **both drivers** (#171): the native `better-sqlite3` driver snapshots via `VACUUM INTO`; the optional `sql.js` wasm driver snapshots via an atomic in-memory serialization (`.export()`), and the manifest/integrity probes open through the active driver. Archives are standard SQLite files and interoperate across drivers ([details](./docs/sqlite-wasm-driver.md#backup-and-restore)).\n\n`relay-restore` always safety-backs-up the current DB first (to `~/.bot-relay/backups/pre-restore-<iso>.tar.gz`). If that safety backup fails, the restore aborts untouched. It then refuses if the daemon appears to be running (`/health` probe, best-effort), refuses schema-version mismatches (higher = hard refuse, lower = `--force` overrides), runs `PRAGMA integrity_check` on the extracted DB, and finally atomic-swaps the new DB into place.\n\nFull docs + troubleshooting in [`docs/backup-restore.md`](./docs/backup-restore.md).\n\n## Lost-Token Recovery (v2.1)\n\nClose a terminal, lose `RELAY_AGENT_TOKEN`, and the relay rejects your `register_agent` with `AUTH_FAILED` because the row is intact. Clear the registration so the agent can re-bootstrap:\n\n```bash\nrelay recover <agent-name>                 # interactive confirm\nrelay recover <agent-name> --yes           # skip confirm (for scripts)\nrelay recover <agent-name> --dry-run       # show what would change, commit nothing\nrelay recover <agent-name> --db-path PATH  # non-default DB location\n```\n\nMessages and tasks addressed to the agent are **preserved** — only the `agents` + `agent_capabilities` rows are cleared. After recovery, the operator calls `register_agent` with the same name/role/capabilities and captures a fresh `agent_token`.\n\nTrust model: filesystem access to `~/.bot-relay/relay.db` IS the authority (same boundary the daemon relies on). Not an MCP tool — the caller by definition cannot authenticate. The CLI emits an `audit_log` entry with `tool='recovery.cli'` + the operator's OS username for incident traceability.\n\n## External-CLI Token Mint (v2.6)\n\nSome LLM CLI clients (Codex was the canonical case) have safety monitors that pattern-match `register_agent` followed immediately by `use returned token` as a credential handoff and cancel the second tool call. The result: the agent row exists on the relay, but the agent process never captured its token, and every subsequent re-register attempt fails with `NAME_COLLISION_ACTIVE` because the orphan session is still considered live.\n\n`relay mint-token` solves this by minting the token outside the agent's process. The operator hands the plaintext token to the agent's environment via `RELAY_AGENT_TOKEN`, and the agent authenticates on its first MCP call without ever invoking `register_agent`:\n\n```bash\nrelay mint-token codex --role builder --capabilities build,test,audit\n```\n\nOutput (token shown ONCE):\n\n```\n✓ Minted token for new agent \"codex\"\n\nToken (shown ONCE — store it now):\n\n  <43-char-base64url-token>\n\nSet in your CLI's environment before launching:\n\n  export RELAY_AGENT_NAME=codex\n  export RELAY_AGENT_TOKEN=<43-char-base64url-token>\n```\n\nOther forms:\n\n```bash\nrelay mint-token NAME --json                          # structured output for scripts\nrelay mint-token EXISTING --force                     # rotate token; caps + role preserved\nrelay mint-token NAME --description \"human-readable\"  # discoverable in dashboard\n```\n\nCaps are locked at first mint (caps are immutable after first registration); `--force` rotates the token but preserves both caps and role. The CLI emits a daemon-running advisory to stderr and writes an `audit_log` entry (`tool='agent.token_minted'`) with the operator's OS username, the `--force` flag state, and whether the row was created or rotated. Full setup walkthrough including platform-specific token-storage best practices: [`docs/agents/external-cli-setup.md`](./docs/agents/external-cli-setup.md).\n\n## Cross-Platform Spawn (v1.9)\n\n`spawn_agent` opens a new Claude Code terminal on macOS, Linux, and Windows via a driver abstraction:\n\n- **macOS** — `bin/spawn-agent.sh` (iTerm2 → Terminal.app). Unchanged from v1.6.4, preserves the 3-layer hardening + 19-payload adversarial test suite.\n- **Linux** — `gnome-terminal` → `konsole` → `xterm` → `tmux` fallback chain. The tmux fallback creates a detached session (attach later with `tmux attach -t <agent-name>`) — covers headless servers with no GUI.\n- **Windows** — `wt.exe` (Windows Terminal) → `powershell.exe` → `cmd.exe`.\n\nDriver selection: `RELAY_TERMINAL_APP` override (allowlist-gated) > `process.platform` auto-detect > in-driver fallback chain.\n\nFull install requirements per platform + manual smoke-test checklists + troubleshooting: [`docs/cross-platform-spawn.md`](./docs/cross-platform-spawn.md).\n\n**Env-var propagation** is minimal by default (principle of least authority): system essentials + anything prefixed `RELAY_*`. Secrets like `AWS_SECRET_ACCESS_KEY` are NOT passed to spawned agents unless explicitly prefixed.\n\n**Plug-and-play defaults (v2.1.2):** spawned terminals are configured for autonomous work out of the box — they auto-pull mail from their inbox on first turn instead of idling, run with `--permission-mode bypassPermissions` so they don't ask the operator to approve every tool call, get an iTerm2 / session-picker title set to the agent name, and run at `--effort high` to cap token spend (parent terminals doing strategic work may use `xhigh`; spawned children doing mechanical work shouldn't inherit it). Every default has an env override for the rare case the legacy behavior is wanted:\n\n| Default | Env override | Notes |\n|---|---|---|\n| Kickstart prompt sent as positional arg | `RELAY_SPAWN_KICKSTART=\"custom\"` / `RELAY_SPAWN_NO_KICKSTART=1` | The default tells the spawned agent to pull `get_messages` and act on inbox. |\n| `--permission-mode bypassPermissions` | `RELAY_SPAWN_PERMISSION_MODE=<mode>` | Allowlist: `acceptEdits`, `auto`, `bypassPermissions`, `default`, `dontAsk`, `plan`. |\n| `--name <agent>` | `RELAY_SPAWN_DISPLAY_NAME=\"custom\"` | Shows up as the iTerm2 tab + Claude Code session title. |\n| `--effort high` | `RELAY_SPAWN_EFFORT=<level>` | Allowlist: `low`, `medium`, `high`, `xhigh`, `max`. |\n\n## Layer 2: Managed Agents (v1.10)\n\nAgents that are NOT Claude Code terminals — Python daemons, Node workers, Ollama/vLLM integrations, custom scripts. They connect to the relay via HTTP (recommended) or direct SQLite, use the same 37 MCP tools, and authenticate with per-agent tokens. If registered with `managed:true`, they also receive token-rotation push-messages over the normal `get_messages` channel — see [`docs/managed-agent-protocol.md`](./docs/managed-agent-protocol.md).\n\nFull integration guide with mental model, auth flow, lifecycle, error patterns, and security notes: [`docs/managed-agent-integration.md`](./docs/managed-agent-integration.md).\n\nRunnable reference implementations (stdlib-only, ~200 LOC each):\n- **Python:** [`examples/managed-agent-reference/python/agent.py`](./examples/managed-agent-reference/python/agent.py)\n- **Node:** [`examples/managed-agent-reference/node/agent.js`](./examples/managed-agent-reference/node/agent.js)\n\nBoth demonstrate: register, send/receive messages, accept + complete tasks, discover peers, SIGINT cleanup. Each has a `SMOKE.md` with a 5-step manual verification checklist.\n\n## SQLite Driver Options (v1.11)\n\nThe relay uses SQLite for persistent state. Two drivers are available:\n\n- **`native` (default)** — `better-sqlite3`, a compiled C addon. Fast, supports WAL mode, multi-process safe. Requires a C++ compiler at `npm install` time.\n- **`wasm`** — `sql.js`, SQLite compiled to WebAssembly. Zero native compilation. Slightly slower writes (in-memory + write-back-to-file). **Single-process only** (not safe for multi-terminal stdio).\n\nSwitch with one env var:\n\n```bash\nnpm install sql.js                    # one-time install of the optional dep\nRELAY_SQLITE_DRIVER=wasm node dist/index.js\n```\n\nBoth drivers read the same `relay.db` file format. Full details, performance notes, and limitations: [`docs/sqlite-wasm-driver.md`](./docs/sqlite-wasm-driver.md).\n\n### Installing under npm v12+ (install scripts disabled by default)\n\nnpm **v12** (released 2026-07-08) disables dependency **install scripts** by default (`allowScripts` off) — including native `node-gyp`/prebuild builds. The default `native` driver (`better-sqlite3`) fetches its prebuilt binary via an install script, so under npm 12's defaults that binary is never fetched and the relay fails at startup with:\n\n```\nError: Could not locate the bindings file\n```\n\nTwo ways to fix it:\n\n**A — keep `native` (best for multi-terminal stdio):** approve better-sqlite3's install script once. The approval is recorded in your `package.json` allowlist — commit it.\n\n```bash\nnpm install                                   # installs; records which deps have scripts\nnpm approve-scripts --allow-scripts-pending   # review what's pending\nnpm approve-scripts better-sqlite3            # approve it\nnpm rebuild                                    # build the native binary\n```\n\n**B — switch to `wasm` (zero approval):** `sql.js` is pure WebAssembly — no native build, no install script.\n\n```bash\nRELAY_SQLITE_DRIVER=wasm node dist/index.js\n```\n\n`wasm` is **single-process only** (see the note above — not for multi-terminal stdio). `sql.js` is an installed *optional* dependency; if you installed with `--omit=optional`, add it back with `npm install sql.js`.\n\n`--allow-git` / `--allow-remote` (also default `none` in npm 11.10+/11.15+) don't affect the relay — every dependency resolves from the npm registry, none from git or tarball URLs. Full details: [`docs/sqlite-wasm-driver.md`](./docs/sqlite-wasm-driver.md#npm-v12-and-install-scripts).\n\n## Roadmap\n\n- **v1.1**: Local relay, 9 tools, SQLite, auto-purge\n- **v1.2**: HTTP transport, webhook system, config file — 12 tools\n- **v1.3**: Presence integrity, `unregister_agent`, hook delivers mail — 13 tools\n- **v1.4**: `spawn_agent` + role templates + dashboard — 14 tools\n- **v1.5**: Built-in security — Bearer auth, audit log, rate limiting\n- **v1.6**: Hardening pass — SSRF, input validation, path traversal, stdout discipline\n- **v1.7**: Per-agent tokens, secret rotation, at-rest encryption, capability scoping\n- **v1.8**: Near-real-time mail via `PostToolUse` hook\n- **v1.9**: Cross-platform spawn (macOS / Linux / Windows / tmux) — Node/TS driver abstraction\n- **v1.10**: Layer 2 Managed Agents — reference Python + Node workers\n- **v1.11**: SQLite WASM driver (`sql.js` opt-in) — zero native compilation on Windows/Alpine/Docker/CI\n- **v2.0**: Plug-and-play — channels, smart routing (`post_task_auto`), task leases + heartbeat, lazy health monitor, session-aware reads, busy/DND, `health_check`, webhook retry with CAS, payload size limits, config validation, auto-unregister, dead-agent purge, debug mode. 22 tools.\n- **v2.1**: Architectural completion — explicit `auth_state` machine, managed-agent rotation grace, versioned ciphertext + keyring with online rotation (`relay re-encrypt`), lost-token recovery CLI (`relay recover`), admin-initiated cross-agent rotation (`rotate_token_admin`), structured error_code catalog, protocol_version surface, Phase 4p webhook-secret encryption, Phase 4b.1 v2 revoke/recovery redesign. 25 tools. 14 of 14 Codex architectural findings closed.\n- **v2.7**: Tether-ready cross-process inbox notifications. Durable `inbox_events` outbox table (schema v11→v12, idempotent migration); HTTP daemon polls + dispatches to `relay://inbox/<agent>` subscribers regardless of which OS process wrote the message. Reaper now skips sessions with active SSE GET streams (`openGetStreams` count). Daemon emits `:keepalive\\n\\n` SSE comment frames every `RELAY_SSE_KEEPALIVE_MS` (default 20s) so Electron-based clients (VS Code Tether extension) don't idle-disconnect at ~2.5min. External-review-flagged `get_messages` filter-after-mark P1 fix — `since` filter now applies in SQL BEFORE the read-mark mutation. 30 tools. Pairs with Tether VSCode extension v0.1.2+ on the marketplace.\n- **v2.12**: Hands-free, LLM-agnostic autowake. The multi-agent Tether watch-all wakes Claude and Codex agents on relay mail and auto-submits, no manual polling (dogfood-proven: the relay now coordinates its own development). Plus the pending-vs-history resolved plane (`resolve_messages` + an `ack` flag, so handled mail stops re-flooding fresh sessions) and a central schema-scoped auth fix closing a stray-field impersonation hole.\n- **v2.13–v2.16**: Presence liveness — a same-host process probe (`agent_pid`) so an idle-but-alive agent stops reading as offline (schema v16→v18) — plus the Tether-wakes-Codex PID handshake and the `bin/codex-relay` cold-start launcher (zero-turn cold summon of a Codex agent).\n- **v2.17**: LLM-agnostic spawn parity. `spawn_agent(cli: \"codex\")` launches a Codex CLI (macOS/Linux), driven by a central agent-CLI profile registry with an AST drift guard; Tether wake behavior is data-driven from the same registry.\n- **v2.18**: **Sentinel** (`relay watch <agent>`) — poll/marker-based autowake for terminals *not* in VSCode/Tether (iTerm2 personas, plain terminals, remote sessions). The wake-anywhere sibling of Tether's push-wake.\n- **v2.19**: Liveness derivation — presence that stops lying. The coarse agent status is now derived from the liveness verdict (online/offline/unknown), never from `last_seen` age, so a rate-limited-but-alive agent no longer reads offline.\n- **v2.20**: **O(1) token authentication.** An indexed HMAC token locator + a verified-token cache replace the O(N) per-call bcrypt scan (bcrypt stays the sole verifier); instant revocation via a generation counter; zero-lockout migration. 35 tools.\n- **v2.21**: **ADR-0002 — agent class/flare topology.** Agents declare an immutable coordination `class` at `register_agent` (`orchestrator | builder | advisory | auditor | transient`), a third axis orthogonal to `role` and `capabilities`. `discover_agents view='topology'` renders the live team grouped by class (default `view='list'` is unchanged), plus an opt-in SessionStart onboarding map (`RELAY_ONBOARD_TOPOLOGY=1`, default off) and a taxonomy drift guard in the pre-publish gate. Still 35 tools — a `view` parameter, not a new tool.\n- **v2.22**: **Curl/script-caller DX hardening (ADR-0005).** One-shot `POST /mcp` returns plain JSON, `agent_token` is the first field of the register response, `send_message` accepts a `message` alias, and `abandon_registration` lets a script self-clean a botched (never-authenticated) registration via a one-time recovery handle — safe by construction (only ever removes a row that has never authenticated). 36 tools.\n- **v2.23**: **Config-clobber closed + orchestration-anchor safety + a HIGH dependency advisory.** `npm test` no longer rewrites the real `~/.claude.json` (an account-home chokepoint guard); non-destructive release-binding; the `fast-uri` HIGH advisory pinned out. 36 tools.\n- **v2.24**: **Security hardening — operator auth (ADR-0006), dashboard content isolation, orchestration integrity.** Operator power now requires a verified dashboard secret (`relay init`) rather than network position; the dashboard no longer serves message content to unauthenticated callers; the diagnostic traffic recorder redacts tokens. 36 tools.\n- **v2.25**: **ADR-0011 — message disposition + read-receipts** (schema v24, the `get_outstanding` tool). Plus a security-advisory sweep (`fast-uri` + `ip-address` HIGH advisories) and dependency majors (uuid 14, TypeScript 6.0.3 — not the 7.x Corsa rewrite). 37 tools.\n- **v3.0 (current)**: **Wake-coverage detector + undelivered-mail durability + a BREAKING `since` contract change.** A default-on daemon sweep reports when an agent has mail stuck past the effective threshold and is no longer being woken — three verdicts (covered / uncovered / unobservable), REPORT-FIRST: an *uncovered* line is a **possible** wake-path regression, **not proof of fault**, and *unobservable* is never reported as uncovered. New `agents.last_drain_at` column and `RELAY_WAKE_*` knobs. Undelivered mail (not drained by any recipient) is no longer deleted at 7 days: it is held to a bounded 30-day grace (`RELAY_UNDELIVERED_GRACE_DAYS`, default 30; `0` disables the extension) with a stderr deadletter line when finally dropped. **BREAKING:** a pending drain now returns never-observed mail **regardless of `since`** — the 2.25 strict-cursor promise (`since` = \"only return messages after this time\") is withdrawn; audit any pending-drain `since`-cursor logic (see the CHANGELOG breaking entry; history reads are unaffected). Still 37 tools.\n- **Beyond**: cross-machine federation (hub/edge) so multiple self-hosted relays mesh without a shared namespace, plus an App Server push path for low-latency remote wake.\n\n## Dashboard\n\nWhen running in `http` or `both` mode, open `http://127.0.0.1:3777/` in a browser. You'll see:\n- Live agent presence (online / offline / unknown), derived from a liveness verdict — not `last_seen` age (v2.19)\n- Active tasks with priority and assignment\n- Recent messages\n- Registered webhooks\n- Recently completed tasks\n\nAuto-refreshes every 3 seconds. Useful for \"what's happening across all my terminals right now?\" at a glance.\n\n## Role Templates\n\nSee `roles/` for drop-in role specs. Examples:\n- **planner.md** — orchestrator that delegates and synthesizes\n- **builder.md** — worker that accepts and completes tasks\n- **reviewer.md** — skeptical reviewer with structured output\n- **researcher.md** — investigates questions, returns findings\n\nThree ways to apply a role: paste into project `CLAUDE.md`, pass as `initial_message` when spawning, or wire via shell alias.\n\n## Requirements\n\n- Node.js 18+\n- Claude Code (or any MCP-compatible client)\n\n## License\n\nMIT\n","readmeFilename":"README.md"}