{"_id":"@aicoo/local-agent","_rev":"18-c9f386482083e3b7b518b84ea089dbb7","name":"@aicoo/local-agent","dist-tags":{"latest":"0.5.2"},"versions":{"0.1.0":{"name":"@aicoo/local-agent","version":"0.1.0","license":"Apache-2.0","_id":"@aicoo/local-agent@0.1.0","maintainers":[{"name":"abhinav_jain","email":"abhinavjain2107@gmail.com"},{"name":"waterdog","email":"cy1610657757@outlook.com"}],"homepage":"https://github.com/Aicoo-Team/aicoo-local-agent#readme","bugs":{"url":"https://github.com/Aicoo-Team/aicoo-local-agent/issues"},"bin":{"ccd":"bin/ccd.js","aicoo-local-agent":"bin/ccd.js"},"dist":{"shasum":"3206da0e86a7302365f73be6cb5326f1eb9d46ff","tarball":"https://registry.npmjs.org/@aicoo/local-agent/-/local-agent-0.1.0.tgz","fileCount":103,"integrity":"sha512-YttUnN8fB4N5vjnbd9tVFQe3yNC7y7C//XCeOQ0A5uVipdVtsLSAukEKLPBNGf65utH4Us/6qc3hPB6esok6ZA==","signatures":[{"sig":"MEUCIQChMleBblYIEpn9+xpYKCeRg3Vm0S19SmSTF7FBE3zYuwIgbC8ic24ch0AdptUhdtLaGgwHjpkTp+HPNK9T0q2HrBM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":556938},"type":"module","engines":{"node":">=22.5"},"gitHead":"851f7abe0590829a0bf375ed27b8767349dda415","scripts":{"ccd":"tsx src/cli/index.ts","test":"vitest run","build":"tsc -p tsconfig.build.json","serve":"tsx src/control-plane/server.ts","bridge":"tsx src/bridge/main.ts","prepack":"npm run typecheck && npm test && npm run build","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"abhinav_jain","email":"abhinavjain2107@gmail.com"},"repository":{"url":"git+https://github.com/Aicoo-Team/aicoo-local-agent.git","type":"git"},"_npmVersion":"11.10.1","description":"Open agent-to-agent messaging protocol, local runtime bridge, and reference control plane for reaching a live local coding agent (Claude Code / Codex) safely.","directories":{},"_nodeVersion":"25.7.0","dependencies":{"zod":"^4.3.6","hono":"^4.12.30","commander":"^14.0.3","@hono/node-server":"^1.19.7","@anthropic-ai/claude-agent-sdk":"^0.3.211"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^3.2.7","typescript":"^5.9.3","@types/node":"^24.10.1"},"_npmOperationalInternal":{"tmp":"tmp/local-agent_0.1.0_1785664530244_0.3470242493454647","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@aicoo/local-agent","version":"0.1.1","license":"Apache-2.0","_id":"@aicoo/local-agent@0.1.1","maintainers":[{"name":"abhinav_jain","email":"abhinavjain2107@gmail.com"},{"name":"waterdog","email":"cy1610657757@outlook.com"}],"homepage":"https://github.com/Aicoo-Team/aicoo-local-agent#readme","bugs":{"url":"https://github.com/Aicoo-Team/aicoo-local-agent/issues"},"bin":{"ccd":"bin/ccd.js","aicoo-local-agent":"bin/ccd.js"},"dist":{"shasum":"77561a600cfd6f324fe7452c3e8a589b82748e86","tarball":"https://registry.npmjs.org/@aicoo/local-agent/-/local-agent-0.1.1.tgz","fileCount":113,"integrity":"sha512-rmV2rMKxBHYg+GMqE3OMJixgOqHO/v4wBYOD6rTRjDlKtyhFVOye4TMbwI11pSvYhZ51yyhOwWTV/k7Zp0pJKA==","signatures":[{"sig":"MEUCIGHZP9ttHFwW7H1e9CA3WOiLIh+covOKmmV+qDt0RofmAiEA7pICFBsbWME3sZqSzFFncPnTKOm5CFL06RviuU4wglQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":628929},"type":"module","engines":{"node":">=22.5"},"gitHead":"03b3886d92276fc924505e2c92d1f34abb2a17d1","scripts":{"ccd":"tsx src/cli/index.ts","test":"vitest run","build":"tsc -p tsconfig.build.json","serve":"tsx src/control-plane/server.ts","bridge":"tsx src/bridge/main.ts","prepack":"npm run typecheck && npm test && npm run build","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"waterdog","email":"cy1610657757@outlook.com"},"repository":{"url":"git+https://github.com/Aicoo-Team/aicoo-local-agent.git","type":"git"},"_npmVersion":"11.11.0","description":"Open agent-to-agent messaging protocol, local runtime bridge, and reference control plane for reaching a live local coding agent (Claude Code / Codex) safely.","directories":{},"_nodeVersion":"25.8.1","dependencies":{"zod":"^4.3.6","hono":"^4.12.30","commander":"^14.0.3","@hono/node-server":"^1.19.7","@anthropic-ai/claude-agent-sdk":"^0.3.211"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^3.2.7","typescript":"^5.9.3","@types/node":"^24.10.1"},"_npmOperationalInternal":{"tmp":"tmp/local-agent_0.1.1_1785685839037_0.8654469893573635","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@aicoo/local-agent","version":"0.1.2","license":"Apache-2.0","_id":"@aicoo/local-agent@0.1.2","maintainers":[{"name":"abhinav_jain","email":"abhinavjain2107@gmail.com"},{"name":"waterdog","email":"cy1610657757@outlook.com"}],"homepage":"https://github.com/Aicoo-Team/aicoo-local-agent#readme","bugs":{"url":"https://github.com/Aicoo-Team/aicoo-local-agent/issues"},"bin":{"ccd":"bin/ccd.js","aicoo-local-agent":"bin/ccd.js"},"dist":{"shasum":"36f994811911d2f8b45e24a08f479381763a787e","tarball":"https://registry.npmjs.org/@aicoo/local-agent/-/local-agent-0.1.2.tgz","fileCount":113,"integrity":"sha512-Y2B+X9sLibHMXNRrh5+fGERnIU3WpkOwDEyB1zw03pRLyah/J0wSlYJ88V1M7m6H4Il76nrnEOIQV1+NFq5VEQ==","signatures":[{"sig":"MEUCICMsEn2mnNUtgCbo5qinE+OzyWCr4cvtonp93ZoNQTfmAiEAqfdcGmoZRAJUBBtfjZBTAZrVuUDtNj2kigJ8N16EBHQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":630345},"type":"module","engines":{"node":">=22.5"},"gitHead":"1c9528b37bfc4024a894a4920da693be63cf3f2f","scripts":{"ccd":"tsx src/cli/index.ts","test":"vitest run","build":"tsc -p tsconfig.build.json","serve":"tsx src/control-plane/server.ts","bridge":"tsx src/bridge/main.ts","prepack":"npm run typecheck && npm test && npm run build","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"waterdog","email":"cy1610657757@outlook.com"},"repository":{"url":"git+https://github.com/Aicoo-Team/aicoo-local-agent.git","type":"git"},"_npmVersion":"11.11.0","description":"Open agent-to-agent messaging protocol, local runtime bridge, and reference control plane for reaching a live local coding agent (Claude Code / Codex) safely.","directories":{},"_nodeVersion":"25.8.1","dependencies":{"zod":"^4.3.6","hono":"^4.12.30","commander":"^14.0.3","@hono/node-server":"^1.19.7","@anthropic-ai/claude-agent-sdk":"^0.3.211"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^3.2.7","typescript":"^5.9.3","@types/node":"^24.10.1"},"_npmOperationalInternal":{"tmp":"tmp/local-agent_0.1.2_1785696524683_0.8377833806127735","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@aicoo/local-agent","version":"0.1.3","license":"Apache-2.0","_id":"@aicoo/local-agent@0.1.3","maintainers":[{"name":"abhinav_jain","email":"abhinavjain2107@gmail.com"},{"name":"waterdog","email":"cy1610657757@outlook.com"}],"homepage":"https://github.com/Aicoo-Team/aicoo-local-agent#readme","bugs":{"url":"https://github.com/Aicoo-Team/aicoo-local-agent/issues"},"bin":{"ccd":"bin/ccd.js","aicoo-local-agent":"bin/ccd.js"},"dist":{"shasum":"4bb9370dd8946074e958697780c8bb398d9b2aac","tarball":"https://registry.npmjs.org/@aicoo/local-agent/-/local-agent-0.1.3.tgz","fileCount":113,"integrity":"sha512-6ux3IokmQr9GkHGDwCs/afzzO93GR80EmPvpk1xwoNqjbfcb/QsHeELhX0nuGUuPTRiUJwe1QXcZc+Fj2p9kIA==","signatures":[{"sig":"MEQCICFUfIjyU/r+HkQvUMyjH75xaw9qrzV2xsUBzqyxRuBjAiBUFSFidnyEMdIQb/ZfU+Yu3GHWWX4tuhoNlg+PnEc51g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":633085},"type":"module","engines":{"node":">=22.5"},"gitHead":"71fd36236d0516c4f021bf3d88a90980dbdb551b","scripts":{"ccd":"tsx src/cli/index.ts","test":"vitest run","build":"tsc -p tsconfig.build.json","serve":"tsx src/control-plane/server.ts","bridge":"tsx src/bridge/main.ts","prepack":"npm run typecheck && npm test && npm run build","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"waterdog","email":"cy1610657757@outlook.com"},"repository":{"url":"git+https://github.com/Aicoo-Team/aicoo-local-agent.git","type":"git"},"_npmVersion":"11.11.0","description":"Open agent-to-agent messaging protocol, local runtime bridge, and reference control plane for reaching a live local coding agent (Claude Code / Codex) safely.","directories":{},"_nodeVersion":"25.8.1","dependencies":{"zod":"^4.3.6","hono":"^4.12.30","commander":"^14.0.3","@hono/node-server":"^1.19.7","@anthropic-ai/claude-agent-sdk":"^0.3.211"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^3.2.7","typescript":"^5.9.3","@types/node":"^24.10.1"},"_npmOperationalInternal":{"tmp":"tmp/local-agent_0.1.3_1785696983010_0.8213947254940865","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@aicoo/local-agent","version":"0.3.0","license":"Apache-2.0","_id":"@aicoo/local-agent@0.3.0","maintainers":[{"name":"abhinav_jain","email":"abhinavjain2107@gmail.com"},{"name":"waterdog","email":"cy1610657757@outlook.com"}],"homepage":"https://github.com/Aicoo-Team/aicoo-local-agent#readme","bugs":{"url":"https://github.com/Aicoo-Team/aicoo-local-agent/issues"},"bin":{"ccd":"bin/ccd.js","aicoo-local-agent":"bin/ccd.js"},"dist":{"shasum":"27e365b5227629f528f52c5a1a05d73a9b1cc63e","tarball":"https://registry.npmjs.org/@aicoo/local-agent/-/local-agent-0.3.0.tgz","fileCount":125,"integrity":"sha512-7H28WgcjyNb8dqYsZcpJzZ6RfjZqJB4ejVOYNBfQxQ1ybrFJHNwcHVOEynQUrN/NFrUcS3Hmrpi27BCyszk8OQ==","signatures":[{"sig":"MEUCIQDIgCRTyVWFZ8iBfmJ/GpBvxjCGbHJW479JIUnbJlYONwIgHlSRYHao69pXC+u1mvV2qDrGbPCaJDQIAwan8SoWkfY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":697108},"type":"module","engines":{"node":">=22.5"},"gitHead":"a2e574cf999693c38e2d27dcf72cf78b55ac2d15","scripts":{"ccd":"tsx src/cli/index.ts","test":"vitest run","build":"tsc -p tsconfig.build.json","serve":"tsx src/control-plane/server.ts","bridge":"tsx src/bridge/main.ts","prepack":"npm run typecheck && npm test && npm run build","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"waterdog","email":"cy1610657757@outlook.com"},"repository":{"url":"git+https://github.com/Aicoo-Team/aicoo-local-agent.git","type":"git"},"_npmVersion":"11.11.0","description":"Open agent-to-agent messaging protocol, local runtime bridge, and reference control plane for reaching a live local coding agent (Claude Code / Codex) safely.","directories":{},"_nodeVersion":"25.8.1","dependencies":{"zod":"^4.3.6","hono":"^4.12.30","commander":"^14.0.3","@hono/node-server":"^1.19.7","@anthropic-ai/claude-agent-sdk":"^0.3.211"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^3.2.7","typescript":"^5.9.3","@types/node":"^24.10.1"},"_npmOperationalInternal":{"tmp":"tmp/local-agent_0.3.0_1785705678681_0.3357279640601465","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@aicoo/local-agent","version":"0.3.1","license":"Apache-2.0","_id":"@aicoo/local-agent@0.3.1","maintainers":[{"name":"abhinav_jain","email":"abhinavjain2107@gmail.com"},{"name":"waterdog","email":"cy1610657757@outlook.com"}],"homepage":"https://github.com/Aicoo-Team/aicoo-local-agent#readme","bugs":{"url":"https://github.com/Aicoo-Team/aicoo-local-agent/issues"},"bin":{"ccd":"bin/ccd.js","aicoo-local-agent":"bin/ccd.js"},"dist":{"shasum":"23d63225a0e4a1343f97c2f181c598dcb1b8e99a","tarball":"https://registry.npmjs.org/@aicoo/local-agent/-/local-agent-0.3.1.tgz","fileCount":128,"integrity":"sha512-fl9wcaISbmGb8/raaoKgpCL8Og6CMPxByFLgmUzGSXq2vmh6TOfPkfmhw5+sE69DgSylpNlc0JtGvjSkC5cbTg==","signatures":[{"sig":"MEUCIEApQUQCS0fthc1/GVvOHu8r1Ywpz6AzpCFKFsDGc5hnAiEAuwgJZW+gqTkEcNcR1lT8DFAaIoWeTznV5FEUR/aaYG0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":729677},"type":"module","engines":{"node":">=22.5"},"gitHead":"e57cb03bd8bbc3837d21ae8ce3140667afafefd0","scripts":{"ccd":"tsx src/cli/index.ts","test":"vitest run","build":"tsc -p tsconfig.build.json","serve":"tsx src/control-plane/server.ts","bridge":"tsx src/bridge/main.ts","prepack":"npm run typecheck && npm test && npm run build","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"abhinav_jain","email":"abhinavjain2107@gmail.com"},"repository":{"url":"git+https://github.com/Aicoo-Team/aicoo-local-agent.git","type":"git"},"_npmVersion":"11.10.1","description":"Open agent-to-agent messaging protocol, local runtime bridge, and reference control plane for reaching a live local coding agent (Claude Code / Codex) safely.","directories":{},"_nodeVersion":"25.7.0","dependencies":{"zod":"^4.3.6","hono":"^4.12.30","commander":"^14.0.3","@hono/node-server":"^1.19.7","@anthropic-ai/claude-agent-sdk":"^0.3.211"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^3.2.7","typescript":"^5.9.3","@types/node":"^24.10.1"},"_npmOperationalInternal":{"tmp":"tmp/local-agent_0.3.1_1785934367798_0.09411461692739498","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@aicoo/local-agent","version":"0.4.0","license":"Apache-2.0","_id":"@aicoo/local-agent@0.4.0","maintainers":[{"name":"abhinav_jain","email":"abhinavjain2107@gmail.com"},{"name":"waterdog","email":"cy1610657757@outlook.com"}],"homepage":"https://github.com/Aicoo-Team/aicoo-local-agent#readme","bugs":{"url":"https://github.com/Aicoo-Team/aicoo-local-agent/issues"},"bin":{"ccd":"bin/ccd.js","aicoo-local-agent":"bin/ccd.js"},"dist":{"shasum":"349fac91a95be746becc75221b8ee929424e3fd1","tarball":"https://registry.npmjs.org/@aicoo/local-agent/-/local-agent-0.4.0.tgz","fileCount":137,"integrity":"sha512-Azqfayvob5epSc4aaX5VGBlWwZh64kJcN7ce8+gWVxU4bE1e6SgUCoPdt+G+oP+jxtOwCLMLkpctHWeDANKiIg==","signatures":[{"sig":"MEUCIHCeYoQRQs3zN/xNqGgPiUodz00mISij35ppyKps3APEAiEAxHy+VBFZf4pnL8JANMk34RBg+auWPU9ILhImRYJ5ZiA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":872921},"type":"module","engines":{"node":">=22.5"},"gitHead":"8af72555002c858c49ae873b11f0db7020c365cd","scripts":{"ccd":"tsx src/cli/index.ts","test":"vitest run","build":"tsc -p tsconfig.build.json","serve":"tsx src/control-plane/server.ts","bridge":"tsx src/bridge/main.ts","prepack":"npm run typecheck && npm test && npm run build","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"abhinav_jain","email":"abhinavjain2107@gmail.com"},"repository":{"url":"git+https://github.com/Aicoo-Team/aicoo-local-agent.git","type":"git"},"_npmVersion":"11.10.1","description":"Open agent-to-agent messaging protocol, local runtime bridge, and reference control plane for reaching a live local coding agent (Claude Code / Codex) safely.","directories":{},"_nodeVersion":"25.7.0","dependencies":{"zod":"^4.3.6","hono":"^4.12.30","commander":"^14.0.3","@hono/node-server":"^1.19.7","@anthropic-ai/claude-agent-sdk":"^0.3.211"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^3.2.7","typescript":"^5.9.3","@types/node":"^24.10.1"},"_npmOperationalInternal":{"tmp":"tmp/local-agent_0.4.0_1786193495862_0.25647114975818575","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@aicoo/local-agent","version":"0.4.1","license":"Apache-2.0","_id":"@aicoo/local-agent@0.4.1","maintainers":[{"name":"abhinav_jain","email":"abhinavjain2107@gmail.com"},{"name":"waterdog","email":"cy1610657757@outlook.com"}],"homepage":"https://github.com/Aicoo-Team/aicoo-local-agent#readme","bugs":{"url":"https://github.com/Aicoo-Team/aicoo-local-agent/issues"},"bin":{"ccd":"bin/ccd.js","aicoo-local-agent":"bin/ccd.js"},"dist":{"shasum":"b8a0c589b6a8f4e4defb7063d4e75e9cc119432c","tarball":"https://registry.npmjs.org/@aicoo/local-agent/-/local-agent-0.4.1.tgz","fileCount":140,"integrity":"sha512-rxXKo4pek/ZJtZB1SVsxmW++yBT4uvGpVrLWqasLAFnTb4aiLRJbW5MXVPNpYy2ABnRvj23qq9upcbZOrl0G9g==","signatures":[{"sig":"MEUCIQCtSaBzU3CHgb6XHOSkWJag5Pu4NeZP9V/tnDm+ZOpYvQIgXg+FZrhi1b9xl9NIy7P8Col9q4NEyja7oP199Qm7jrE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":885506},"type":"module","engines":{"node":">=22.5"},"gitHead":"bcfd6f90de2e5175ad72a1f158c9557d27074a27","scripts":{"ccd":"tsx src/cli/index.ts","test":"vitest run","build":"tsc -p tsconfig.build.json","serve":"tsx src/control-plane/server.ts","bridge":"tsx src/bridge/main.ts","prepack":"npm run typecheck && npm test && npm run build","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"abhinav_jain","email":"abhinavjain2107@gmail.com"},"repository":{"url":"git+https://github.com/Aicoo-Team/aicoo-local-agent.git","type":"git"},"_npmVersion":"11.10.1","description":"Open agent-to-agent messaging protocol, local runtime bridge, and reference control plane for reaching a live local coding agent (Claude Code / Codex) safely.","directories":{},"_nodeVersion":"25.7.0","dependencies":{"zod":"^4.3.6","hono":"^4.12.30","commander":"^14.0.3","@hono/node-server":"^1.19.7","@anthropic-ai/claude-agent-sdk":"^0.3.211"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^3.2.7","typescript":"^5.9.3","@types/node":"^24.10.1"},"_npmOperationalInternal":{"tmp":"tmp/local-agent_0.4.1_1786457422429_0.06432500905731553","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@aicoo/local-agent","version":"0.4.2","license":"Apache-2.0","_id":"@aicoo/local-agent@0.4.2","maintainers":[{"name":"abhinav_jain","email":"abhinavjain2107@gmail.com"},{"name":"waterdog","email":"cy1610657757@outlook.com"},{"name":"eaonw","email":"xisenwanginbeijing@gmail.com"}],"homepage":"https://github.com/Aicoo-Team/aicoo-local-agent#readme","bugs":{"url":"https://github.com/Aicoo-Team/aicoo-local-agent/issues"},"bin":{"ccd":"bin/ccd.js","aicoo-local-agent":"bin/ccd.js"},"dist":{"shasum":"8d1ccb61551db8d3885e33041bfc62922241b3da","tarball":"https://registry.npmjs.org/@aicoo/local-agent/-/local-agent-0.4.2.tgz","fileCount":143,"integrity":"sha512-5h7boiLA20GCbhUIq0+kcL9y/cVn/GjE46cYsagZ7Qbel2PJL6D8VdVtLxhv9ePUPsebnqoysCBit2fCuvj0sQ==","signatures":[{"sig":"MEUCIQCg/GDTIpbhLXAC5A9PeJ2KZdH1MSFA8ZFuH//kqETQrgIgbb5w7GB5tb1SOtv/rXCI+ovCANzcUi74VtTRvlgFwVA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":909264},"type":"module","engines":{"node":">=22.5"},"gitHead":"6e3efdb7e517ee0769bcbffbac8089b87d9e7465","scripts":{"ccd":"tsx src/cli/index.ts","test":"vitest run","build":"tsc -p tsconfig.build.json","serve":"tsx src/control-plane/server.ts","bridge":"tsx src/bridge/main.ts","prepack":"npm run typecheck && npm test && npm run build","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"abhinav_jain","email":"abhinavjain2107@gmail.com"},"repository":{"url":"git+https://github.com/Aicoo-Team/aicoo-local-agent.git","type":"git"},"_npmVersion":"11.10.1","description":"Open agent-to-agent messaging protocol, local runtime bridge, and reference control plane for reaching a live local coding agent (Claude Code / Codex) safely.","directories":{},"_nodeVersion":"25.7.0","dependencies":{"zod":"^4.3.6","hono":"^4.12.30","commander":"^14.0.3","@hono/node-server":"^1.19.7","@anthropic-ai/claude-agent-sdk":"^0.3.211"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^3.2.7","typescript":"^5.9.3","@types/node":"^24.10.1"},"_npmOperationalInternal":{"tmp":"tmp/local-agent_0.4.2_1787055278736_0.4007304401837166","host":"s3://npm-registry-packages-npm-production"}},"0.4.3":{"name":"@aicoo/local-agent","version":"0.4.3","license":"Apache-2.0","_id":"@aicoo/local-agent@0.4.3","maintainers":[{"name":"abhinav_jain","email":"abhinavjain2107@gmail.com"},{"name":"waterdog","email":"cy1610657757@outlook.com"},{"name":"eaonw","email":"xisenwanginbeijing@gmail.com"}],"homepage":"https://github.com/Aicoo-Team/aicoo-local-agent#readme","bugs":{"url":"https://github.com/Aicoo-Team/aicoo-local-agent/issues"},"bin":{"ccd":"bin/ccd.js","aicoo-local-agent":"bin/ccd.js"},"dist":{"shasum":"da7d9b23ddd2b555fc28f1ebd66bb524bdf66b36","tarball":"https://registry.npmjs.org/@aicoo/local-agent/-/local-agent-0.4.3.tgz","fileCount":156,"integrity":"sha512-l6bu73VDEX1PJ7P6YL/pHws4pAwyPSbf3xdfqHn2iFDm8dwwlM7rNisrrQfStlcGRidWnVyT6gRcb54ndyOd/Q==","signatures":[{"sig":"MEUCIQCev+wz1H113Ud6+Bg6wOq+FenGGONwSPn2UZArzM5i2QIgU0OMpQrrhl2+r+4nsPNqkbuu3ipchSwkDqhzqjKZzZs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":949335},"type":"module","engines":{"node":">=22.5"},"gitHead":"93d996b9ca196eca00e00261eea24c541c3666c0","scripts":{"ccd":"tsx src/cli/index.ts","test":"vitest run","build":"tsc -p tsconfig.build.json","serve":"tsx src/control-plane/server.ts","bridge":"tsx src/bridge/main.ts","prepack":"npm run typecheck && npm test && npm run build","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"abhinav_jain","email":"abhinavjain2107@gmail.com"},"repository":{"url":"git+https://github.com/Aicoo-Team/aicoo-local-agent.git","type":"git"},"_npmVersion":"11.10.1","description":"Open agent-to-agent messaging protocol, local runtime bridge, and reference control plane for reaching a live local coding agent (Claude Code / Codex) safely.","directories":{},"_nodeVersion":"25.7.0","dependencies":{"zod":"^4.3.6","hono":"^4.12.30","commander":"^14.0.3","@hono/node-server":"^1.19.7","@anthropic-ai/claude-agent-sdk":"^0.3.211"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^3.2.7","typescript":"^5.9.3","@types/node":"^24.10.1"},"_npmOperationalInternal":{"tmp":"tmp/local-agent_0.4.3_1787200691142_0.7049801475744117","host":"s3://npm-registry-packages-npm-production"}},"0.4.4":{"name":"@aicoo/local-agent","version":"0.4.4","license":"Apache-2.0","_id":"@aicoo/local-agent@0.4.4","maintainers":[{"name":"abhinav_jain","email":"abhinavjain2107@gmail.com"},{"name":"waterdog","email":"cy1610657757@outlook.com"},{"name":"eaonw","email":"xisenwanginbeijing@gmail.com"}],"homepage":"https://github.com/Aicoo-Team/aicoo-local-agent#readme","bugs":{"url":"https://github.com/Aicoo-Team/aicoo-local-agent/issues"},"bin":{"ccd":"bin/ccd.js","aicoo-local-agent":"bin/ccd.js"},"dist":{"shasum":"0e15a4bef5c3eea78c115dede6c863d38388ce9c","tarball":"https://registry.npmjs.org/@aicoo/local-agent/-/local-agent-0.4.4.tgz","fileCount":156,"integrity":"sha512-syHmMgNotNlqmwGUWhgn89hz9FvdL7XVwauYj5w+Z9ryXD4nSC3p5tLEvqfnNOsQzVPsNBjw09hdXLWcKdPcFg==","signatures":[{"sig":"MEUCIQDeT0J9yWtp/CxnFLqy9Vfhowm+heqLfD3CBydgjmuMfAIgBtp5DKvuiJtVkYNKwHP5pkSyY/HNLuubV6NhmNC6arA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":949495},"type":"module","engines":{"node":">=22.5"},"gitHead":"c1a1ba95c7d58c73f70d30bf00c8c76638fc837a","scripts":{"ccd":"tsx src/cli/index.ts","test":"vitest run","build":"tsc -p tsconfig.build.json","serve":"tsx src/control-plane/server.ts","bridge":"tsx src/bridge/main.ts","prepack":"npm run typecheck && npm test && npm run build","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"abhinav_jain","email":"abhinavjain2107@gmail.com"},"repository":{"url":"git+https://github.com/Aicoo-Team/aicoo-local-agent.git","type":"git"},"_npmVersion":"11.10.1","description":"Open agent-to-agent messaging protocol, local runtime bridge, and reference control plane for reaching a live local coding agent (Claude Code / Codex) safely.","directories":{},"_nodeVersion":"25.7.0","dependencies":{"zod":"^4.3.6","hono":"^4.12.30","commander":"^14.0.3","@hono/node-server":"^1.19.7","@anthropic-ai/claude-agent-sdk":"^0.3.211"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^3.2.7","typescript":"^5.9.3","@types/node":"^24.10.1"},"_npmOperationalInternal":{"tmp":"tmp/local-agent_0.4.4_1787224494967_0.7401832401447836","host":"s3://npm-registry-packages-npm-production"}},"0.4.5":{"name":"@aicoo/local-agent","version":"0.4.5","license":"Apache-2.0","_id":"@aicoo/local-agent@0.4.5","maintainers":[{"name":"abhinav_jain","email":"abhinavjain2107@gmail.com"},{"name":"waterdog","email":"cy1610657757@outlook.com"},{"name":"eaonw","email":"xisenwanginbeijing@gmail.com"}],"homepage":"https://github.com/Aicoo-Team/aicoo-local-agent#readme","bugs":{"url":"https://github.com/Aicoo-Team/aicoo-local-agent/issues"},"bin":{"ccd":"bin/ccd.js","aicoo-local-agent":"bin/ccd.js"},"dist":{"shasum":"cab0ba910d1adb07944b925268ab647c8a0563b2","tarball":"https://registry.npmjs.org/@aicoo/local-agent/-/local-agent-0.4.5.tgz","fileCount":162,"integrity":"sha512-7BXsLYaerv1rb4PkOXdH8oKLz8mKvttkzbGJadfTAfhsmglnZtFWRYEJk28yDXU+uI2CzdK0dTggto9QH81GRA==","signatures":[{"sig":"MEQCIGHGg3kPULhMmR5zGuwbWwxs4W4xA8m1Ey1lyj/PiqpzAiBsLeGOr1TPsSScD+4vnXS0me6R/BSuEArO/AcUw8mBiw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":955437},"type":"module","engines":{"node":">=22.5"},"gitHead":"6242a4be49d1080cc930ed236552e019c773b1ac","scripts":{"ccd":"tsx src/cli/index.ts","test":"vitest run","build":"tsc -p tsconfig.build.json","serve":"tsx src/control-plane/server.ts","bridge":"tsx src/bridge/main.ts","prepack":"npm run typecheck && npm test && npm run build","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"abhinav_jain","email":"abhinavjain2107@gmail.com"},"repository":{"url":"git+https://github.com/Aicoo-Team/aicoo-local-agent.git","type":"git"},"_npmVersion":"11.10.1","description":"Open agent-to-agent messaging protocol, local runtime bridge, and reference control plane for reaching a live local coding agent (Claude Code / Codex) safely.","directories":{},"_nodeVersion":"25.7.0","dependencies":{"zod":"^4.3.6","hono":"^4.12.30","commander":"^14.0.3","@hono/node-server":"^1.19.7","@anthropic-ai/claude-agent-sdk":"^0.3.211"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^3.2.7","typescript":"^5.9.3","@types/node":"^24.10.1"},"_npmOperationalInternal":{"tmp":"tmp/local-agent_0.4.5_1787579662034_0.8284220349600195","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@aicoo/local-agent","version":"0.5.0","license":"Apache-2.0","_id":"@aicoo/local-agent@0.5.0","maintainers":[{"name":"abhinav_jain","email":"abhinavjain2107@gmail.com"},{"name":"waterdog","email":"cy1610657757@outlook.com"},{"name":"eaonw","email":"xisenwanginbeijing@gmail.com"}],"homepage":"https://github.com/Aicoo-Team/aicoo-local-agent#readme","bugs":{"url":"https://github.com/Aicoo-Team/aicoo-local-agent/issues"},"bin":{"ccd":"bin/ccd.js","aicoo-local-agent":"bin/ccd.js"},"dist":{"shasum":"de920f53950b868e72b0ef758f677756f9bf7957","tarball":"https://registry.npmjs.org/@aicoo/local-agent/-/local-agent-0.5.0.tgz","fileCount":195,"integrity":"sha512-1pMOotshfGZW6moCqSBEVvMGeECBXf6YgneYuilN74CXxivaXoI0C+ms8JgLvO8STzVeoVH8vTaa85EOOUvlrA==","signatures":[{"sig":"MEYCIQDllkcTYK8hxW0TSdS9VzG/VPicaxOeiGBDsmGa6nJkVgIhAM5GxhmP6YhcAE5cS3O5qo9Clofp+7ZQs2KcP6z1sLt7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1212248},"type":"module","engines":{"node":">=22.5"},"gitHead":"13663edd4f2cb48eec1d18cf9ab67d378e4480dd","scripts":{"ccd":"tsx src/cli/index.ts","test":"vitest run","build":"tsc -p tsconfig.build.json","serve":"tsx src/control-plane/server.ts","bridge":"tsx src/bridge/main.ts","prepack":"npm run typecheck && npm test && npm run build","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"abhinav_jain","email":"abhinavjain2107@gmail.com"},"repository":{"url":"git+https://github.com/Aicoo-Team/aicoo-local-agent.git","type":"git"},"_npmVersion":"11.10.1","description":"Open agent-to-agent messaging protocol, local runtime bridge, and reference control plane for reaching a live local coding agent (Claude Code / Codex) safely.","directories":{},"_nodeVersion":"25.7.0","dependencies":{"zod":"^4.3.6","hono":"^4.12.30","commander":"^14.0.3","@hono/node-server":"^1.19.7","@anthropic-ai/claude-agent-sdk":"^0.3.211"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^3.2.7","typescript":"^5.9.3","@types/node":"^24.10.1"},"_npmOperationalInternal":{"tmp":"tmp/local-agent_0.5.0_1787812842300_0.19272931677165617","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@aicoo/local-agent","version":"0.5.1","license":"Apache-2.0","_id":"@aicoo/local-agent@0.5.1","maintainers":[{"name":"abhinav_jain","email":"abhinavjain2107@gmail.com"},{"name":"waterdog","email":"cy1610657757@outlook.com"},{"name":"eaonw","email":"xisenwanginbeijing@gmail.com"}],"homepage":"https://github.com/Aicoo-Team/aicoo-local-agent#readme","bugs":{"url":"https://github.com/Aicoo-Team/aicoo-local-agent/issues"},"bin":{"ccd":"bin/ccd.js","aicoo-local-agent":"bin/ccd.js"},"dist":{"shasum":"19440c718795960253703597ee46d8537d28e798","tarball":"https://registry.npmjs.org/@aicoo/local-agent/-/local-agent-0.5.1.tgz","fileCount":219,"integrity":"sha512-0h2O4S8FcTi83+vLib77vNCLaE7m1Pw3wVchEfBISlZouQLn2v7zFjM3XklDp2MxIEp3WMg9s2ZvKp516RQnhA==","signatures":[{"sig":"MEUCIBLiZYjLHgNFMr5SXPbuZl69cXIltTjU11J67V+qfjUAAiEAgsqZ7/yKiwMoogou7PZiL63w1GUshk1R2uf7aVtOJPg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1307706},"type":"module","engines":{"node":">=22.5"},"gitHead":"468516e4d5c56858bc917c2b05b860b97cd48f96","scripts":{"ccd":"tsx src/cli/index.ts","test":"vitest run","build":"tsc -p tsconfig.build.json","serve":"tsx src/control-plane/server.ts","bridge":"tsx src/bridge/main.ts","prepack":"npm run typecheck && npm test && npm run build","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"abhinav_jain","email":"abhinavjain2107@gmail.com"},"repository":{"url":"git+https://github.com/Aicoo-Team/aicoo-local-agent.git","type":"git"},"_npmVersion":"11.10.1","description":"Open agent-to-agent messaging protocol, local runtime bridge, and reference control plane for reaching a live local coding agent (Claude Code / Codex) safely.","directories":{},"_nodeVersion":"25.7.0","dependencies":{"zod":"^4.3.6","hono":"^4.12.30","commander":"^14.0.3","@hono/node-server":"^1.19.7","@anthropic-ai/claude-agent-sdk":"^0.3.211"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^3.2.7","typescript":"^5.9.3","@types/node":"^24.10.1"},"_npmOperationalInternal":{"tmp":"tmp/local-agent_0.5.1_1788186155735_0.6954549440727664","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"@aicoo/local-agent","version":"0.5.2","license":"Apache-2.0","_id":"@aicoo/local-agent@0.5.2","maintainers":[{"name":"abhinav_jain","email":"abhinavjain2107@gmail.com"},{"name":"waterdog","email":"cy1610657757@outlook.com"},{"name":"eaonw","email":"xisenwanginbeijing@gmail.com"}],"homepage":"https://github.com/Aicoo-Team/aicoo-local-agent#readme","bugs":{"url":"https://github.com/Aicoo-Team/aicoo-local-agent/issues"},"bin":{"ccd":"bin/ccd.js","aicoo-local-agent":"bin/ccd.js"},"dist":{"shasum":"bfafec2457fcf5c176f2c43606b8488ed28420dc","tarball":"https://registry.npmjs.org/@aicoo/local-agent/-/local-agent-0.5.2.tgz","fileCount":222,"integrity":"sha512-1cGSqGuy5ovwDJVfgIwE8JeqxbejWfOxKXOFEKeU6Eic0HkQW8scnu8CjApHO/b/ySULIizGMhF19zkGfbn1Eg==","signatures":[{"sig":"MEYCIQCCrU0Tz0XFsJ519kHRLkypybXp+S2ZHmaQUv7DAOt3ugIhAMy0UeGxBfYmMZsfm76/bDOXtcFcMGYEnt7Z8aVkRZ+0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1334527},"type":"module","engines":{"node":">=22.5"},"gitHead":"fa98f1a0bb6b97ba6fcb228e1f0c7c055e326423","scripts":{"ccd":"tsx src/cli/index.ts","test":"vitest run","build":"tsc -p tsconfig.build.json","serve":"tsx src/control-plane/server.ts","bridge":"tsx src/bridge/main.ts","prepack":"npm run typecheck && npm test && npm run build","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"abhinav_jain","email":"abhinavjain2107@gmail.com"},"repository":{"url":"git+https://github.com/Aicoo-Team/aicoo-local-agent.git","type":"git"},"_npmVersion":"11.10.1","description":"Open agent-to-agent messaging protocol, local runtime bridge, and reference control plane for reaching a live local coding agent (Claude Code / Codex) safely.","directories":{},"_nodeVersion":"25.7.0","dependencies":{"zod":"^4.3.6","hono":"^4.12.30","commander":"^14.0.3","@hono/node-server":"^1.19.7","@anthropic-ai/claude-agent-sdk":"^0.3.211"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^3.2.7","typescript":"^5.9.3","@types/node":"^24.10.1"},"_npmOperationalInternal":{"tmp":"tmp/local-agent_0.5.2_1788423602424_0.6335152704651676","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2026-08-02T09:55:29.982Z","modified":"2026-09-05T10:53:54.212Z","0.1.0":"2026-08-02T09:55:30.400Z","0.1.1":"2026-08-02T15:50:39.198Z","0.1.2":"2026-08-02T18:48:44.837Z","0.1.3":"2026-08-02T18:56:23.169Z","0.3.0":"2026-08-02T21:21:18.843Z","0.3.1":"2026-08-05T12:52:47.994Z","0.4.0":"2026-08-08T12:51:36.003Z","0.4.1":"2026-08-11T14:10:22.561Z","0.4.2":"2026-08-18T12:14:38.877Z","0.4.3":"2026-08-20T04:38:11.343Z","0.4.4":"2026-08-20T11:14:55.113Z","0.4.5":"2026-08-24T13:54:22.186Z","0.5.0":"2026-08-27T06:40:42.467Z","0.5.1":"2026-08-31T14:22:35.894Z","0.5.2":"2026-09-03T08:20:02.627Z"},"bugs":{"url":"https://github.com/Aicoo-Team/aicoo-local-agent/issues"},"license":"Apache-2.0","homepage":"https://github.com/Aicoo-Team/aicoo-local-agent#readme","repository":{"url":"git+https://github.com/Aicoo-Team/aicoo-local-agent.git","type":"git"},"description":"Open agent-to-agent messaging protocol, local runtime bridge, and reference control plane for reaching a live local coding agent (Claude Code / Codex) safely.","maintainers":[{"email":"generica626@gmail.com","name":"arctic_fox"},{"email":"abhinavjain2107@gmail.com","name":"abhinav_jain"},{"email":"cy1610657757@outlook.com","name":"waterdog"},{"email":"xisenwanginbeijing@gmail.com","name":"eaonw"}],"readme":"# Aicoo Local Agent\n\nAn open protocol and runtime for reaching a **live local coding agent** — Claude Code or Codex,\nrunning on someone's own machine — from another agent, safely.\n\nMost agent-to-agent messaging assumes a cloud inbox or a stateless function on the other end.\nThis project targets a harder and more useful case: the recipient is a *stateful, tool-capable\ncoding agent* already running in a real workspace. A message needs to reach that live session,\nbe injected as a turn, run under the owner's control, and stream a reply back — without ever\nletting the sender act as if they were the owner.\n\nThis repository is the **open core**: the wire protocol, a local **bridge** that manages runtime\nsessions and delivers messages durably, **runtime adapters** for Claude Code / Codex (plus a\n`fake` adapter for tests), a **reference (mock) control plane**, and a **CLI**. The transport\nbinding to any specific hosted control plane is intentionally *not* included — the `MessageTransport`\ninterface is the seam you implement to plug in your own.\n\n## Safety model\n\nThe central rule: **a message conveys intent and context, not authority.**\n\n- **The sender is not the owner.** An inbound message is always treated as *untrusted external\n  content*. It is never a system, developer, or owner instruction, and it grants no permission.\n  The receiver's system prompt states this explicitly and refuses attempts to override it,\n  reveal the prompt, impersonate the owner, or request credentials.\n- **Receiver isolation.** By default the receiving session is a **tools-disabled, text-only**\n  responder: it may read the message and answer in plain text, but it cannot run commands,\n  touch the filesystem, browse, or exfiltrate data. Tool access is off unless the owner opts in.\n- **Tool access is explicit and gated.** Every relationship starts text-only. The owner may grant\n  read/edit project access. The wider full-agent surface requires OS-level sandboxing, approval,\n  and redaction controls; mature unhealthy local rebuild telemetry downgrades it to restricted.\n- **Grant-scoped, revocable delivery.** A sender can only message a recipient through an active,\n  time-boxed **communication grant** that the recipient (or an offer they published) authorized.\n  Every injection is **re-validated against the control plane at delivery time**, so a revoked or\n  expired grant stops delivery even for already-queued messages.\n- **Fault isolation.** Acknowledgement and injection run off the event stream with durable\n  spooling and retry, so a slow or failing control plane can never wedge the session, duplicate a\n  side effect, or replay an already-accepted turn.\n\n## Architecture\n\n```\n  another agent ──▶ control plane ──SSE──▶ bridge ──▶ runtime adapter ──▶ live coding agent\n                    (grants, routing,       (durable    (Claude Code /       (real workspace\n                     delivery state)         spool)      Codex / fake)        session)\n```\n\n- `src/shared/` — the protocol: `contracts.ts` (types), `transport.ts` (the `MessageTransport`\n  interface), `http-client.ts` (`HttpMessageTransport`, the reference HTTP/SSE client), plus\n  `ids`, `reason-codes`, `time` helpers.\n- `src/control-plane/` — a reference/mock control plane (Hono + SQLite): endpoints, grants,\n  routing, the delivery state machine, audit, and an SSE event stream.\n- `src/bridge/` — the local bridge: session registration, a durable spool, the injector\n  (re-validation + delivery state reporting), and auto default-route from heartbeat.\n- `src/adapters/` — runtime adapters: `claude-code`, `codex`, and `fake`, behind the\n  `RuntimeAdapter` interface. Includes the permissioned `canUseTool` mode and dead-session\n  resume recovery.\n- `src/cli/` — the `ccd` CLI for driving the whole thing from a terminal.\n\n## Quickstart\n\nRequires Node.js ≥ 22.5 (the bridge uses the built-in `node:sqlite`).\n\n```bash\nnpm install\n```\n\n**1. Run the reference control plane** (in-memory/SQLite mock, listens on `127.0.0.1:7790`):\n\n```bash\nnpm run serve\n```\n\n**2. Run a bridge** against it, managing one or more text-only live sessions. Start with the `fake`\nadapter, or use `--adapter claude-code` / `--adapter codex` to bridge a real local coding agent:\n\n```bash\nnpm run bridge -- --server http://127.0.0.1:7790 --token <device-token> --adapter fake --spool me.spool --sessions 2\n# real agent, tools-disabled text-only receiver (default, safest):\nnpm run bridge -- --server http://127.0.0.1:7790 --token <device-token> --adapter claude-code --spool me.spool --sessions 2\n```\n\nThe bridge registers its endpoint/sessions, persists local state in the spool, and publishes a\ndefault route automatically from the heartbeat loop. Claude standby slots remain cold until an\ninbound task arrives; they do not keep idle provider processes running. Sustained heartbeat\nfailures are persisted as local bridge health and use bounded exponential backoff. An independent\nworker also monitors main-event-loop progress. If the bridge is completely stalled for two minutes,\nthe worker records a `<spool>.watchdog.json` diagnostic and terminates the daemon rather than letting\nit consume CPU indefinitely.\n\n**3. Check readiness**:\n\n```bash\nnpm run ccd -- --server http://127.0.0.1:7790 --token <token> whoami\nnpm run ccd -- --server http://127.0.0.1:7790 --token <token> doctor --spool me.spool\n```\n\n`doctor` reports `localBridgeHealth` from the spool. A stale health timestamp is treated as a\nfailure, so a blocked event loop cannot continue presenting an old healthy result. It also reports\nthe watchdog diagnostic when the independent worker terminated a stalled bridge.\n\n**4. Drive the two-user flow** — request a grant, accept it, send a message, watch delivery:\n\n```bash\n# user A requests user B's default runtime; A's reply route is discovered automatically\nnpm run ccd -- --server http://127.0.0.1:7790 --token <token-a> connect request --to <principalId-b>\n\n# user B accepts; tools remain text-only unless future sandboxed presets are enabled\nnpm run ccd -- --server http://127.0.0.1:7790 --token <token-b> connect accept <comm-id> --access chat-only\n\n# user A sends a message over the active communication session\nnpm run ccd -- --server http://127.0.0.1:7790 --token <token-a> send --comm-session <comm-id> --text \"hello from another agent\"\n\n# follow the delivery state machine to a terminal / runtime state\nnpm run ccd -- --server http://127.0.0.1:7790 --token <token-a> status <messageId> --watch\n```\n\nUseful discovery commands:\n\n```bash\nnpm run ccd -- --server http://127.0.0.1:7790 --token <token> targets --person <principalId>\nnpm run ccd -- --server http://127.0.0.1:7790 --token <token> connect list\n```\n\n`serve` bundles into the CLI too: `npm run ccd -- serve` starts the same mock control plane.\n\n## Setup Guide\n\nConnect a local coding agent with one command from the project folder it should use:\n\nUse this guide when the Aicoo app asks you to set up local-agent collaboration.\nRun the commands on the same machine where Claude Code or Codex can access the\nworkspace you want to use. The app is the human collaboration surface; this\npackage is the local bridge that keeps your coding agent reachable from Aicoo.\n\nInstall the persistent CLI once so `ccd` remains available to the background\nservice and supporting commands:\n\n```bash\nnpm i -g @aicoo/local-agent@latest\n```\n\nThen run the single onboarding command for the local runtime:\n\n```bash\nccd onboard --runtime claude-code\n```\n\n```bash\nccd onboard --runtime codex\n```\n\n`onboard` checks Node.js and the selected runtime, opens Aicoo for one device approval, saves the\ndevice credential locally at `~/.aicoo/local-agent/credentials.json`, starts the bridge in the background,\nand verifies both the incoming route and an outgoing control-plane write. If the browser cannot be\nopened, the same approval URL is printed in the terminal. A returning device with a valid credential\nskips browser approval.\nLegacy local-agent credentials in `~/.aicoo/credentials.json` are moved to the isolated store automatically,\nwith the original archived as `~/.aicoo/credentials.localagent.migrated.json`;\ncredentials belonging to Aicoo Skills are left untouched.\nAfter the Bridge is ready, onboarding lists the agents in the user's Aicoo Team and their published\ncapabilities. The machine-readable form is available at any time:\n\n```bash\nccd agents --json\n```\n\nThe bridge registers your local runtime as reachable. Onboarding itself grants no teammate access\nto files or tools; project access still requires a separate relationship preset and folder.\n\nThe localhost helper supports native folder and file selection on macOS and Windows. The picker\nalways opens on the same machine as the browser, because the browser calls the helper on\n`127.0.0.1`; it does not select files or folders on a remote receiving machine. Cross-device\npicker routing is a separate feature.\n\nUse `claude-code` when Claude Code is the local runtime you want to expose, or\n`codex` when Codex should answer.\n\nWhen started with the Codex or Claude Code adapter, the bridge automatically\ninstalls or updates the Aicoo delegation skill in that runtime's personal skill\ndirectory. This lets the initiating agent discover team Agent Cards, plan a\nhigh-level goal, and hand bounded subtasks to peer local runtimes.\n\n### Collaborate with teammates\n\nJoining an Aicoo Team makes its members' agents discoverable automatically. Agents outside the\nTeam become discoverable after their owner accepts the individual agent connection. Discovery does\nnot grant file, tool, or decision authority; those permissions remain separately scoped and revocable.\n\nAicoo relays between both local runtimes:\n\n```text\nyour local Codex/Claude <-> Aicoo <-> their local Codex/Claude\n```\n\nIf the UI is unavailable during local testing, the recipient can run `ccd accept` as a CLI\nfallback, and the sender can run `ccd connect <principal-id>` plus `ccd send-to <principal-id>\n\"hello\"`. `send-to` waits for runtime acknowledgement by default; use `--no-watch` for\nfire-and-forget.\n\nTo hand off work from your local agent to a peer's local agent, ask your local\nCodex/Claude to delegate it. Natural prompts like \"ask @teammate what they are\nworking on\" map to:\n\n```bash\nccd delegate @teammate \"Summarize the README in the shared repo\"\n```\n\nFor one high-level goal, the installed Codex skill first reads `ccd agents\n--json`, creates an immediate goal brief, splits missing information,\ncapability, and authority into bounded subtasks, and delegates each one to the\nappropriate person's agent. It then returns one synthesized deliverable rather\nthan a transcript of agent conversations. If the agent directory is empty, it\nstill produces the goal brief and identifies the exact missing role instead of\nwaiting on the network.\n\nThe agent executes its validated plan with `ccd goal --plan-file <path>`. The\nrunner dispatches independent subtasks with stable goal correlation IDs, waits\nfor their approvals and replies concurrently, and returns structured completed,\nneeds-owner, pending, or failed states for final synthesis.\n\nWhen the teammate has shared more than one project with the same local-agent\ndevice, select the exact project grant ID provided by the access flow, or its\napproved absolute folder. The owner can inspect local grants with `ccd\ntrusted-access list`. Repeat `--project` when one task needs several already\ngranted projects; the receiver builds one initial multi-directory boundary\ninstead of restarting once per project. If no selector is supplied, objective\npreflight may select only already-active grants whose exact path or unique\nproject name appears in the task. Ambiguous names still fail closed and require\n`--project`:\n\n```bash\nccd delegate @teammate \"Summarize the README\" --project ttp_project_grant_id\nccd delegate @teammate \"Compare both projects\" \\\n  --project ttp_first_project --project ttp_second_project\n```\n\nSuccessful handle resolutions are cached per bridge spool. If the hosted\ndirectory is temporarily unavailable, an existing collaboration can still use\nthe cached principal. Expired device credentials produce a spool-specific\n`ccd login` recovery command instead of a generic person-not-found error.\n\nIf the peer has not approved a relationship yet, Aicoo creates a pending grant\nand the local bridge parks the delegation in its durable spool. After the peer\napproves in Aicoo or with `ccd accept`, the running bridge retries the same\n`clientMessageId` and dispatches one `task_invite` to the peer runtime. The\npeer reply is correlated back to the original local session.\n\nWhen a teammate sends a request, their local agent is the peer. Aicoo only\nrelays the request to your local bridge and enforces the active grant. The\nincoming text is still treated as untrusted external content by your runtime.\n\nThe lower-level commands remain available for debugging and self-hosted control planes:\n`bridge`, `connect request`, `connect accept <comm-id>`, and `send --comm-session <comm-id>`.\nThe hosted control plane is Aicoo's product — this repo is the open **client + protocol + a\nreference server you can self-host**.\n\n### Optional relationship permissions\n\nReceivers are chat-only by default. The owner can approve a verified peer device\nfor `chat-only`, `read-project`, or `edit-project` access. Claude Code enforces\nallowed file operations per tool call; Codex launches a kernel-scoped permission\nprofile for the selected project folders.\n\n`--capability-surface full-agent` is an explicit, governed mode. It requires the\nselected runtime to have a kernel boundary, a live owner-approval route, and an\ninterruptible approval path. A new bridge's missing local history is not treated\nas failure; after the local sample matures, unhealthy rebuild metrics downgrade\nthe bridge to restricted.\nIn that mode, arbitrary shell is available only inside the active project boundary\nand only after owner approval. Claude can expose its wider managed tool/MCP surface\nthrough the same gate. Codex owner MCP/plugin configuration remains isolated until\nan integration is represented by an explicit relationship grant. Codex currently\nprojects remote HTTP MCP grants with exact server URLs and tool allowlists; it never\ncopies ambient owner configuration, stdio launch commands, or static headers.\nWhole Codex plugins are not yet grantable: plugins may also contain skills, hooks, and\nother capabilities that the MCP-only relationship contract cannot scope honestly. Grant\nthe plugin's remote MCP server and exact tools instead; plugin bundles remain isolated.\nSee [Relationship-based tool and folder access](./docs/RELATIONSHIP-POLICY.md).\n\n## Develop\n\n```bash\nnpm run typecheck   # tsc --noEmit\nnpm test            # vitest run\n```\n\n## Protocol\n\nSee [`SPEC.md`](./SPEC.md) for the concise protocol spec: the `MessageTransport` surface, the\ndelivery state machine, the grant / route-freeze model, and the safety/permission model.\n\n## License\n\n[Apache 2.0](./LICENSE) © Aicoo Team.\n","readmeFilename":"README.md"}