packages/adapters/openclaw-gateway/doc/ONBOARDING_AND_TEST_PLAN.md
This plan is now gateway-only. Paperclip supports OpenClaw through openclaw_gateway only.
openclaw adapter (/v1/responses, /hooks/*, SSE/webhook transport switching)openclaw_gateway over WebSocket (ws:// or wss://)adapterConfig.devicePrivateKeyPem.Generate OpenClaw Invite Prompt.adapterType: "openclaw_gateway"agentDefaultsPayload.url: ws://... | wss://...agentDefaultsPayload.headers["x-openclaw-token"]agentDefaultsPayload minimum:
{
"url": "ws://127.0.0.1:18789",
"headers": { "x-openclaw-token": "<gateway-token>" }
}
Recommended fields:
{
"paperclipApiUrl": "http://host.docker.internal:3100",
"waitTimeoutMs": 120000,
"sessionKeyStrategy": "issue",
"role": "operator",
"scopes": ["operator.admin"]
}
Security/pairing defaults:
disableDeviceAuth: default falsedevicePrivateKeyPem: generated during join if missingOPENCLAW_DOCKER_DIR=/tmp/openclaw-docker
if [ -d "$OPENCLAW_DOCKER_DIR" ]; then
docker compose -f "$OPENCLAW_DOCKER_DIR/docker-compose.yml" down --remove-orphans || true
fi
docker image rm openclaw:local || true
OPENCLAW_RESET_STATE=1 OPENCLAW_BUILD=1 ./scripts/smoke/openclaw-docker-ui.sh
pnpm dev --bind lan
curl -fsS http://127.0.0.1:3100/api/health
POST /api/companies/:companyId/openclaw/invite-promptadapterType == openclaw_gatewaydevicePrivateKeyPem existspairing required, approve pending device in OpenClaw/new OpenClaw session, OpenClaw can still create a Paperclip task.Use doc/OPENCLAW_ONBOARDING.md as the operator runbook.
Required before merge:
pnpm -r typecheck
pnpm test:run
pnpm build
If full suite is too heavy locally, run at least:
pnpm --filter @paperclipai/server test:run -- openclaw-gateway
pnpm --filter @paperclipai/server typecheck
pnpm --filter @paperclipai/ui typecheck
pnpm --filter paperclipai typecheck