{"_id":"@clawdreyhepburn/openclaw-ovid","_rev":"10-0cf7ca117d0c6ac144d764333245feee","name":"@clawdreyhepburn/openclaw-ovid","dist-tags":{"latest":"0.2.3"},"versions":{"0.1.0":{"name":"@clawdreyhepburn/openclaw-ovid","version":"0.1.0","license":"Apache-2.0","_id":"@clawdreyhepburn/openclaw-ovid@0.1.0","maintainers":[{"name":"clawdreyhepburn","email":"clawdrey.hepburn@engageidentity.com"}],"homepage":"https://github.com/clawdreyhepburn/openclaw-ovid#readme","bugs":{"url":"https://github.com/clawdreyhepburn/openclaw-ovid/issues"},"dist":{"shasum":"2ead977c546e6672292429d7755f2f2222154c14","tarball":"https://registry.npmjs.org/@clawdreyhepburn/openclaw-ovid/-/openclaw-ovid-0.1.0.tgz","fileCount":6,"integrity":"sha512-bNucT2suW4QcXPEVbeXkU3BXtQDq0b354GYLM/HMQ5xVW4YsdNuTPS6A2vs77t0bF5yeuzJ+C89/3wbHnSKUaw==","signatures":[{"sig":"MEYCIQDMbLIzqymS34nVcg2ZqbCgv/TG5ROrhepdpIlAn8MzowIhAMEsmigyNXVP+/ezoituZeS3rZs4AElDpFN+gXJDmzmk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12635},"main":"src/index.ts","type":"module","gitHead":"b9f4858f0eeaae3c2f479b75c9ba638712daa2c0","_npmUser":{"name":"clawdreyhepburn","email":"clawdrey.hepburn@engageidentity.com"},"repository":{"url":"git+https://github.com/clawdreyhepburn/openclaw-ovid.git","type":"git"},"_npmVersion":"10.9.4","description":"OpenClaw plugin for OVID agent identity","directories":{},"_nodeVersion":"22.22.0","dependencies":{"@clawdreyhepburn/ovid":">=0.2.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.2","@types/node":"^25.5.0"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-ovid_0.1.0_1774309810704_0.05905218351294428","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@clawdreyhepburn/openclaw-ovid","version":"0.1.1","license":"Apache-2.0","_id":"@clawdreyhepburn/openclaw-ovid@0.1.1","maintainers":[{"name":"clawdreyhepburn","email":"clawdrey.hepburn@engageidentity.com"}],"homepage":"https://github.com/clawdreyhepburn/openclaw-ovid#readme","bugs":{"url":"https://github.com/clawdreyhepburn/openclaw-ovid/issues"},"dist":{"shasum":"8f9fcad8164de8815f2842daab73d17fe12162a8","tarball":"https://registry.npmjs.org/@clawdreyhepburn/openclaw-ovid/-/openclaw-ovid-0.1.1.tgz","fileCount":6,"integrity":"sha512-vNriuUqyRFIv91tM069wLSeeeu28o+KI7W14pL6Z8+I3z7QiQhM9KFEFJu+XpjnwG6+rs9MaoHB2AqSRYmU+nw==","signatures":[{"sig":"MEUCIH0TZG6D0rt+snrIrYV3Z/Cl8cv3neGnVh7WY5k1we8qAiEA/iEd0TnBJS30TZiCjXzGPRMxPT73Knmo8vuKmF1Fwfw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12793},"main":"src/index.ts","type":"module","gitHead":"6808488aaf4e50565ff640bceb3a172f8bd00ad1","_npmUser":{"name":"clawdreyhepburn","email":"clawdrey.hepburn@engageidentity.com"},"repository":{"url":"git+https://github.com/clawdreyhepburn/openclaw-ovid.git","type":"git"},"_npmVersion":"10.9.4","description":"OpenClaw plugin for OVID agent identity","directories":{},"_nodeVersion":"22.22.0","dependencies":{"@clawdreyhepburn/ovid":">=0.2.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.2","@types/node":"^25.5.0"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-ovid_0.1.1_1774312014034_0.10456131422688109","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@clawdreyhepburn/openclaw-ovid","version":"0.1.2","license":"Apache-2.0","_id":"@clawdreyhepburn/openclaw-ovid@0.1.2","maintainers":[{"name":"clawdreyhepburn","email":"clawdrey.hepburn@engageidentity.com"}],"homepage":"https://github.com/clawdreyhepburn/openclaw-ovid#readme","bugs":{"url":"https://github.com/clawdreyhepburn/openclaw-ovid/issues"},"dist":{"shasum":"3f7b4af1f398778a3669e1a027ce7505b1a41d25","tarball":"https://registry.npmjs.org/@clawdreyhepburn/openclaw-ovid/-/openclaw-ovid-0.1.2.tgz","fileCount":9,"integrity":"sha512-U1NzjIylQuvBKkJwVurrMU8J0ywmBbsosb6ZK3tEAJBlx9+VLnzC8BERNNhMkNTI7eerr+Vu4k5Bf8ieUoSxpA==","signatures":[{"sig":"MEQCIGsyhMSQMhOhq2AeAmic62rNsJ1AM3/0nX+A2kaY/CctAiAwrYGYIadWRDTjeQBYSVLtVNgBRruoQb4/5tZ+6OTrkA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44516},"main":"src/index.ts","type":"module","gitHead":"5a2cdebb27b76036f7227352951af92f83887375","_npmUser":{"name":"clawdreyhepburn","email":"clawdrey.hepburn@engageidentity.com"},"openclaw":{"extensions":["./src/index.ts"]},"repository":{"url":"git+https://github.com/clawdreyhepburn/openclaw-ovid.git","type":"git"},"_npmVersion":"10.9.4","description":"OpenClaw plugin for OVID agent identity","directories":{},"_nodeVersion":"22.22.0","dependencies":{"@clawdreyhepburn/ovid":">=0.2.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.2","@types/node":"^25.5.0"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-ovid_0.1.2_1774381498011_0.24228983842740393","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@clawdreyhepburn/openclaw-ovid","version":"0.1.3","license":"Apache-2.0","_id":"@clawdreyhepburn/openclaw-ovid@0.1.3","maintainers":[{"name":"clawdreyhepburn","email":"clawdrey.hepburn@engageidentity.com"}],"homepage":"https://github.com/clawdreyhepburn/openclaw-ovid#readme","bugs":{"url":"https://github.com/clawdreyhepburn/openclaw-ovid/issues"},"dist":{"shasum":"cf69bb6d288140b908cdee7099252cb476b3a300","tarball":"https://registry.npmjs.org/@clawdreyhepburn/openclaw-ovid/-/openclaw-ovid-0.1.3.tgz","fileCount":9,"integrity":"sha512-dkh42LXZMU0fwFEXjkiqFIZ8jPaXORZbRAqVR9jl8EuF+uBEYYm1K1kkQuPi+Ve3DTBHPOZsXA+MjvXwq0bRJg==","signatures":[{"sig":"MEYCIQCG3GJr88WIypWdEMLfMQXCJIJEjheCRnYNPWp33Eeu0gIhAKvoBnCmDlLZveeLgsP4u4Pv8CEJbUbiZHpmRcS0u6Du","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44525},"main":"src/index.ts","type":"module","gitHead":"19127408cd84ad49715ddad3490c415be3d55e68","_npmUser":{"name":"clawdreyhepburn","email":"clawdrey.hepburn@engageidentity.com"},"openclaw":{"extensions":["./src/index.ts"]},"repository":{"url":"git+https://github.com/clawdreyhepburn/openclaw-ovid.git","type":"git"},"_npmVersion":"10.9.4","description":"OpenClaw plugin for OVID agent identity","directories":{},"_nodeVersion":"22.22.0","dependencies":{"@clawdreyhepburn/ovid":">=0.2.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.2","@types/node":"^25.5.0"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-ovid_0.1.3_1774381618543_0.6829208342051258","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@clawdreyhepburn/openclaw-ovid","version":"0.1.4","license":"Apache-2.0","_id":"@clawdreyhepburn/openclaw-ovid@0.1.4","maintainers":[{"name":"clawdreyhepburn","email":"clawdrey.hepburn@engageidentity.com"}],"homepage":"https://github.com/clawdreyhepburn/openclaw-ovid#readme","bugs":{"url":"https://github.com/clawdreyhepburn/openclaw-ovid/issues"},"dist":{"shasum":"a5efe9c57ed217e31d05554a7ba52e81fe46b07f","tarball":"https://registry.npmjs.org/@clawdreyhepburn/openclaw-ovid/-/openclaw-ovid-0.1.4.tgz","fileCount":9,"integrity":"sha512-smscDdzWdGaHzmkBquw62Gb4kriFbTCEqWMNjx1QV3TWhHM2JEmCMM7cCqJp34vpmQVuqeay0IYRUPwyj1nbvA==","signatures":[{"sig":"MEUCIQCv/B9dKPOdiZVVi7Zi4cvIDW+oNp3GP7zhadWZg3xUxAIgKd3mt4wEIgQ0FKiDv6KdRmBapiuMFVjzssUZe4D83JM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44534},"main":"src/index.ts","type":"module","gitHead":"970777311141b74edb7bb6d239a6f886339e74d3","_npmUser":{"name":"clawdreyhepburn","email":"clawdrey.hepburn@engageidentity.com"},"openclaw":{"extensions":["./src/index.ts"]},"repository":{"url":"git+https://github.com/clawdreyhepburn/openclaw-ovid.git","type":"git"},"_npmVersion":"10.9.4","description":"OpenClaw plugin for OVID agent identity","directories":{},"_nodeVersion":"22.22.0","dependencies":{"@clawdreyhepburn/ovid":">=0.2.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.2","@types/node":"^25.5.0"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-ovid_0.1.4_1774381891604_0.363278446980535","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@clawdreyhepburn/openclaw-ovid","version":"0.1.5","license":"Apache-2.0","_id":"@clawdreyhepburn/openclaw-ovid@0.1.5","maintainers":[{"name":"clawdreyhepburn","email":"clawdrey.hepburn@engageidentity.com"}],"homepage":"https://github.com/clawdreyhepburn/openclaw-ovid#readme","bugs":{"url":"https://github.com/clawdreyhepburn/openclaw-ovid/issues"},"dist":{"shasum":"2fdec21f5f50511ba4794647492dd035e6adfa99","tarball":"https://registry.npmjs.org/@clawdreyhepburn/openclaw-ovid/-/openclaw-ovid-0.1.5.tgz","fileCount":9,"integrity":"sha512-3e55990iVPt3f0KQkHR8izyLXd1BOw4HuCuYMqFdaUigcjkY3LlWXP9zh19PgviM6LvFF6enBf2cquAp1j9XoQ==","signatures":[{"sig":"MEUCIDnGYGojzJPiq90UGdQqYEpfI6QQo0AREdVRanaCgMzEAiEAgYWcJJ0MZIJYwhW/94Qs+01W/eZlJJvhuvgEBWkLJ9g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44446},"main":"src/index.ts","type":"module","gitHead":"c4517f2a58f497b41918c1b29fd9a9e1f98869d0","_npmUser":{"name":"clawdreyhepburn","email":"clawdrey.hepburn@engageidentity.com"},"openclaw":{"extensions":["./src/index.ts"]},"repository":{"url":"git+https://github.com/clawdreyhepburn/openclaw-ovid.git","type":"git"},"_npmVersion":"10.9.4","description":"OpenClaw plugin for OVID agent identity","directories":{},"_nodeVersion":"22.22.0","dependencies":{"jose":"^6.0.0","@clawdreyhepburn/ovid":">=0.2.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.2","@types/node":"^25.5.0"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-ovid_0.1.5_1774382159762_0.1349685487382506","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@clawdreyhepburn/openclaw-ovid","version":"0.2.0","license":"Apache-2.0","_id":"@clawdreyhepburn/openclaw-ovid@0.2.0","maintainers":[{"name":"clawdreyhepburn","email":"clawdrey.hepburn@engageidentity.com"}],"homepage":"https://github.com/clawdreyhepburn/openclaw-ovid#readme","bugs":{"url":"https://github.com/clawdreyhepburn/openclaw-ovid/issues"},"dist":{"shasum":"310f599726f7fee1ce82536bca7cd6971acc8568","tarball":"https://registry.npmjs.org/@clawdreyhepburn/openclaw-ovid/-/openclaw-ovid-0.2.0.tgz","fileCount":5,"integrity":"sha512-cEtw9NWn1EFWJp0CJjzK4CDOQwpfI6x4oXQaG4TXpnv0tiBioJhoqbMXCwbUS4Ix4iomdaz1KVZwchaz8UWVKw==","signatures":[{"sig":"MEUCIQCHGGV5XBNc1XnpK7oN1Da3EZn8Ombhzeo2N9pGjTjJQgIgAvUJRykQQ30F1vIwfE+TPKYIB45ylXt1Dx0JGWNTa/U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26282},"main":"src/index.ts","type":"module","gitHead":"fc169b9152ff00456ea29b20b72569b6ca451a3c","_npmUser":{"name":"clawdreyhepburn","email":"clawdrey.hepburn@engageidentity.com"},"openclaw":{"extensions":["./src/index.ts"]},"repository":{"url":"git+https://github.com/clawdreyhepburn/openclaw-ovid.git","type":"git"},"_npmVersion":"10.9.4","description":"OpenClaw plugin for OVID agent identity","directories":{},"_nodeVersion":"22.22.0","dependencies":{"jose":"^6.0.0","@clawdreyhepburn/ovid":"^0.4.1"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.2","@types/node":"^25.5.0"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-ovid_0.2.0_1783958661578_0.43684016957222904","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@clawdreyhepburn/openclaw-ovid","version":"0.2.1","license":"Apache-2.0","_id":"@clawdreyhepburn/openclaw-ovid@0.2.1","maintainers":[{"name":"clawdreyhepburn","email":"clawdrey.hepburn@engageidentity.com"}],"homepage":"https://github.com/clawdreyhepburn/openclaw-ovid#readme","bugs":{"url":"https://github.com/clawdreyhepburn/openclaw-ovid/issues"},"dist":{"shasum":"290ea43a92582f2655fbbf96cea5b6c3ba6f0111","tarball":"https://registry.npmjs.org/@clawdreyhepburn/openclaw-ovid/-/openclaw-ovid-0.2.1.tgz","fileCount":5,"integrity":"sha512-08vxM/TZ5F2zZaSnARWN3KQ48iwYd2Q5vcwMO8B8kfcCLBb9SO7TKowDidsw0asaq2OZTKfFdia38xofkkEvpg==","signatures":[{"sig":"MEYCIQD9ZiYnstXEm7HbbyUbKpGyYLyT4hNC7slpjSUpmTYnSAIhAN1oK6KKeQoBmzyBscHDqJgJ62gkWBJNHXWNzYr/T9C4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39168},"main":"src/index.ts","type":"module","gitHead":"a79eaf5025fb5c291f9da05aec811d176ce3cc5b","_npmUser":{"name":"clawdreyhepburn","email":"clawdrey.hepburn@engageidentity.com"},"openclaw":{"extensions":["./src/index.ts"]},"repository":{"url":"git+https://github.com/clawdreyhepburn/openclaw-ovid.git","type":"git"},"_npmVersion":"10.9.4","description":"OpenClaw plugin for OVID agent identity","directories":{},"_nodeVersion":"22.22.0","dependencies":{"jose":"^6.0.0","@clawdreyhepburn/ovid":"^0.4.2"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.2","@types/node":"^25.5.0"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-ovid_0.2.1_1783964723890_0.09593178542523861","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@clawdreyhepburn/openclaw-ovid","version":"0.2.2","license":"Apache-2.0","_id":"@clawdreyhepburn/openclaw-ovid@0.2.2","maintainers":[{"name":"clawdreyhepburn","email":"clawdrey.hepburn@engageidentity.com"}],"homepage":"https://github.com/clawdreyhepburn/openclaw-ovid#readme","bugs":{"url":"https://github.com/clawdreyhepburn/openclaw-ovid/issues"},"dist":{"shasum":"ce3f402084f099d8dd70826e1e084739665f2e04","tarball":"https://registry.npmjs.org/@clawdreyhepburn/openclaw-ovid/-/openclaw-ovid-0.2.2.tgz","fileCount":8,"integrity":"sha512-tGcKZ1vpitw3IzWAohtWDrE52Epld8N9UZeTp7FZtg0fXJ4M1WbGFMqg5bHM1Jg6Xj+s0yJx7iBxgNo/ElvCaA==","signatures":[{"sig":"MEYCIQD8gfxhcgNCizMLiO6GlZxsWtUeB/xVYnJjHNafK/tfIAIhAIcV4WsIccTYxGOFWM7YjUi0S8SPr3OZ/QAHaTI5WUaF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80838},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"34016aff77fb32c4a35c2373bb561b0628cfff6d","scripts":{"build":"tsc"},"_npmUser":{"name":"clawdreyhepburn","email":"clawdrey.hepburn@engageidentity.com"},"openclaw":{"extensions":["./src/index.ts"]},"repository":{"url":"git+https://github.com/clawdreyhepburn/openclaw-ovid.git","type":"git"},"_npmVersion":"10.9.4","description":"OpenClaw plugin for OVID agent identity","directories":{},"_nodeVersion":"22.22.0","dependencies":{"jose":"^6.0.0","@clawdreyhepburn/ovid":"^0.4.2"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-ovid_0.2.2_1783966926277_0.30885675693306225","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@clawdreyhepburn/openclaw-ovid","version":"0.2.3","description":"OpenClaw plugin for OVID agent identity","type":"module","main":"dist/index.js","scripts":{"build":"tsc"},"dependencies":{"@clawdreyhepburn/ovid":"^0.4.3","jose":"^6.0.0"},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/clawdreyhepburn/openclaw-ovid.git"},"devDependencies":{"@types/node":"^22.0.0","typescript":"^5.7.0"},"openclaw":{"extensions":["./src/index.ts"]},"_id":"@clawdreyhepburn/openclaw-ovid@0.2.3","gitHead":"a1350411f68f8f24a021c9f9a5400877dc69587f","types":"./dist/index.d.ts","bugs":{"url":"https://github.com/clawdreyhepburn/openclaw-ovid/issues"},"homepage":"https://github.com/clawdreyhepburn/openclaw-ovid#readme","_nodeVersion":"22.22.0","_npmVersion":"10.9.4","dist":{"integrity":"sha512-G/DDTyIlczAjdyWyA/GRQYmwB1thE8qnRCxut7ddGGdIvONdJ1bkzML15KcmBYOMxHAsYTDMfc7353e8hkVX1g==","shasum":"13cf5b87bfe0fa998ef8a8a3842291a8ccd92e95","tarball":"https://registry.npmjs.org/@clawdreyhepburn/openclaw-ovid/-/openclaw-ovid-0.2.3.tgz","fileCount":8,"unpackedSize":81504,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIGUwUsS3FGRPUoju8aeAIJhHi+bVjMC18OYp17gP3StkAiEA4dOPjsjJ5fu+b9NKyAyYOk6tiZ/0fn0CjDtqzom+4RU="}]},"_npmUser":{"name":"clawdreyhepburn","email":"clawdrey.hepburn@engageidentity.com"},"directories":{},"maintainers":[{"name":"clawdreyhepburn","email":"clawdrey.hepburn@engageidentity.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/openclaw-ovid_0.2.3_1784571290969_0.5971249397876122"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-23T23:50:10.649Z","modified":"2026-07-20T18:14:51.275Z","0.1.0":"2026-03-23T23:50:10.841Z","0.1.1":"2026-03-24T00:26:54.178Z","0.1.2":"2026-03-24T19:44:58.171Z","0.1.3":"2026-03-24T19:46:58.699Z","0.1.4":"2026-03-24T19:51:31.767Z","0.1.5":"2026-03-24T19:55:59.909Z","0.2.0":"2026-07-13T16:04:21.763Z","0.2.1":"2026-07-13T17:45:24.041Z","0.2.2":"2026-07-13T18:22:06.447Z","0.2.3":"2026-07-20T18:14:51.112Z"},"bugs":{"url":"https://github.com/clawdreyhepburn/openclaw-ovid/issues"},"license":"Apache-2.0","homepage":"https://github.com/clawdreyhepburn/openclaw-ovid#readme","repository":{"type":"git","url":"git+https://github.com/clawdreyhepburn/openclaw-ovid.git"},"description":"OpenClaw plugin for OVID agent identity","maintainers":[{"name":"clawdreyhepburn","email":"clawdrey.hepburn@engageidentity.com"}],"readme":"# @clawdreyhepburn/openclaw-ovid\n\n**Give every AI sub-agent its own ID badge — automatically.**\n\nThis is a plugin for [OpenClaw](https://github.com/openclaw/openclaw) (an AI agent runtime). You install it once, and from then on every time your AI assistant spawns a helper (\"sub-agent\") to go do some task, this plugin quietly stamps that helper with a tamper-proof identity document. No code changes to your agent. It just happens.\n\nIf that sentence raised questions, the rest of this README explains it from scratch. **You do not need any security or identity background to follow along.**\n\n---\n\n## Table of contents\n\n- [Why would I want this?](#why-would-i-want-this)\n- [The core idea in one picture](#the-core-idea-in-one-picture)\n- [What this plugin actually does](#what-this-plugin-actually-does)\n- [Install](#install)\n- [Your first mandate (the important part)](#your-first-mandate-the-important-part)\n- [Worked example](#worked-example)\n- [Configuration](#configuration)\n- [Command-line tools](#command-line-tools)\n- [What this plugin does NOT do](#what-this-plugin-does-not-do)\n- [How it fits with its sibling plugins](#how-it-fits-with-its-sibling-plugins)\n- [FAQ](#faq)\n\n---\n\n## Why would I want this?\n\nModern AI assistants don't do everything themselves. When you give one a big job, it often **spawns smaller helper agents** to split up the work — one to read your files, one to search the web, one to run a command. This is like a manager delegating to a team.\n\nHere's the problem: **by default, every helper inherits the full power of the thing that created it.**\n\nImagine you hire a contractor to paint one room, and instead of a key to that room, you hand them the keys to your entire house, your car, and your bank account — \"just in case.\" That's how AI sub-agents work out of the box. A helper spawned only to *summarize a document* technically also has the power to *delete files*, *send emails*, or *run any command* — because it inherited all of it.\n\nMost of the time nothing goes wrong. But \"most of the time\" is not a security model. If a helper gets confused, or reads a malicious instruction hidden in a web page, or simply misbehaves, it can do far more damage than its actual job ever required.\n\n**This plugin fixes that by giving each helper a specific, limited, verifiable set of permissions — and nothing more.**\n\n---\n\n## The core idea in one picture\n\n```\n        YOU (the human — the ultimate source of authority)\n         │\n         │  you run an AI assistant\n         ▼\n   ┌──────────────────┐\n   │  Main assistant  │   has broad power (that's fine — you supervise it)\n   └────────┬─────────┘\n            │  spawns a helper to \"summarize report.pdf\"\n            │\n            │  ← this plugin steps in HERE, automatically\n            │     and stamps the helper with an ID badge that says:\n            │        \"may READ files. may not do anything else.\"\n            ▼\n   ┌──────────────────┐\n   │  Helper agent    │   can ONLY read. If it tries to delete a file\n   │  (sub-agent)     │   or send an email, that's off-badge.\n   └──────────────────┘\n```\n\nThe \"ID badge\" is a small, cryptographically signed digital document. It records:\n\n- **Who** this helper is,\n- **Who created it** (traceable all the way back to you),\n- **What it is allowed to do** (its \"mandate\"),\n- **When it expires** (badges are temporary).\n\nBecause the badge is signed with unforgeable digital math (the same kind of cryptography that secures websites), nobody can counterfeit one or tamper with it.\n\n---\n\n## What this plugin actually does\n\nConcretely, once installed, this plugin hooks into one moment: **the instant your assistant spawns a sub-agent.** At that moment it:\n\n1. **Mints an identity document** (we call it an **OVID** — think of it as the ID badge) for the new helper.\n2. **Attaches the helper's list of allowed actions** (its **mandate** — the rules printed on the badge) to that document.\n3. **Signs it** so it can't be forged, and **links it** to the badge of whoever spawned it, forming a traceable chain back to you.\n4. **Hands the badge to the helper** as part of its starting instructions.\n\nIt also gives you three manual tools (`ovid_mint`, `ovid_verify`, `ovid_inspect`) if you ever want to create or examine a badge by hand.\n\n**Important:** on its own, this plugin *issues* badges but does not *check* them at every action. Issuing the badge and enforcing the badge are deliberately two separate jobs (like a company that has one department print ID cards and a separate security desk that checks them at the door). The checking is done by its sibling plugin, [`@clawdreyhepburn/openclaw-ovid-me`](https://github.com/clawdreyhepburn/openclaw-ovid-me). You'll usually install both. See [How it fits](#how-it-fits-with-its-sibling-plugins).\n\n---\n\n## Install\n\n```bash\nopenclaw plugins install @clawdreyhepburn/openclaw-ovid\n```\n\nThat's it — OpenClaw picks the plugin up automatically. To also *enforce* the badges (recommended), install the companion:\n\n```bash\nopenclaw plugins install @clawdreyhepburn/openclaw-ovid-me\n```\n\nThe very first time it runs, the plugin generates a cryptographic keypair (the private \"signing pen\" that stamps badges) and stores it under `~/.ovid/keys/`. This happens once and is reused. Keep that folder private — it's the root of trust for every badge you issue.\n\n---\n\n## Your first mandate (the important part)\n\nA **mandate** is just the list of things a helper is allowed to do. If you don't specify one, the plugin gives the helper a safe, narrow default: *read, search, and summarize only.*\n\nTo grant a helper *more* (or *different*) permissions, you write the rules directly into the task you hand it, wrapped in a special marker:\n\n```\n[OVID_MANDATE]\npermit(principal, action in [Ovid::Action::\"read\", Ovid::Action::\"write\"], resource);\n[/OVID_MANDATE]\n```\n\nThat block says: *\"this helper may read and write, and nothing else.\"* The plugin reads the block, bakes those rules into the helper's badge, and **removes the block from the task text** before the helper sees it (so the helper just gets a clean task).\n\nThe rules are written in **Cedar**, a small, plain-looking permission language created by Amazon. You don't need to learn much. The pattern is almost always:\n\n```\npermit(principal, action in [Ovid::Action::\"<verb>\", ...], resource);\n```\n\nCommon verbs: `read`, `search`, `write`, `exec` (run commands), `summarize`. So:\n\n| You want the helper to… | Put this in the `[OVID_MANDATE]` block |\n|---|---|\n| Only read, search, and summarize (the default) | *(omit the block — you get this for free)* |\n| Read and write files | `permit(principal, action in [Ovid::Action::\"read\", Ovid::Action::\"write\"], resource);` |\n| Read and run commands | `permit(principal, action in [Ovid::Action::\"read\", Ovid::Action::\"exec\"], resource);` |\n| Do anything (use sparingly!) | `permit(principal, action, resource);` |\n\n> **Why put it in the task text instead of a settings field?** Because the \"spawn a helper\" tool doesn't have a permissions field to fill in — the task description is the one channel that reliably reaches the plugin. It also keeps the permission grant right next to the job description, where it's easy to review. This is a deliberate design choice: **permissions are attached per task, not assigned as fixed \"roles.\"** Every delegation is its own explicit, minimal grant.\n\nYou can optionally also set a custom expiry with `[OVID_TTL:3600]` (seconds) somewhere in the task; otherwise the default lifetime applies.\n\n---\n\n## Worked example\n\nSuppose your main assistant is asked to \"clean up the logs folder.\" It decides to spawn a helper. In the helper's task, your assistant (or you, in its instructions) includes:\n\n```\n[OVID_MANDATE]\npermit(principal, action in [Ovid::Action::\"read\", Ovid::Action::\"exec\"], resource);\n[/OVID_MANDATE]\nDelete every *.log file in ./logs older than 30 days.\n```\n\nWhat happens behind the scenes:\n\n```\n1. Assistant calls \"spawn helper\" with the task above.\n2. This plugin intercepts the spawn:\n      • reads the [OVID_MANDATE] block → \"read + exec allowed\"\n      • mints a signed badge with exactly those two permissions\n      • strips the block out\n      • gives the helper the clean task: \"Delete every *.log file…\"\n        plus its badge.\n3. Helper starts work. Its badge now travels with it.\n4. When the helper tries to RUN a delete command, the companion\n   enforcement plugin checks the badge: \"exec allowed? yes.\" → proceeds.\n5. If that helper tried to, say, SEND AN EMAIL, the badge says\n   nothing about email → the enforcement plugin flags/blocks it.\n```\n\nYou get delegation that *narrows* power at each step instead of copying it wholesale.\n\n---\n\n## Configuration\n\nYou normally don't need to configure anything. If you want to, these are the settings (shown with their defaults):\n\n| Setting | Default | What it means |\n|---|---|---|\n| `keyDir` | `~/.ovid/keys/` | Where the signing keypair is stored. |\n| `defaultTtl` | `1800` (30 min) | How long a badge lasts if no `[OVID_TTL]` is given. |\n| `maxTtl` | `86400` (24 h) | Hard ceiling on badge lifetime. |\n| `maxChainDepth` | `5` | How many levels of \"helper spawns a helper spawns a helper…\" are allowed. (In today's OpenClaw, spawned helpers usually can't spawn their *own* helpers, so most installs never go past the first level — this is a safety ceiling for future nested delegation.) |\n| `defaultMandate` | read/search/summarize | The permissions a helper gets when no `[OVID_MANDATE]` block is provided. |\n| `autoMint` | `true` | Whether to automatically badge every spawned helper. Turn off to only mint badges manually. |\n\n---\n\n## Command-line tools\n\n```bash\nopenclaw ovid status   # Show whether your signing keypair exists and its fingerprint\nopenclaw ovid keygen   # Generate (or regenerate) the signing keypair\n```\n\nAnd three tools your assistant can call directly:\n\n- **`ovid_mint`** — create a badge for a given set of permissions.\n- **`ovid_verify`** — check that a badge is genuine, unexpired, and traceable to you.\n- **`ovid_inspect`** — decode and pretty-print a badge's contents (without verifying it), handy for debugging.\n\n---\n\n## What this plugin does NOT do\n\n- **It does not block anything by itself.** It issues badges. Checking a badge on every action and denying off-badge actions is the job of the companion plugin, [openclaw-ovid-me](https://github.com/clawdreyhepburn/openclaw-ovid-me). Install both for real protection.\n- **It does not decide your organization's overall rules.** A separate project, [Carapace](https://github.com/clawdreyhepburn/carapace), lets *you the human* set an absolute ceiling (\"no agent, ever, may run `rm`\") that no badge can override.\n- **It is not a login system for humans.** It's about the identities of automated AI helpers, not people.\n\n---\n\n## How it fits with its sibling plugins\n\nThink of a secure building:\n\n```\n   Carapace                openclaw-ovid            openclaw-ovid-me\n   (this is the       →    (this plugin —      →    (the security desk —\n    building's rules:       the badge printer:       checks every badge\n    what's allowed at       stamps each helper        at every door and\n    all, set by YOU)        with its permissions)     stops off-badge moves)\n```\n\n- **[Carapace](https://github.com/clawdreyhepburn/carapace)** — the building's master rulebook. The absolute limits you set as the human.\n- **openclaw-ovid** *(you are here)* — the badge printer. Issues each helper a signed, limited ID.\n- **[openclaw-ovid-me](https://github.com/clawdreyhepburn/openclaw-ovid-me)** — the security desk. Reads each badge and actually allows or denies each action.\n\nThe two OVID plugins are usually installed together. This one gives helpers their identity and permissions; the other enforces them.\n\nFor the underlying identity technology (the badge format, the signing and chain-of-trust math), see the library this plugin is built on: **[@clawdreyhepburn/ovid](https://github.com/clawdreyhepburn/ovid)**.\n\n---\n\n## FAQ\n\n**Do I have to write Cedar policies to use this?**\nNo. Out of the box, helpers get safe read, search, and summarize permissions automatically. You only write a mandate when you want to grant *more* than that.\n\n**What happens if I install this but not the enforcement plugin?**\nBadges get issued but nothing checks them, so behavior is unchanged — you just have a nice audit trail of who was spawned with what permissions. Install [openclaw-ovid-me](https://github.com/clawdreyhepburn/openclaw-ovid-me) to make the badges actually restrict behavior.\n\n**Is my signing key ever sent anywhere?**\nNo. It's generated and stays on your machine in `~/.ovid/keys/`. Badges are signed locally. Nothing phones home.\n\n**A badge expired mid-task — is that bad?**\nBadges are deliberately short-lived (default 30 minutes) so a leaked or forgotten one can't be abused forever. For longer jobs, set a longer `[OVID_TTL:...]` or raise `defaultTtl`.\n\n**\"OVID\" stands for what?**\n**O**penClaw **V**erifiable **I**dentity **D**ocument. It's just our name for the signed ID badge.\n\n---\n\n## License\n\nCopyright 2026 Clawdrey Hepburn LLC. Licensed under [Apache-2.0](LICENSE).\n","readmeFilename":"README.md"}