{"_id":"@amanm/disk-agent","_rev":"7-642f7696fc7e1129b5d2dd733290434a","name":"@amanm/disk-agent","dist-tags":{"latest":"2.1.1"},"versions":{"1.0.0":{"name":"@amanm/disk-agent","version":"1.0.0","keywords":["ai-agent","telegram","openclaw","hermes","pi-coding-agent","pi-supergrok","xai","grok","cron","memory","personal-agent","gateway"],"author":{"name":"Disk Agent contributors"},"license":"MIT","_id":"@amanm/disk-agent@1.0.0","maintainers":[{"name":"aman-mehtar","email":"amanmstudies@gmail.com"}],"homepage":"https://github.com/amanmprojects/disk-agent#readme","bugs":{"url":"https://github.com/amanmprojects/disk-agent/issues"},"bin":{"disk-agent":"dist/cli.js"},"dist":{"shasum":"6a27da639d78ca76a089b08bb544d5ff78d4e6c0","tarball":"https://registry.npmjs.org/@amanm/disk-agent/-/disk-agent-1.0.0.tgz","fileCount":86,"integrity":"sha512-12eSry6l/U5cfKySZyPw65Ww4smhEQtWySIq1eVtAlQyxsda4Pv30KZOicXjclUiNPrrAwx3UkyHcRqrnqKiXw==","signatures":[{"sig":"MEUCIQDdncEChoohz/QJ19xabM6P+WfcbPW7rIadWMTw29YIKgIge9ihy3nw3n3EKJAtNvxqcPC3RsMjmztUz5W/w0rcJz4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":641467},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.6.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"d799168266f8e5a94d0de84b043aeb0689e34fcd","scripts":{"dev":"tsx src/cli.ts","test":"tsx --test test/**/*.test.ts","build":"tsc && chmod +x dist/cli.js","clean":"rm -rf dist","setup":"tsx src/cli.ts setup","start":"node dist/cli.js","gateway":"tsx src/cli.ts gateway","typecheck":"tsc --noEmit","pack:check":"npm run prepublishOnly && npm pack --dry-run","prepublishOnly":"npm run clean && npm run build && npm test"},"_npmUser":{"name":"aman-mehtar","email":"amanmstudies@gmail.com"},"repository":{"url":"git+https://github.com/amanmprojects/disk-agent.git","type":"git"},"_npmVersion":"11.11.1","description":"OpenClaw/Hermes-style personal AI agent gateway powered by Pi — Telegram, memory, cron, SuperGrok","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","chalk":"^5.6.2","croner":"^10.0.1","dotenv":"^17.4.2","grammy":"^1.45.1","typebox":"^1.3.6","commander":"^15.0.0","pi-supergrok":"^0.2.2","@tavily/pi-extension":"^0.1.2","@earendil-works/pi-coding-agent":"^0.80.10"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","typescript":"^7.0.2","@types/node":"^26.1.1"},"_npmOperationalInternal":{"tmp":"tmp/disk-agent_1.0.0_1784650776613_0.5179973990559252","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@amanm/disk-agent","version":"1.1.0","keywords":["ai-agent","telegram","openclaw","hermes","pi-coding-agent","pi-supergrok","xai","grok","cron","memory","personal-agent","gateway"],"author":{"name":"Disk Agent contributors"},"license":"MIT","_id":"@amanm/disk-agent@1.1.0","maintainers":[{"name":"aman-mehtar","email":"amanmstudies@gmail.com"}],"homepage":"https://github.com/amanmprojects/disk-agent#readme","bugs":{"url":"https://github.com/amanmprojects/disk-agent/issues"},"bin":{"disk-agent":"dist/cli.js"},"dist":{"shasum":"2bf01d7f4337eb1631d61ceb1650ea18a5b94b56","tarball":"https://registry.npmjs.org/@amanm/disk-agent/-/disk-agent-1.1.0.tgz","fileCount":86,"integrity":"sha512-tldk9iXbSbs6+HedIzQF1EncTepFJrfVvGBnLW//H8BTLOf4Alsv80bSqh9OfQAG/hcXSN/Xblfqp4YeDLDnUw==","signatures":[{"sig":"MEQCICBaXpEMphjhFRvzAWpu9e/JKHGLyb3udzygX68cov53AiBtcpAQqrBpbi1DKkAkSmh+TKYWdyp7Z9D6D6BCfsmi+A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":645559},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.6.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"b2cbe3fb304d5a349720803976db6027a1fbbbf0","scripts":{"dev":"tsx src/cli.ts","test":"tsx --test test/**/*.test.ts","build":"tsc && chmod +x dist/cli.js","clean":"rm -rf dist","setup":"tsx src/cli.ts setup","start":"node dist/cli.js","gateway":"tsx src/cli.ts gateway","typecheck":"tsc --noEmit","pack:check":"npm run prepublishOnly && npm pack --dry-run","prepublishOnly":"npm run clean && npm run build && npm test"},"_npmUser":{"name":"aman-mehtar","email":"amanmstudies@gmail.com"},"repository":{"url":"git+https://github.com/amanmprojects/disk-agent.git","type":"git"},"_npmVersion":"11.11.1","description":"OpenClaw/Hermes-style personal AI agent gateway powered by Pi — Telegram, memory, cron, SuperGrok","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","chalk":"^5.6.2","croner":"^10.0.1","dotenv":"^17.4.2","grammy":"^1.45.1","typebox":"^1.3.6","commander":"^15.0.0","pi-supergrok":"^0.2.2","@tavily/pi-extension":"^0.1.2","@earendil-works/pi-coding-agent":"^0.80.10"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","typescript":"^7.0.2","@types/node":"^26.1.1"},"_npmOperationalInternal":{"tmp":"tmp/disk-agent_1.1.0_1784652639007_0.32644769361558734","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@amanm/disk-agent","version":"1.3.0","keywords":["ai-agent","telegram","openclaw","hermes","pi-coding-agent","pi-supergrok","xai","grok","cron","memory","personal-agent","gateway"],"author":{"name":"Disk Agent contributors"},"license":"MIT","_id":"@amanm/disk-agent@1.3.0","maintainers":[{"name":"aman-mehtar","email":"amanmstudies@gmail.com"}],"homepage":"https://github.com/amanmprojects/disk-agent#readme","bugs":{"url":"https://github.com/amanmprojects/disk-agent/issues"},"bin":{"disk-agent":"dist/cli.js"},"dist":{"shasum":"28ad23c8ce7012f0d8a065b418b8cfb7e5978898","tarball":"https://registry.npmjs.org/@amanm/disk-agent/-/disk-agent-1.3.0.tgz","fileCount":89,"integrity":"sha512-wfVtc7A9BmJchMWaiWsqcHsyOBfhm77LM9xlnG2YjGW70q/J7bFTTGiaxThOoNfKK/iZqh/y+kFECZTGqhxLDQ==","signatures":[{"sig":"MEUCIQDLLqYFfrljsLqysR8FBiSLsCrx5vJ3jyz+qWicHhXOwwIgCvn4XdjfvdaYWgidIYg0/muQzAVHCvrDSXCH++YPWO8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":669374},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.6.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"2296fa61f3108b96427bf5c4daf8c6b04a87a85e","scripts":{"dev":"tsx src/cli.ts","test":"tsx --test test/**/*.test.ts","build":"tsc && chmod +x dist/cli.js","clean":"rm -rf dist","setup":"tsx src/cli.ts setup","start":"node dist/cli.js","gateway":"tsx src/cli.ts gateway","typecheck":"tsc --noEmit","pack:check":"npm run prepublishOnly && npm pack --dry-run","prepublishOnly":"npm run clean && npm run build && npm test"},"_npmUser":{"name":"aman-mehtar","email":"amanmstudies@gmail.com"},"repository":{"url":"git+https://github.com/amanmprojects/disk-agent.git","type":"git"},"_npmVersion":"11.11.1","description":"OpenClaw/Hermes-style personal AI agent gateway powered by Pi — Telegram, memory, cron, SuperGrok","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","chalk":"^5.6.2","croner":"^10.0.1","dotenv":"^17.4.2","grammy":"^1.45.1","typebox":"^1.3.6","commander":"^15.0.0","pi-supergrok":"^0.2.2","@tavily/pi-extension":"^0.1.2","@earendil-works/pi-coding-agent":"^0.80.10"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","typescript":"^7.0.2","@types/node":"^26.1.1"},"_npmOperationalInternal":{"tmp":"tmp/disk-agent_1.3.0_1784653389381_0.7620808453511487","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@amanm/disk-agent","version":"1.4.0","keywords":["ai-agent","telegram","openclaw","hermes","pi-coding-agent","pi-supergrok","xai","grok","cron","memory","personal-agent","gateway"],"author":{"name":"Disk Agent contributors"},"license":"MIT","_id":"@amanm/disk-agent@1.4.0","maintainers":[{"name":"aman-mehtar","email":"amanmstudies@gmail.com"}],"homepage":"https://github.com/amanmprojects/disk-agent#readme","bugs":{"url":"https://github.com/amanmprojects/disk-agent/issues"},"bin":{"disk-agent":"dist/cli.js"},"dist":{"shasum":"6c6747c0ad32148337eda462ccdd722cfbd7d855","tarball":"https://registry.npmjs.org/@amanm/disk-agent/-/disk-agent-1.4.0.tgz","fileCount":89,"integrity":"sha512-YO6j5Njf/CSAyYO1APWwL10Aeq8BqgTjQbVe1s4sBUkv7JNrWfqtMQB5rPSltauW9mhdsgYAOFje5qMA3zZqyw==","signatures":[{"sig":"MEYCIQCYf5j9gd3H2VI/PKi9wj9gPAtfK8Ki3HN5078P+nHX0AIhAKlB991CW7ODkSwpZxN/Of/gfMEQQzrebi77ZZi7cojO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":673917},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.6.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"76e45e12f8f55dbe75d06d1a934b81550ac5ae88","scripts":{"dev":"tsx src/cli.ts","test":"tsx --test test/**/*.test.ts","build":"tsc && chmod +x dist/cli.js","clean":"rm -rf dist","setup":"tsx src/cli.ts setup","start":"node dist/cli.js","gateway":"tsx src/cli.ts gateway","typecheck":"tsc --noEmit","pack:check":"npm run prepublishOnly && npm pack --dry-run","prepublishOnly":"npm run clean && npm run build && npm test"},"_npmUser":{"name":"aman-mehtar","email":"amanmstudies@gmail.com"},"repository":{"url":"git+https://github.com/amanmprojects/disk-agent.git","type":"git"},"_npmVersion":"11.11.1","description":"OpenClaw/Hermes-style personal AI agent gateway powered by Pi — Telegram, memory, cron, SuperGrok","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","chalk":"^5.6.2","croner":"^10.0.1","dotenv":"^17.4.2","grammy":"^1.45.1","typebox":"^1.3.6","commander":"^15.0.0","pi-supergrok":"^0.2.2","@tavily/pi-extension":"^0.1.2","@earendil-works/pi-coding-agent":"^0.80.10"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","typescript":"^7.0.2","@types/node":"^26.1.1"},"_npmOperationalInternal":{"tmp":"tmp/disk-agent_1.4.0_1784653960513_0.5311097548256842","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"@amanm/disk-agent","version":"1.5.0","keywords":["ai-agent","telegram","openclaw","hermes","pi-coding-agent","pi-supergrok","xai","grok","cron","memory","personal-agent","gateway"],"author":{"name":"Disk Agent contributors"},"license":"MIT","_id":"@amanm/disk-agent@1.5.0","maintainers":[{"name":"aman-mehtar","email":"amanmstudies@gmail.com"}],"homepage":"https://github.com/amanmprojects/disk-agent#readme","bugs":{"url":"https://github.com/amanmprojects/disk-agent/issues"},"bin":{"disk-agent":"dist/cli.js"},"dist":{"shasum":"4c8a169d0c799f17d56c83c0636996bec0d91d53","tarball":"https://registry.npmjs.org/@amanm/disk-agent/-/disk-agent-1.5.0.tgz","fileCount":89,"integrity":"sha512-OCv71WQEirVZ9JyLQzjS3UtNfsk075/mOJ++PCYP3F0N5zxkxOcROACTjWLqVPaUVV7PYoKXW39RNjYepzuG1g==","signatures":[{"sig":"MEUCIQDQCp3nO6eC3FICZke7BnwgpP1Ti0LEgxPsWXG+kbb3EwIgauVknKbsKj2gDSedihAN/d9NnIKMTe0j96Vxq0aJrhs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":719094},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.6.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"0a08c40aeaf425c5411e7de3b5667fc8e008a626","scripts":{"dev":"tsx src/cli.ts","test":"tsx --test test/**/*.test.ts","build":"tsc && chmod +x dist/cli.js","clean":"rm -rf dist","setup":"tsx src/cli.ts setup","start":"node dist/cli.js","gateway":"tsx src/cli.ts gateway","typecheck":"tsc --noEmit","pack:check":"npm run prepublishOnly && npm pack --dry-run","prepublishOnly":"npm run clean && npm run build && npm test"},"_npmUser":{"name":"aman-mehtar","email":"amanmstudies@gmail.com"},"repository":{"url":"git+https://github.com/amanmprojects/disk-agent.git","type":"git"},"_npmVersion":"11.11.1","description":"OpenClaw/Hermes-style personal AI agent gateway powered by Pi — Telegram, memory, cron, SuperGrok","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","chalk":"^5.6.2","croner":"^10.0.1","dotenv":"^17.4.2","grammy":"^1.45.1","typebox":"^1.3.6","commander":"^15.0.0","pi-supergrok":"^0.2.2","@tavily/pi-extension":"^0.1.2","@earendil-works/pi-coding-agent":"^0.80.10"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","typescript":"^7.0.2","@types/node":"^26.1.1"},"_npmOperationalInternal":{"tmp":"tmp/disk-agent_1.5.0_1784655528366_0.36966071459281324","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"@amanm/disk-agent","version":"2.1.0","keywords":["ai-agent","telegram","openclaw","hermes","pi-coding-agent","pi-supergrok","xai","grok","cron","memory","personal-agent","gateway"],"author":{"name":"Disk Agent contributors"},"license":"MIT","_id":"@amanm/disk-agent@2.1.0","maintainers":[{"name":"aman-mehtar","email":"amanmstudies@gmail.com"}],"homepage":"https://github.com/amanmprojects/disk-agent#readme","bugs":{"url":"https://github.com/amanmprojects/disk-agent/issues"},"bin":{"disk-agent":"dist/cli.js"},"dist":{"shasum":"c531e449a2b4fb9af04d62055fe143d32b8717ca","tarball":"https://registry.npmjs.org/@amanm/disk-agent/-/disk-agent-2.1.0.tgz","fileCount":89,"integrity":"sha512-8rhCLTWrEt2N/tSha5nkQVi2+z3EwIoDtSe/1W1oi+hySZvmCqKJ8UG7fLvzDp64oNqXhFBiJsKx1yjj00ZZgQ==","signatures":[{"sig":"MEYCIQD1exdX6ZUi/dZALRGQ+Rdoy6dcp7r13flM2knlz1NfYwIhAMhpfNBcC+I0ojuMmf9i9koYCOgICIX/tFJMj6kOTPw2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":734055},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.6.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"4f74b568de97bd11b130f587228dcfb521db124a","scripts":{"dev":"tsx src/cli.ts","lint":"biome lint src/ test/","test":"tsx --test test/**/*.test.ts","build":"tsc && chmod +x dist/cli.js","check":"biome check src/ test/","clean":"rm -rf dist","setup":"tsx src/cli.ts setup","start":"node dist/cli.js","format":"biome format --write src/ test/","gateway":"tsx src/cli.ts gateway","typecheck":"tsc --noEmit","pack:check":"npm run prepublishOnly && npm pack --dry-run","prepublishOnly":"npm run clean && npm run build && npm test"},"_npmUser":{"name":"aman-mehtar","email":"amanmstudies@gmail.com"},"repository":{"url":"git+https://github.com/amanmprojects/disk-agent.git","type":"git"},"_npmVersion":"11.11.1","description":"OpenClaw/Hermes-style personal AI agent gateway powered by Pi — Telegram, memory, cron, SuperGrok","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","chalk":"^5.6.2","croner":"^10.0.1","dotenv":"^17.4.2","grammy":"^1.45.1","typebox":"^1.3.6","commander":"^15.0.0","pi-supergrok":"^0.2.2","@tavily/pi-extension":"^0.1.2","@earendil-works/pi-coding-agent":"^0.80.10"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","typescript":"^7.0.2","@types/node":"^26.1.1","@biomejs/biome":"^2.5.6"},"_npmOperationalInternal":{"tmp":"tmp/disk-agent_2.1.0_1786445421530_0.24256248179877837","host":"s3://npm-registry-packages-npm-production"}},"2.1.1":{"name":"@amanm/disk-agent","version":"2.1.1","description":"OpenClaw/Hermes-style personal AI agent gateway powered by Pi — Telegram, memory, cron, SuperGrok","type":"module","main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"bin":{"disk-agent":"dist/cli.js"},"scripts":{"build":"tsc && chmod +x dist/cli.js","clean":"rm -rf dist","dev":"tsx src/cli.ts","start":"node dist/cli.js","typecheck":"tsc --noEmit","lint":"biome lint src/ test/","format":"biome format --write src/ test/","check":"biome check src/ test/","gateway":"tsx src/cli.ts gateway","setup":"tsx src/cli.ts setup","test":"tsx --test test/**/*.test.ts","prepublishOnly":"npm run clean && npm run build && npm test","pack:check":"npm run prepublishOnly && npm pack --dry-run"},"engines":{"node":">=20.6.0"},"keywords":["ai-agent","telegram","openclaw","hermes","pi-coding-agent","pi-supergrok","xai","grok","cron","memory","personal-agent","gateway"],"license":"MIT","author":{"name":"Disk Agent contributors"},"repository":{"type":"git","url":"git+https://github.com/amanmprojects/disk-agent.git"},"bugs":{"url":"https://github.com/amanmprojects/disk-agent/issues"},"homepage":"https://github.com/amanmprojects/disk-agent#readme","publishConfig":{"access":"public"},"dependencies":{"@earendil-works/pi-coding-agent":"^0.80.10","@tavily/pi-extension":"^0.1.2","chalk":"^5.6.2","commander":"^15.0.0","croner":"^10.0.1","dotenv":"^17.4.2","grammy":"^1.45.1","pi-supergrok":"^0.2.2","typebox":"^1.3.6","yaml":"^2.9.0","zod":"^4.4.3"},"devDependencies":{"@biomejs/biome":"^2.5.6","@types/node":"^26.1.1","tsx":"^4.23.1","typescript":"^7.0.2"},"gitHead":"ee24a66e8a5e0099713cc20d01c2425832b0e45c","_id":"@amanm/disk-agent@2.1.1","_nodeVersion":"24.14.0","_npmVersion":"11.11.1","dist":{"integrity":"sha512-rx6vAuvqfy/rl6QT9LGSZOzwmD+QN6lGj3eloWMnTYPRX/MRI9xzcmHMhVEfFylgIfGgxvrX+gJ4xWLcX4m9ug==","shasum":"269a823f9fd81282bb1841924682eb7210b98a8b","tarball":"https://registry.npmjs.org/@amanm/disk-agent/-/disk-agent-2.1.1.tgz","fileCount":89,"unpackedSize":735233,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCB9eShHIZqYvC1GKBxTXNMzbbH8Isx9ESE97UIYDEvkgIhAPWvXPKl6oB76oDaQfv3npqfppGtdidbRK4EbcM+/0Gn"}]},"_npmUser":{"name":"aman-mehtar","email":"amanmstudies@gmail.com"},"directories":{},"maintainers":[{"name":"aman-mehtar","email":"amanmstudies@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/disk-agent_2.1.1_1786447148697_0.4343229885597597"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-21T16:19:36.446Z","modified":"2026-08-11T11:19:09.035Z","1.0.0":"2026-07-21T16:19:36.753Z","1.1.0":"2026-07-21T16:50:39.178Z","1.3.0":"2026-07-21T17:03:09.546Z","1.4.0":"2026-07-21T17:12:40.697Z","1.5.0":"2026-07-21T17:38:48.554Z","2.1.0":"2026-08-11T10:50:21.676Z","2.1.1":"2026-08-11T11:19:08.835Z"},"bugs":{"url":"https://github.com/amanmprojects/disk-agent/issues"},"author":{"name":"Disk Agent contributors"},"license":"MIT","homepage":"https://github.com/amanmprojects/disk-agent#readme","keywords":["ai-agent","telegram","openclaw","hermes","pi-coding-agent","pi-supergrok","xai","grok","cron","memory","personal-agent","gateway"],"repository":{"type":"git","url":"git+https://github.com/amanmprojects/disk-agent.git"},"description":"OpenClaw/Hermes-style personal AI agent gateway powered by Pi — Telegram, memory, cron, SuperGrok","maintainers":[{"name":"aman-mehtar","email":"amanmstudies@gmail.com"}],"readme":"# Disk Agent\n\n**OpenClaw / Hermes-style personal AI agent gateway**, powered by the [Pi coding-agent](https://github.com/badlogic/pi-mono) SDK.\n\nChat from **Telegram** (or a local CLI), with **persistent memory**, **cron/heartbeat automations**, **browser/web tools**, and **per-peer session management** — running on your machine.\n\n```\nYou (Telegram / CLI)\n        │\n        ▼\n   ┌─────────┐     sessions · memory · cron · browser\n   │ Gateway │──────────────────────────────────────────┐\n   └────┬────┘                                          │\n        │  agentic loop (Pi SDK)                        │\n        ▼                                               ▼\n   LLM + tools                              ~/.disk-agent/\n   (read/bash/edit/… + memory/cron/web)     workspace · skills · sessions\n```\n\n## Install & setup (v1)\n\n**Requirements:** Node.js **≥ 20.6**\n\n```bash\n# 1) Install\nnpm install -g @amanm/disk-agent\n\n# 2) Interactive setup (does everything)\ndisk-agent setup\n```\n\nThat single `setup` wizard:\n\n1. Creates the **standardized home directory** (`~/.disk-agent` or `$XDG_DATA_HOME/disk-agent`)\n2. Seeds workspace identity files + built-in skills\n3. **Prompts** for agent name, model, Telegram bot token (from [@BotFather](https://t.me/BotFather)), owner id, coding cwd\n4. Installs the **Pi** CLI if missing (`@earendil-works/pi-coding-agent`)\n5. Installs Pi extensions: **pi-supergrok**, **pi-agent-browser-native**, **@tavily/pi-extension**\n6. Installs **[agent-browser](https://agent-browser.dev/)** globally and runs `agent-browser install` (Chrome)\n7. Walks you through **SuperGrok / X Premium OAuth** (or skips if tokens / `XAI_API_KEY` already exist)\n\nFor Tavily web search, set `TAVILY_API_KEY` in `~/.disk-agent/.env` (or the process env).\n\nNon-interactive (CI / scripted):\n\n```bash\ndisk-agent setup --yes --skip-login \\\n  --telegram-token \"123456:ABC...\" \\\n  --owner \"your_telegram_user_id\" \\\n  --tavily-key \"tvly-...\"\n# later:\ndisk-agent login\n```\n\nFlags:\n\n```bash\ndisk-agent setup \\\n  --name Disk \\\n  --model supergrok/grok-4.5 \\\n  --telegram-token \"123456:ABC...\" \\\n  --owner \"your_telegram_user_id\" \\\n  --tavily-key \"tvly-...\"   # optional: Tavily web_search / web_fetch \\\n  --skip-browser   # optional: skip agent-browser\n  --skip-login     # optional: skip SuperGrok OAuth\n```\n\nVerify:\n\n```bash\ndisk-agent doctor\ndisk-agent models\ndisk-agent status\n```\n\n### Run\n\n```bash\n# secrets (if not passed to setup)\n$EDITOR ~/.disk-agent/.env\n# TELEGRAM_BOT_TOKEN=...\n# TAVILY_API_KEY=tvly-...\n\n# Detached (recommended on a VPS — survives logout)\ndisk-agent gateway start\ndisk-agent gateway status\ndisk-agent gateway stop\ndisk-agent gateway restart\n\n# Update to the latest published version and restart the gateway\ndisk-agent update\ndisk-agent update --check          # report only\ndisk-agent update 1.2.0            # pin a version\ndisk-agent update --no-restart     # package only\n\n# Foreground (dev / Ctrl+C to stop)\ndisk-agent gateway\n# or\ndisk-agent chat             # local REPL only\n```\n\nLogs: `~/.disk-agent/logs/gateway.log` · pid: `~/.disk-agent/gateway.pid`\n\n1. DM your bot on Telegram → pairing code  \n2. On the host: `disk-agent pair <CODE>`  \n3. Chat normally  \n\nTelegram extras: `/context` (context window usage), `/effort medium` (thinking level).  \n\n### From source\n\n```bash\ngit clone <repo> && cd disk-agent\nnpm install\nnpm run build\nnpm link                  # optional — puts disk-agent on PATH\ndisk-agent setup\n```\n\n## Features\n\n| Area | What you get |\n|------|----------------|\n| **Telegram channel** | grammY long-polling bot, pairing / allowlist / owner policies, group mention gate, chunked replies, **voice notes** (Whisper STT) |\n| **Memory** | OpenClaw-style `SOUL.md` / `USER.md` / `MEMORY.md` / daily `memory/YYYY-MM-DD.md` + searchable fact store |\n| **Cron + heartbeat** | Cron expressions, `every 30m`, `daily at 09:00`, one-shots; quiet hours; `HEARTBEAT_OK` suppression |\n| **Browser / web** | Tavily `web_search` / `web_fetch` (`@tavily/pi-extension`, needs `TAVILY_API_KEY`); `web_get` (fetch+HTML strip); full automation when [`agent-browser`](https://www.npmjs.com/package/agent-browser) is installed |\n| **Sessions** | Per-peer Pi session transcripts, `/new` archive+reset, `/sessions` + `/resume`, serialized lanes |\n| **Coding agent** | Full Pi toolset: read, bash, edit, write, grep, find, ls |\n| **Skills / identity** | Workspace + user skills under one home tree; bootstrap context each run |\n\nInspired by **OpenClaw**, **Hermes Agent**, and **Pi**.\n\n## Auth\n\n| Method | How |\n|--------|-----|\n| **SuperGrok / X Premium** (recommended) | `disk-agent setup` or `disk-agent login` → OAuth → `~/.pi/agent/auth.json` |\n| **xAI API key** | `export XAI_API_KEY=…` or put it in `~/.disk-agent/.env` |\n| **Other Pi providers** | `ANTHROPIC_API_KEY`, OpenAI Codex OAuth via `pi`, etc. |\n\nAuth is **not** stored under `~/.disk-agent` — it deliberately uses **`~/.pi/agent/auth.json`** so one SuperGrok login works for both `pi` and disk-agent.\n\n```bash\ndisk-agent login              # SuperGrok OAuth\ndisk-agent login xai --type api_key\ndisk-agent models             # should show supergrok/* with [auth]\n```\n\n## Standardized directory layout\n\nEverything disk-agent owns lives under one home root:\n\n| Priority | Path |\n|----------|------|\n| 1 | `$DISK_AGENT_HOME` |\n| 2 | `$XDG_DATA_HOME/disk-agent` |\n| 3 | `~/.disk-agent` |\n\n```\n~/.disk-agent/\n├── config.yaml              # gateway config\n├── .env                     # secrets (not committed)\n├── .env.example\n├── workspace/               # agent identity & markdown memory\n│   ├── SOUL.md              # personality\n│   ├── USER.md              # who you are\n│   ├── MEMORY.md            # curated long-term memory\n│   ├── AGENTS.md            # operating rules\n│   ├── HEARTBEAT.md         # proactive checklist\n│   ├── IDENTITY.md\n│   ├── memory/YYYY-MM-DD.md\n│   ├── knowledge/\n│   └── skills/**/SKILL.md   # workspace skills (default for skill_create)\n├── skills/**/SKILL.md       # user-global skills\n├── sessions/                # logical session index\n├── pi-sessions/             # Pi jsonl transcripts (per peer)\n├── cron/jobs.json\n├── memory/facts.json        # structured facts\n├── pairings/                # telegram allowlist + pending codes\n├── browser/                 # screenshots / artifacts\n├── media/                   # inbound Telegram files\n├── prefs/\n└── logs/gateway.log\n```\n\n```bash\ndisk-agent paths              # print resolved paths\n```\n\nEdit `SOUL.md` to change voice. The agent maintains `USER.md` / `MEMORY.md` over time.\n\n### Skills locations\n\n| Location | Scope |\n|----------|--------|\n| `~/.disk-agent/workspace/skills/` | Workspace (default for `skill_create`) |\n| `~/.disk-agent/skills/` | User-global |\n| `<cwd>/.agents/skills/` | Project |\n| `~/.agents/skills/` | Legacy interop (still discovered) |\n\nBuilt-ins seeded on setup: **create-skill**, **find-skills**, **remember**.\n\n## CLI reference\n\n```\ndisk-agent setup          Full bootstrap (home + pi + extensions + login)\ndisk-agent login [prov]   SuperGrok / provider OAuth\ndisk-agent doctor         Health check\ndisk-agent update         Update to latest npm version and restart the gateway\ndisk-agent paths          Print directory layout\ndisk-agent gateway        Foreground gateway (Telegram + cron)\ndisk-agent gateway start  Detached OS process (VPS-friendly)\ndisk-agent gateway stop   Stop detached gateway\ndisk-agent gateway status Detached process status\ndisk-agent gateway restart\ndisk-agent chat           Interactive local REPL\ndisk-agent pair <code>    Approve Telegram pairing\ndisk-agent status         Config / SuperGrok auth status\ndisk-agent models         List SuperGrok / xAI / other models\ndisk-agent sessions              List active conversation sessions\ndisk-agent sessions history      List archived (previous) sessions\ndisk-agent sessions resume <id>  Resume a previous session by id or .jsonl path\ndisk-agent sessions files        List raw pi-sessions transcripts (incl. orphans)\ndisk-agent chat --resume <id>    Start CLI chat on a previous session\ndisk-agent skills list|show|create|delete|paths\ndisk-agent memory list|search|save\ndisk-agent cron list|add|remove|run\n```\n\nChat slash commands include `/context` (window usage), `/effort <level>` (thinking effort), `/sessions` (previous transcripts for this chat), and `/resume <id>`.\n\n### Session history\n\n- Each peer has one **active** transcript.\n- `/new` (or `session_reset`) **archives** the current transcript and starts fresh.\n- List archives: `disk-agent sessions history` or `/sessions` in chat.\n- Resume: `disk-agent sessions resume <id>` / `disk-agent chat --resume <id>` / `/resume <id>` (short id prefixes work).\n\n### Cron examples\n\n```bash\ndisk-agent cron add morning \"0 9 * * *\" \"Summarize my calendar priorities and send a short brief.\"\ndisk-agent cron add ping \"every 2h\" \"Check HEARTBEAT.md monitors; HEARTBEAT_OK if nothing.\"\ndisk-agent cron add weekly \"weekly\" \"Review MEMORY.md and suggest 3 cleanups.\"\n```\n\n## Telegram security\n\nDefault DM policy is **`pairing`**:\n\n- Unknown users get a short-lived code\n- You approve with `disk-agent pair <code>` on the host\n- First paired user becomes `ownerId` if unset\n\n```yaml\ntelegram:\n  enabled: true\n  dmPolicy: pairing   # pairing | allowlist | owner_only | open\n  allowFrom: []\n  ownerId: \"123456789\"\n  groupsRequireMention: true\n```\n\n**Do not use `open` on a public bot.**\n\n## Configuration\n\nPrimary file: `~/.disk-agent/config.yaml` (created by `setup`).\n\n```yaml\nagentName: Disk\ncwd: /home/you/code          # coding tools working directory\nmodel:\n  provider: supergrok\n  id: grok-4.5\n  thinking: medium\ntelegram:\n  enabled: true\n  dmPolicy: pairing\ncron:\n  enabled: true\n  heartbeat:\n    enabled: true\n    everyMinutes: 30\n    quietHours: { start: 23, end: 8 }\nbrowser:\n  enabled: true\n  headless: true\nmemory:\n  enabled: true\n  dailyLogDays: 2\nlogging:\n  level: info\n```\n\nEnvironment overrides: `TELEGRAM_BOT_TOKEN`, `DISK_AGENT_OWNER_ID`, `DISK_AGENT_MODEL`, `DISK_AGENT_PROVIDER`, `DISK_AGENT_HOME`, `DISK_AGENT_WORKSPACE`, `DISK_AGENT_CWD`, `XAI_API_KEY`, plus other provider API keys.\n\n### Telegram voice messages\n\nVoice notes (and optional audio files) are downloaded, transcribed with Whisper, and sent to the agent as text.\n\n| Setting | Default | Notes |\n|---------|---------|--------|\n| `voice.enabled` | `true` | Set `false` to reject voice notes |\n| `voice.provider` | `auto` | `auto` picks OpenAI if `OPENAI_API_KEY` is set, else Groq if `GROQ_API_KEY`, else download-only |\n| `voice.model` | provider default | OpenAI: `whisper-1`; Groq: `whisper-large-v3-turbo` |\n| `voice.language` | unset | Optional ISO-639-1 hint (`en`, `es`, …) |\n| `voice.includeAudio` | `true` | Also process Telegram audio *file* messages |\n\n```bash\n# ~/.disk-agent/.env — pick one:\nOPENAI_API_KEY=sk-...\n# or free-tier Whisper:\nGROQ_API_KEY=gsk_...\n```\n\nRestart the gateway after changing env: `disk-agent gateway restart`.\n\n## Agent tools\n\nBuilt-in (Pi): `read`, `bash`, `edit`, `write`, `grep`, `find`, `ls`\n\n| Extra tool | Purpose |\n|------------|---------|\n| `memory_save` / `memory_search` / `memory_log` / `memory_delete` | Long-term + daily memory |\n| `cron_list` / `cron_add` / `cron_remove` / `cron_run` | Scheduler |\n| `web_search` | Tavily web search (`TAVILY_API_KEY`) |\n| `web_fetch` | Tavily extract from URLs |\n| `web_get` | Fetch URL → text (plain HTTP) |\n| `browser_open` / `snapshot` / `click` / `fill` / `screenshot` | Browser automation |\n| `session_list` / `session_reset` / `session_resume` | Session management (list, archive, resume) |\n| `skill_list` / `skill_load` / `skill_create` / … | Skills |\n\n## Library usage\n\n```ts\nimport { bootstrapHome, Gateway, runSetup } from \"@amanm/disk-agent\";\n\n// Programmatic setup (same as CLI)\nawait runSetup({ yes: true, skipLogin: true });\n\nconst cfg = bootstrapHome();\nconst gw = new Gateway(cfg);\nawait gw.start();\n```\n\n## Development\n\n```bash\nnpm run dev -- status\nnpm run gateway\nnpm run typecheck\nnpm run build\nnpm test\n```\n\n## Design notes\n\n1. **Gateway as control plane** — channels never call the LLM directly; everything is normalized → queued per session → agent loop → deliver.\n2. **Markdown memory** — sessions end, files persist (OpenClaw). Structured facts add search without a vector DB.\n3. **Heartbeat** — proactive loop with `HEARTBEAT_OK` suppression so you are not spammed.\n4. **Pi as the hands** — we embed `createAgentSession` rather than reimplementing a coding agent.\n5. **Pairing by default** — remote chat access is gated until you approve on the host.\n6. **One home tree** — config, workspace, skills, sessions, and logs share a standardized directory.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}