{"_id":"@arbiterlabs/keeperhub","name":"@arbiterlabs/keeperhub","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@arbiterlabs/keeperhub","version":"0.1.0","description":"Judgment in front of KeeperHub — an agent that cannot execute what it has not checked.","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"engines":{"node":">=22"},"scripts":{"build":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsc -p tsconfig.json","typecheck":"tsc -p tsconfig.json --noEmit","prepublishOnly":"npm run build"},"dependencies":{"@arbiterlabs/sdk":"^0.1.0"},"devDependencies":{"@types/node":"^24.7.0","typescript":"^5.9.3"},"license":"MIT","author":{"name":"Godwin Tairo"},"homepage":"https://github.com/godwin105/arbiter_AI/tree/main/clients/keeperhub#readme","bugs":{"url":"https://github.com/godwin105/arbiter_AI/issues"},"repository":{"type":"git","url":"git+https://github.com/godwin105/arbiter_AI.git","directory":"clients/keeperhub"},"keywords":["keeperhub","onchain-agent","ai-agent","agent-security","evm","ethereum","transaction-simulation","eip-7702"],"publishConfig":{"access":"public"},"gitHead":"bed166b71dc8d3740765220e321bafc62ae52aa5","_id":"@arbiterlabs/keeperhub@0.1.0","_nodeVersion":"24.13.0","_npmVersion":"11.13.0","dist":{"integrity":"sha512-UO6vR91pH6A6XXN5Y+iNwB4aPuO5Y01Ne9+LSUnTo5PRqPZFmIvAzDFCtQIgtP+58d9IRhrXWsRGLV4Ru8YegQ==","shasum":"aa0cd20a64041e3d244439341d6435a6e6b6afc6","tarball":"https://registry.npmjs.org/@arbiterlabs/keeperhub/-/keeperhub-0.1.0.tgz","fileCount":12,"unpackedSize":26170,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCTVO0rP5zJcPt9SbpZw+/KPzONpleir5nz20bGjdoV5wIgfYp1Nzv1Qok0hwg0uK/cTx5K79aQJ3qClVDcfhj7GhI="}]},"_npmUser":{"name":"atmo105","email":"godwintairo105@gmail.com"},"directories":{},"maintainers":[{"name":"atmo105","email":"godwintairo105@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/keeperhub_0.1.0_1785941184868_0.30679479653419306"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-05T14:46:24.691Z","0.1.0":"2026-08-05T14:46:25.042Z","modified":"2026-08-05T14:46:25.283Z"},"maintainers":[{"name":"atmo105","email":"godwintairo105@gmail.com"}],"description":"Judgment in front of KeeperHub — an agent that cannot execute what it has not checked.","homepage":"https://github.com/godwin105/arbiter_AI/tree/main/clients/keeperhub#readme","keywords":["keeperhub","onchain-agent","ai-agent","agent-security","evm","ethereum","transaction-simulation","eip-7702"],"repository":{"type":"git","url":"git+https://github.com/godwin105/arbiter_AI.git","directory":"clients/keeperhub"},"author":{"name":"Godwin Tairo"},"bugs":{"url":"https://github.com/godwin105/arbiter_AI/issues"},"license":"MIT","readme":"# @arbiterlabs/keeperhub\n\nAn agent that cannot execute what it has not checked.\n\n[KeeperHub](https://keeperhub.com) makes execution reliable — nonces, retries,\ngas, RPC failover. It does not make execution *correct*: a transaction granting\na stranger unlimited spending rights is submitted just as dependably as a\nlegitimate transfer. This puts judgment in front of it.\n\n```bash\nnpm install @arbiterlabs/keeperhub\n```\n\n```ts\nimport { GuardedAgent } from \"@arbiterlabs/keeperhub\";\n\nconst agent = new GuardedAgent({\n  arbiterUrl: \"https://arbiter-hs23.onrender.com\",\n  arbiterPrivateKey: process.env.ALGO_KEY,\n  keeperHubApiKey: process.env.KEEPERHUB_API_KEY,\n  allowDecisions: [\"allow\"],\n});\n\nconst result = await agent.execute({\n  kind: \"erc20-approve\",\n  chainId: 1,\n  token: USDC,\n  spender,\n  amount: MAX_UINT256,\n  description: \"Approve USDC\",\n});\n\nresult.executed;        // false — KeeperHub was never called\nresult.refusedBecause;  // \"Arbiter returned BLOCK (risk 100/100): ...\"\n```\n\n## The guard is structural\n\nThere is no path through `GuardedAgent` that reaches KeeperHub without a verdict\nfirst, so an agent cannot skip the check by forgetting to call it.\n\n`allowDecisions` defaults to `[\"allow\"]` alone. A `warn` means \"proceed only if\nan operator accepts this risk\", and an autonomous agent has no operator standing\nby — so anything short of a clean verdict stops.\n\n## What it catches\n\nUnlimited ERC-20 approvals, `setApprovalForAll`, `permit` signatures, transfers\nto the zero address, and approvals granted to **EIP-7702 delegated accounts** —\nwallets that return contract code from `eth_getCode` and remain spendable by\nwhoever holds the private key. A naive contract check waves those straight\nthrough.\n\n## Paying\n\nCalls are settled per request in USDC on Algorand over [x402](https://x402.org).\nThere is no API key and no account — payment is the authentication.\n\nYour payer account needs USDC **and must be opted in to the USDC asset**. On\nAlgorand a transfer to an account that has not opted in is rejected outright, so\nan un-opted-in payer cannot pay at all. Fees are sponsored by the facilitator,\nso the payer does not need ALGO.\n\n| Route | Price |\n|---|---|\n| Transaction verdict | $0.002 |\n| Counterparty verdict | $0.01 |\n| Human judgment | $0.25 |\n\nFull documentation: https://arbiter-hs23.onrender.com/docs\n\n## Licence\n\nMIT\n","readmeFilename":"README.md","_rev":"1-0bbc2f238c8574576fe78c3d5f5ce12c"}