{"_id":"@ckgworks/openclaw-relay","_rev":"7-8439ef81c7eff19097e1c0c72a911a51","name":"@ckgworks/openclaw-relay","dist-tags":{"latest":"0.1.6"},"versions":{"0.1.0":{"name":"@ckgworks/openclaw-relay","version":"0.1.0","_id":"@ckgworks/openclaw-relay@0.1.0","maintainers":[{"name":"ckg-works","email":"ckgarciabusiness@gmail.com"}],"dist":{"shasum":"fcbc8c7a49601c0362c7fad981b7da492d430334","tarball":"https://registry.npmjs.org/@ckgworks/openclaw-relay/-/openclaw-relay-0.1.0.tgz","fileCount":16,"integrity":"sha512-Z3+88kR9dl09UDfmByQrihGipounVCgdjVRaMlGC7rUXMuAbo+V+7pPhOUR6ZAviFbCB/FKQM2rQnLV4Bxi1oQ==","signatures":[{"sig":"MEYCIQDGtK3ikKJ0pBBB8S0ictt5KoaQK5GNAQiys6r/11AefAIhAOzAmA0ib4QLXPJr8dLrWbUMsedKYwKqXK5StfO7+uXt","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":94296},"type":"module","gitHead":"b561f186b16f0784e1ad701d37364f5b66923585","scripts":{"test":"vitest run","test:watch":"vitest"},"_npmUser":{"name":"ckg-works","email":"ckgarciabusiness@gmail.com"},"openclaw":{"channel":{"id":"relay","blurb":"Connect apps to AI agents via Relay's WebSocket bridge.","label":"Relay","order":40,"selectionLabel":"Relay (CKG Works) — AI messaging bridge for your apps."},"extensions":["./index.ts"]},"_npmVersion":"10.9.2","description":"OpenClaw Relay channel plugin — connect Relay AI messaging bridge to OpenClaw agents.","directories":{},"_nodeVersion":"22.16.0","dependencies":{"ws":"^8.18.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","@types/ws":"^8.5.0","typescript":"^5.9.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-relay_0.1.0_1775583962052_0.8398435143205665","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@ckgworks/openclaw-relay","version":"0.1.1","_id":"@ckgworks/openclaw-relay@0.1.1","maintainers":[{"name":"ckg-works","email":"ckgarciabusiness@gmail.com"}],"dist":{"shasum":"57b4c2caea20c4d6b505ddc8d0beae779161584b","tarball":"https://registry.npmjs.org/@ckgworks/openclaw-relay/-/openclaw-relay-0.1.1.tgz","fileCount":17,"integrity":"sha512-2Z5Huen40a8LLTa/TcT9T6XwimF0UEXbH5w2ZUWJbBDbR4NKzC+AIYn0BUOlscAyu5c7Rurw2t3Ep9pGFzwiVg==","signatures":[{"sig":"MEUCIQDI9jYja1q4JeAVvPY4ws5ZFivsbzmCw9rqziCftEgo9QIgcMrINnlj/5Ly/pG4Ia6W1qG4yyPExOBs8kKoTwxeD9E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":94736},"type":"module","gitHead":"76b0405b7234050c760aa6f414ef2b9c9ec0b5ca","scripts":{"test":"vitest run","test:watch":"vitest"},"_npmUser":{"name":"ckg-works","email":"ckgarciabusiness@gmail.com"},"openclaw":{"channel":{"id":"relay","blurb":"Connect apps to AI agents via Relay's WebSocket bridge.","label":"Relay","order":40,"selectionLabel":"Relay (CKG Works) — AI messaging bridge for your apps."},"extensions":["./index.ts"]},"_npmVersion":"10.9.2","description":"OpenClaw Relay channel plugin — connect Relay AI messaging bridge to OpenClaw agents.","directories":{},"_nodeVersion":"22.16.0","dependencies":{"ws":"^8.18.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","@types/ws":"^8.5.0","typescript":"^5.9.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-relay_0.1.1_1775584268443_0.8268183083276268","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@ckgworks/openclaw-relay","version":"0.1.2","_id":"@ckgworks/openclaw-relay@0.1.2","maintainers":[{"name":"ckg-works","email":"ckgarciabusiness@gmail.com"}],"dist":{"shasum":"98cb88ed723a26fb36a0a78f369d8b3b3cfe54ed","tarball":"https://registry.npmjs.org/@ckgworks/openclaw-relay/-/openclaw-relay-0.1.2.tgz","fileCount":17,"integrity":"sha512-WYvKH0sfKDgiDGdfzuBaK51oOoNCOVTVm4q+OmmPfJdN+3QunpM3pxLcrwZvxDqJrhOCrniYKBKzcRrXEhyn+g==","signatures":[{"sig":"MEYCIQDqTFXMvF55luNaXWZJfbgSpxUtg8KvHeuuMbD9NDZ8SgIhAI5djty3tLoRO+qPHKAC26Yov5KU5QnESZxvW3f7D5CO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":96587},"type":"module","gitHead":"f728fe00d3964066863b1b957bf3f5d45486faa0","scripts":{"test":"vitest run","test:watch":"vitest"},"_npmUser":{"name":"ckg-works","email":"ckgarciabusiness@gmail.com"},"openclaw":{"channel":{"id":"relay","blurb":"Connect apps to AI agents via Relay's WebSocket bridge.","label":"Relay","order":40,"selectionLabel":"Relay (CKG Works) — AI messaging bridge for your apps."},"extensions":["./index.ts"]},"_npmVersion":"10.9.2","description":"OpenClaw Relay channel plugin — connect Relay AI messaging bridge to OpenClaw agents.","directories":{},"_nodeVersion":"22.16.0","dependencies":{"ws":"^8.18.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","@types/ws":"^8.5.0","typescript":"^5.9.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-relay_0.1.2_1775584881304_0.670136151236882","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@ckgworks/openclaw-relay","version":"0.1.3","_id":"@ckgworks/openclaw-relay@0.1.3","maintainers":[{"name":"ckg-works","email":"ckgarciabusiness@gmail.com"}],"dist":{"shasum":"9fdfb2bd4d42aeae3717b3dc25febdbdd3a0dd37","tarball":"https://registry.npmjs.org/@ckgworks/openclaw-relay/-/openclaw-relay-0.1.3.tgz","fileCount":17,"integrity":"sha512-gqBhnstk7YgcH6mGKTAEpSsPATl/2LYktc6dsM6RJSBLfcBabdHMdpQuovm4PCfnHKL/AMQKMQjGLclsyk18sA==","signatures":[{"sig":"MEUCIA7sfaMxBPmnmSSIZO51DrpyJj1VqAXkSsUNUBeRFD0NAiEArn0VR02O79KvULt1XvRGUI9Aqmc7e8Lc6u/P6yN1sTM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":96933},"type":"module","gitHead":"f9907561ccb1c3767359fc88a1dfb3861484e242","scripts":{"test":"vitest run","test:watch":"vitest"},"_npmUser":{"name":"ckg-works","email":"ckgarciabusiness@gmail.com"},"openclaw":{"channel":{"id":"relay","blurb":"Connect apps to AI agents via Relay's WebSocket bridge.","label":"Relay","order":40,"selectionLabel":"Relay (CKG Works) — AI messaging bridge for your apps."},"extensions":["./index.ts"]},"_npmVersion":"10.9.2","description":"OpenClaw Relay channel plugin — connect Relay AI messaging bridge to OpenClaw agents.","directories":{},"_nodeVersion":"22.16.0","dependencies":{"ws":"^8.18.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","@types/ws":"^8.5.0","typescript":"^5.9.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-relay_0.1.3_1775586086848_0.6530614307468621","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@ckgworks/openclaw-relay","version":"0.1.4","_id":"@ckgworks/openclaw-relay@0.1.4","maintainers":[{"name":"ckg-works","email":"ckgarciabusiness@gmail.com"}],"dist":{"shasum":"f3a6436ff41401917971ac984996b5912afcdd41","tarball":"https://registry.npmjs.org/@ckgworks/openclaw-relay/-/openclaw-relay-0.1.4.tgz","fileCount":17,"integrity":"sha512-lzktUDCII4+xk2ZeX3xxugTodUGQ05wUxhJSMbrHLPXA7BxKURu1CuWfPoxEH20ggPGYNC/WhVleWvPHVb1FxA==","signatures":[{"sig":"MEQCIGWSwHdVn14FKAPB3gT25jtmIKSQJ42DHc2lwCY30zONAiAn31O6mPTTpJnZRDAIVtsAJQ4HEkbHhfkEJSPWBt6cVQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":96137},"type":"module","gitHead":"09620935958d613b702353b079e87d4001cf0041","scripts":{"test":"vitest run","test:watch":"vitest"},"_npmUser":{"name":"ckg-works","email":"ckgarciabusiness@gmail.com"},"openclaw":{"channel":{"id":"relay","blurb":"Connect apps to AI agents via Relay's WebSocket bridge.","label":"Relay","order":40,"selectionLabel":"Relay (CKG Works) — AI messaging bridge for your apps."},"extensions":["./index.ts"]},"_npmVersion":"10.9.2","description":"OpenClaw Relay channel plugin — connect Relay AI messaging bridge to OpenClaw agents.","directories":{},"_nodeVersion":"22.16.0","dependencies":{"ws":"^8.18.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","@types/ws":"^8.5.0","typescript":"^5.9.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-relay_0.1.4_1775586727127_0.15236696721166543","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@ckgworks/openclaw-relay","version":"0.1.5","_id":"@ckgworks/openclaw-relay@0.1.5","maintainers":[{"name":"ckg-works","email":"ckgarciabusiness@gmail.com"}],"dist":{"shasum":"03bb1bef74ef7dc06c1976371f6fed67486046d6","tarball":"https://registry.npmjs.org/@ckgworks/openclaw-relay/-/openclaw-relay-0.1.5.tgz","fileCount":17,"integrity":"sha512-o4ezO7dAzxUeBEtcr4R/AAQMM2VjmPGpHk3jL4uP15b6hhv7wTf/C7dmpmJxif4zZ4y/1H2YX6nnjn7iG89c2g==","signatures":[{"sig":"MEUCIE8/21NjA3as4jxjpLhIoIY9YCygquFSRnKN28rdugilAiEAn+qZKfcfjgvZ7xX9nY6lnesD4BiexUDuwTZZSx0mwpQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":96167},"type":"module","gitHead":"d7e1a7c11cfda8910db796bfdec049dbc96a883f","scripts":{"test":"vitest run","test:watch":"vitest"},"_npmUser":{"name":"ckg-works","email":"ckgarciabusiness@gmail.com"},"openclaw":{"channel":{"id":"relay","blurb":"Connect apps to AI agents via Relay's WebSocket bridge.","label":"Relay","order":40,"selectionLabel":"Relay (CKG Works) — AI messaging bridge for your apps."},"extensions":["./index.ts"]},"_npmVersion":"10.9.2","description":"OpenClaw Relay channel plugin — connect Relay AI messaging bridge to OpenClaw agents.","directories":{},"_nodeVersion":"22.16.0","dependencies":{"ws":"^8.18.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","@types/ws":"^8.5.0","typescript":"^5.9.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-relay_0.1.5_1775587000062_0.6560540290059877","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@ckgworks/openclaw-relay","version":"0.1.6","description":"OpenClaw Relay channel plugin — connect Relay AI messaging bridge to OpenClaw agents.","type":"module","openclaw":{"extensions":["./index.ts"],"channel":{"id":"relay","label":"Relay","selectionLabel":"Relay (CKG Works) — AI messaging bridge for your apps.","blurb":"Connect apps to AI agents via Relay's WebSocket bridge.","order":40}},"scripts":{"test":"vitest run","test:watch":"vitest"},"devDependencies":{"@types/node":"^22.0.0","@types/ws":"^8.5.0","typescript":"^5.9.0","vitest":"^3.0.0"},"dependencies":{"ws":"^8.18.0"},"_id":"@ckgworks/openclaw-relay@0.1.6","gitHead":"3e04db8b1965f5673fa223ee012870b248ec679e","_nodeVersion":"22.16.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-/adgVOieCGn6l7FnsNpCFhvzxR9aHBc6SsqQvOL/V280yVf5duen3QKNL7A/9rGzVqeyEGq0a0zqTSguMK54Cw==","shasum":"51fe5aaad37ab4f9704a178fd64cd143e50a79d3","tarball":"https://registry.npmjs.org/@ckgworks/openclaw-relay/-/openclaw-relay-0.1.6.tgz","fileCount":17,"unpackedSize":96260,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBCEZkK0JHcWx4WwXJR6RlywUZpL9oWoAbY2BfX/OMH+AiBJPDS+JexGYg5w88IaXjNJ1SADv0vHhEzgkoiq1EN2tQ=="}]},"_npmUser":{"name":"ckg-works","email":"ckgarciabusiness@gmail.com"},"directories":{},"maintainers":[{"name":"ckg-works","email":"ckgarciabusiness@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/openclaw-relay_0.1.6_1775587402027_0.3318313549752274"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-07T17:46:01.919Z","modified":"2026-04-07T18:43:22.325Z","0.1.0":"2026-04-07T17:46:02.210Z","0.1.1":"2026-04-07T17:51:08.647Z","0.1.2":"2026-04-07T18:01:21.450Z","0.1.3":"2026-04-07T18:21:27.010Z","0.1.4":"2026-04-07T18:32:07.285Z","0.1.5":"2026-04-07T18:36:40.246Z","0.1.6":"2026-04-07T18:43:22.192Z"},"description":"OpenClaw Relay channel plugin — connect Relay AI messaging bridge to OpenClaw agents.","maintainers":[{"name":"ckg-works","email":"ckgarciabusiness@gmail.com"}],"readme":"# @ckgworks/openclaw-relay\n\nOpenClaw channel plugin for [Relay](https://relay.ckgworks.com) — the AI messaging bridge for CKG Works and Smiling Group apps.\n\nThis plugin makes Relay a native messaging channel for OpenClaw agents. Apps send events to Relay, Relay delivers them to your agent via this plugin, and the agent streams responses back in real-time.\n\n## How It Works\n\n```\nApp (Portal, Flow, etc.)\n  → WebSocket → Relay → WebSocket → this plugin → OpenClaw agent\n                                                  → token stream → Relay → App\n```\n\n## Installation\n\n```bash\n# Install from npm\nopenclaw plugins install @ckgworks/openclaw-relay\n\n# Configure via the standard OpenClaw flow\nopenclaw configure\n# → Select \"Channels\" → Select \"Relay\" → Enter your rla_ token\n```\n\nOr configure directly:\n```bash\nopenclaw channels setup relay\n```\n\nThe setup asks for one thing: your `rla_` agent token from the [Relay Dashboard](https://relay.ckgworks.com).\n\n## What You Need\n\n1. A Relay account — request access at [relay.ckgworks.com/request-access](https://relay.ckgworks.com/request-access)\n2. An agent registered in the Relay Dashboard (gives you an `rla_` token)\n3. OpenClaw installed on your machine\n\n## Configuration\n\nAfter running `openclaw channels setup relay`, your config will contain:\n\n```json\n{\n  \"channels\": {\n    \"relay\": {\n      \"token\": \"rla_athena_k9p2m3_...\"\n    }\n  }\n}\n```\n\nThat's it. The WebSocket URL is hardcoded to `wss://api.relay.ckgworks.com/v1/ws/agent`.\n\n### Environment Variable Override\n\nYou can also set the token via environment variable:\n\n```bash\nexport RELAY_TOKEN=rla_athena_k9p2m3_...\n```\n\n## Features\n\n- Persistent WebSocket connection to Relay with auto-reconnect (exponential backoff 1s → 60s)\n- Heartbeat (ping/pong every 30s)\n- Real-time token streaming from agent to app\n- Event payload injected as agent context via `before_prompt_build` hook\n- Token usage tracking via `llm_output` hook\n- Final reply sent to Relay on `agent_end`\n\n## Protocol\n\n- **Auth:** Query param (`?token=rla_...`)\n- **Inbound:** `{\"type\": \"event\", \"event_id\", \"app_id\", \"thread_id\", \"session_key\", \"payload\"}`\n- **Outbound tokens:** `{\"type\": \"token\", \"event_id\", \"token\"}`\n- **Outbound reply:** `{\"type\": \"reply\", \"event_id\", \"content\", \"metadata\"}`\n- **Heartbeat:** `{\"type\": \"ping\"}` / `{\"type\": \"pong\"}`\n\nFull protocol docs: [docs.relay.ckgworks.com](https://docs.relay.ckgworks.com)\n\n## Development\n\n```bash\n# Clone\ngit clone git@github.com:ckg-works/relay-ckgworks.git\ncd relay-ckgworks\n\n# Install deps\nnpm install\n\n# Link for local development\nopenclaw plugins install -l .\nopenclaw plugins enable relay\n\n# Type check\nnpx tsc --noEmit\n\n# Run tests\nnpm test\n```\n\n## License\n\nProprietary — CKG Works\n","readmeFilename":"README.md"}