{"_id":"@anyray/openclaw-plugin","_rev":"5-30d08ef5dd862358f14ec22eda92ece5","name":"@anyray/openclaw-plugin","dist-tags":{"latest":"0.3.1"},"versions":{"0.1.0":{"name":"@anyray/openclaw-plugin","version":"0.1.0","keywords":["openclaw","openclaw-plugin","anyray","llm","gateway","prompt-caching","observability"],"author":{"name":"Anyray"},"license":"MIT","_id":"@anyray/openclaw-plugin@0.1.0","maintainers":[{"name":"0xdeantech","email":"dean@othentic.xyz"}],"homepage":"https://docs.anyray.ai/integrations/openclaw","bugs":{"url":"https://github.com/anyrayHQ/openclaw-plugin/issues"},"dist":{"shasum":"bdd30e8e6e8cdf714c84db6c9623e4930ed761fe","tarball":"https://registry.npmjs.org/@anyray/openclaw-plugin/-/openclaw-plugin-0.1.0.tgz","fileCount":12,"integrity":"sha512-MXw/v2oiehEotI+/uuJSr0Tp83vdBhttrRTawtKti14qFIcSxLrgF4Pu0IoeOyI1gsSolgbQ/SXjpF1T+wZKDw==","signatures":[{"sig":"MEUCIERxm/WEEK3prm+vufgAQcDjpe77SgNcj2vs326fmudKAiEA0Qhtxurq2otUBJp5q7GN04Vm+4Rk1X1i7affXGJVUN4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32894},"main":"./src/index.ts","type":"module","gitHead":"0e2b1c1b1c231bcec570d101d939990f196e8865","scripts":{"test":"node --test --import tsx 'src/*.test.ts'","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"0xdeantech","email":"dean@othentic.xyz"},"openclaw":{"compat":{"minGatewayVersion":"2026.7.1"},"extensions":["./src/index.ts"]},"repository":{"url":"git+https://github.com/anyrayHQ/openclaw-plugin.git","type":"git"},"_npmVersion":"10.9.4","description":"OpenClaw provider plugin for the Anyray gateway — per-session identity, content-free attribution, and cache-safe defaults on every model call.","directories":{},"_nodeVersion":"22.22.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.5","typescript":"^5.6.3","@types/node":"^22.10.2"},"peerDependencies":{"openclaw":">=2026.7.1"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-plugin_0.1.0_1786918211672_0.9039553682938666","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@anyray/openclaw-plugin","version":"0.1.1","keywords":["openclaw","openclaw-plugin","anyray","llm","gateway","prompt-caching","observability"],"author":{"name":"Anyray"},"license":"MIT","_id":"@anyray/openclaw-plugin@0.1.1","maintainers":[{"name":"0xdeantech","email":"dean@othentic.xyz"}],"homepage":"https://docs.anyray.ai/integrations/openclaw","bugs":{"url":"https://github.com/anyrayHQ/openclaw-plugin/issues"},"dist":{"shasum":"c93f4f4b06bec11e922629a11d597b16df6e1335","tarball":"https://registry.npmjs.org/@anyray/openclaw-plugin/-/openclaw-plugin-0.1.1.tgz","fileCount":12,"integrity":"sha512-qeWXmMZT8lOvASF/6SuCPVZqlpN8PAtrwDEcaN+Urt6kJdRq3dirftSLFSYn958TXGk8O5wk60EUW6lr4uWHHA==","signatures":[{"sig":"MEQCIC1rEsPNNpbss/8zlw9mz6qFJdBl/iVra/h901LkR0vvAiBTfN8wc1hvm8UvtcWYA8lngVogRvhH6cDAiutDNQY6vA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@anyray%2fopenclaw-plugin@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":38535},"main":"./src/index.ts","type":"module","gitHead":"d3f03341acbaf70dd6a78dd9fc45b892831ab2cc","scripts":{"test":"node --test --import tsx 'src/*.test.ts'","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:db29171c-b4dc-4f26-ba24-5381bb61c160"}},"openclaw":{"compat":{"minGatewayVersion":"2026.7.1"},"extensions":["./src/index.ts"]},"repository":{"url":"git+https://github.com/anyrayHQ/openclaw-plugin.git","type":"git"},"_npmVersion":"11.5.1","description":"OpenClaw provider plugin for the Anyray gateway — per-session identity, content-free attribution, and cache-safe defaults on every model call.","directories":{},"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.5","typescript":"^5.6.3","@types/node":"^22.10.2"},"peerDependencies":{"openclaw":">=2026.7.1"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-plugin_0.1.1_1786958816394_0.06237311535258927","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@anyray/openclaw-plugin","version":"0.2.0","keywords":["openclaw","openclaw-plugin","anyray","llm","gateway","prompt-caching","observability"],"author":{"name":"Anyray"},"license":"MIT","_id":"@anyray/openclaw-plugin@0.2.0","maintainers":[{"name":"0xdeantech","email":"dean@othentic.xyz"}],"homepage":"https://docs.anyray.ai/integrations/openclaw","bugs":{"url":"https://github.com/anyrayHQ/openclaw-plugin/issues"},"dist":{"shasum":"fe1ed1744164a62889a2826de47dbabd24d373dc","tarball":"https://registry.npmjs.org/@anyray/openclaw-plugin/-/openclaw-plugin-0.2.0.tgz","fileCount":12,"integrity":"sha512-Ab7/WKz2M/L8l4eYpGWJn5iH/Ffy5RdP6bMhuJpwvxkb9RW60qk6dSjRo+ywoS+xhxfcceQTd8CCpkshZZlVCA==","signatures":[{"sig":"MEUCIHB3VG8OS/8a62DUk6EB3uiIQIEswAOq3+Jn6+4OCVFfAiEA09MUMcw+4+Hx1+e3o3clXhMPn7P4w4eyqL/RzxGoWzs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@anyray%2fopenclaw-plugin@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":42579},"main":"./src/index.ts","type":"module","gitHead":"6a151862a0e452a3555fc2f8ec226921c5dfd97f","scripts":{"test":"node --test --import tsx 'src/*.test.ts'","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:db29171c-b4dc-4f26-ba24-5381bb61c160"}},"openclaw":{"compat":{"minGatewayVersion":"2026.7.1"},"extensions":["./src/index.ts"]},"repository":{"url":"git+https://github.com/anyrayHQ/openclaw-plugin.git","type":"git"},"_npmVersion":"11.5.1","description":"OpenClaw provider plugin for the Anyray gateway — per-session identity, content-free attribution, and cache-safe defaults on every model call.","directories":{},"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.5","typescript":"^5.6.3","@types/node":"^22.10.2"},"peerDependencies":{"openclaw":">=2026.7.1"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-plugin_0.2.0_1787475817647_0.19577963162866974","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@anyray/openclaw-plugin","version":"0.3.0","keywords":["openclaw","openclaw-plugin","anyray","llm","gateway","prompt-caching","observability"],"author":{"name":"Anyray"},"license":"MIT","_id":"@anyray/openclaw-plugin@0.3.0","maintainers":[{"name":"0xdeantech","email":"dean@othentic.xyz"}],"homepage":"https://docs.anyray.ai/integrations/openclaw","bugs":{"url":"https://github.com/anyrayHQ/openclaw-plugin/issues"},"dist":{"shasum":"aa3f6d4a41be38d96d5ecdcc33ff6db1001e53b9","tarball":"https://registry.npmjs.org/@anyray/openclaw-plugin/-/openclaw-plugin-0.3.0.tgz","fileCount":12,"integrity":"sha512-YOYJfnvK3Iy/8bno6lbnGACFqmPY2HPZh3fC3YCbFmP06T5C1mgc/02K0QWceU0+7tFBRdCM1ty2fPpOGXVtog==","signatures":[{"sig":"MEYCIQDnYr2G1lSNcsmi5T+tNq9RsYIdvwsfHY2mek6zLbBdowIhAMF0JTD/s3CBND85rV/5r6pjJwM4VYn7/DMJEUwq+fTG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@anyray%2fopenclaw-plugin@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":45211},"main":"./src/index.ts","type":"module","gitHead":"03d19f8240953468a5af044b02e0cac71775c150","scripts":{"test":"node --test --import tsx 'src/*.test.ts'","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:db29171c-b4dc-4f26-ba24-5381bb61c160"}},"openclaw":{"compat":{"minGatewayVersion":"2026.7.1"},"extensions":["./src/index.ts"]},"repository":{"url":"git+https://github.com/anyrayHQ/openclaw-plugin.git","type":"git"},"_npmVersion":"11.5.1","description":"OpenClaw provider plugin for the Anyray gateway — per-session identity, content-free attribution, and cache-safe defaults on every model call.","directories":{},"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.5","typescript":"^5.6.3","@types/node":"^22.10.2"},"peerDependencies":{"openclaw":">=2026.7.1"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-plugin_0.3.0_1787808755892_0.9809949152261557","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@anyray/openclaw-plugin","version":"0.3.1","description":"OpenClaw provider plugin for the Anyray gateway — per-session identity, content-free attribution, and cache-safe defaults on every model call.","license":"MIT","author":{"name":"Anyray"},"homepage":"https://docs.anyray.ai/integrations/openclaw","repository":{"type":"git","url":"git+https://github.com/anyrayHQ/openclaw-plugin.git"},"bugs":{"url":"https://github.com/anyrayHQ/openclaw-plugin/issues"},"keywords":["openclaw","openclaw-plugin","anyray","llm","gateway","prompt-caching","observability"],"type":"module","main":"./src/index.ts","publishConfig":{"access":"public"},"scripts":{"build":"tsc -p tsconfig.json","test":"node --test --import tsx 'src/*.test.ts'"},"openclaw":{"extensions":["./src/index.ts"],"compat":{"minGatewayVersion":"2026.7.1"}},"peerDependencies":{"openclaw":">=2026.7.1"},"devDependencies":{"@types/node":"^22.10.2","tsx":"^4.23.5","typescript":"^5.6.3"},"_id":"@anyray/openclaw-plugin@0.3.1","gitHead":"689f3d0ba8e1a2e72b30309344d0cfef8b942574","_nodeVersion":"24.19.0","_npmVersion":"11.5.1","dist":{"integrity":"sha512-lEBVhONlJSBQfy5F6MHAfkdzbcnS8o94G/x6NOq6U3h0jlYy26FXkVkJJfTGF1S9dVdlhjp8gJG8N/sKLIqRvg==","shasum":"8dd67f2b19a614ef5e1baba940b88fb2db972cf6","tarball":"https://registry.npmjs.org/@anyray/openclaw-plugin/-/openclaw-plugin-0.3.1.tgz","fileCount":12,"unpackedSize":46933,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@anyray%2fopenclaw-plugin@0.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDxSyatdaj6VVnPpKjQk/1rMAR0Pf6cXYaEdBoVqInkQAIhALiDbeuWcUfYMix1qzsD4/vFhSV6ee5N72JFNj7nu0Dd"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:db29171c-b4dc-4f26-ba24-5381bb61c160"}},"directories":{},"maintainers":[{"name":"0xdeantech","email":"dean@othentic.xyz"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/openclaw-plugin_0.3.1_1788334370238_0.26535381677211056"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-16T22:10:11.496Z","modified":"2026-09-02T07:32:50.705Z","0.1.0":"2026-08-16T22:10:11.812Z","0.1.1":"2026-08-17T09:26:56.528Z","0.2.0":"2026-08-23T09:03:37.789Z","0.3.0":"2026-08-27T05:32:36.051Z","0.3.1":"2026-09-02T07:32:50.377Z"},"bugs":{"url":"https://github.com/anyrayHQ/openclaw-plugin/issues"},"author":{"name":"Anyray"},"license":"MIT","homepage":"https://docs.anyray.ai/integrations/openclaw","keywords":["openclaw","openclaw-plugin","anyray","llm","gateway","prompt-caching","observability"],"repository":{"type":"git","url":"git+https://github.com/anyrayHQ/openclaw-plugin.git"},"description":"OpenClaw provider plugin for the Anyray gateway — per-session identity, content-free attribution, and cache-safe defaults on every model call.","maintainers":[{"name":"0xdeantech","email":"dean@othentic.xyz"}],"readme":"# @anyray/openclaw-plugin\n\nRoute [OpenClaw](https://openclaw.ai)'s model calls through an [Anyray](https://anyray.ai)\ngateway.\n\nAnyray sits on the path of your LLM traffic and serves each request as cheaply as it can —\nprompt-cache stabilisation, context trimming, tool-schema compression — while attributing spend\nper user and team. This plugin is the OpenClaw side of that: it registers an `anyray` provider so\n`anyray/*` models route to your gateway with the metadata the optimizer needs.\n\n## What it adds\n\nPointing `models.providers` at a gateway URL already works in OpenClaw. This plugin exists for\nwhat that cannot express:\n\n- **Per-conversation optimizer sessions.** The gateway derives its session from a\n  `_session_<uuid>` suffix on `metadata.user_id`. Without it, concurrent conversations that open\n  identically collapse into one session — and a single fail-open then pauses optimization for all\n  of them. The plugin injects a stable, opaque id per OpenClaw session.\n- **Cache retention on every call.** OpenClaw only auto-seeds prompt caching on\n  `api.anthropic.com`/Vertex, so on a custom host it emits no `cache_control` at all — a cold\n  provider cache on every warm turn.\n- **The whole provider entry from one config block** — base URL, API kind, per-model limits,\n  attribution headers.\n\n## Install\n\n```bash\nnpm install @anyray/openclaw-plugin\n```\n\nThen register it in `~/.openclaw/openclaw.json`:\n\n```jsonc\n{\n  \"plugins\": {\n    \"load\": { \"paths\": [\"<path to the installed package>\"] },\n    \"entries\": {\n      \"anyray\": {\n        \"enabled\": true,\n        \"config\": {\n          \"gatewayUrl\": \"https://gateway.example.anyray.ai\",\n          \"apiKey\": \"ark_…\",\n          \"user\": \"you@example.com\",\n          \"team\": \"platform\"\n        }\n      }\n    }\n  },\n  \"env\": { \"ANYRAY_CLIENT_KEY\": \"ark_…\" }\n}\n```\n\nRestart the gateway once, then select a model:\n\n```\n/model anyray/claude-sonnet-4-5\n```\n\n`anyray-connect` performs this whole setup automatically, including key rotation —\nsee the [integration guide](https://docs.anyray.ai/integrations/openclaw).\n\n### Configuration\n\n| Key | Required | Meaning |\n| --- | --- | --- |\n| `gatewayUrl` | yes | Gateway origin, **no `/v1` suffix** — the Anthropic transport appends the path |\n| `apiKey` | no | Personal `ark_…` key. Falls back to `$ANYRAY_CLIENT_KEY` |\n| `user` | no | Attribution identity (content-free) |\n| `team` | no | Attribution grouping (content-free) |\n\nSet `ANYRAY_CLIENT_KEY` in config `env:` as well as `config.apiKey` — the catalog-contributed\nkey alone does not satisfy auth in every launch path.\n\n## Compatibility\n\nRequires **OpenClaw ≥ 2026.7.1**, which is where `plugin-sdk/provider-entry` and\n`defineSingleProviderPluginEntry` landed. On older builds the plugin's first import fails.\n\n## Privacy\n\nThe plugin is content-free by construction. It sends **no** prompt or response content anywhere:\n\n- `metadata.user_id` is a UUID-shaped SHA-256 of an opaque session key — never user data.\n- Attribution carries only the `user`/`team` you configure, plus the tool name.\n- There is **no logging of any kind** in this package, and no network call of its own.\n\n## Development\n\n```bash\nnpm install\nnpm test     # node --test\nnpm run build\n```\n\nZero runtime dependencies.\n\n## License\n\nMIT — see [LICENSE](./LICENSE).\n","readmeFilename":"README.md"}