doc/OPENCLAW_ONBOARDING.md
Use this exact checklist.
cd <paperclip-repo-root>
pnpm dev --bind lan
Then verify:
curl -sS http://127.0.0.1:3100/api/health | jq
OPENCLAW_RESET_STATE=1 OPENCLAW_BUILD=1 ./scripts/smoke/openclaw-docker-ui.sh
Open the printed Dashboard URL (includes #token=...) in your browser.
In Paperclip UI, go to http://127.0.0.1:3100/CLA/company/settings.
Use the OpenClaw invite prompt flow.
Generate OpenClaw Invite Prompt.OpenClaw Invite Prompt.How is onboarding going? Continue setup now.Security/control note:
POST /api/companies/{companyId}/openclaw/invite-promptApprove the join request in Paperclip UI, then confirm the OpenClaw agent appears in CLA agents.
Gateway preflight (required before task tests).
openclaw_gateway (not openclaw).ws://... or wss://....disableDeviceAuth for normal onboarding.adapterConfig.disableDeviceAuth false/absent) with persisted adapterConfig.devicePrivateKeyPemdisableDeviceAuth for normal onboardingAGENT_ID="<newly-created-agent-id>"
curl -sS -H "Cookie: $PAPERCLIP_COOKIE" "http://127.0.0.1:3100/api/agents/$AGENT_ID" | jq '{adapterType,adapterConfig:{url:.adapterConfig.url,tokenLen:(.adapterConfig.headers["x-openclaw-token"] // .adapterConfig.headers["x-openclaw-auth"] // "" | length),disableDeviceAuth:(.adapterConfig.disableDeviceAuth // false),hasDeviceKey:(.adapterConfig.devicePrivateKeyPem // "" | length > 0)}}'
adapterType=openclaw_gateway, tokenLen >= 16, hasDeviceKey=true, and disableDeviceAuth=false.Pairing handshake note:
pairing required (when shared gateway auth token/password is valid).pairing required.docker exec openclaw-docker-openclaw-gateway-1 sh -lc 'openclaw devices approve --latest --json --url "ws://127.0.0.1:18789" --token "$(node -p \"require(process.env.HOME+\\\"/.openclaw/openclaw.json\\\").gateway.auth.token\")"'
docker exec openclaw-docker-openclaw-gateway-1 sh -lc 'TOK="$(node -e \"const fs=require(\\\"fs\\\");const c=JSON.parse(fs.readFileSync(\\\"/home/node/.openclaw/openclaw.json\\\",\\\"utf8\\\"));process.stdout.write(c.gateway?.auth?.token||\\\"\\\");\")\"; openclaw devices list --json --url \"ws://127.0.0.1:18789\" --token \"$TOK\"'
OPENCLAW_CASE_A_OK_<timestamp> and mark done.”done and comment exists.OPENCLAW_CASE_B_OK_<timestamp> to main webchat via message tool, then comment same marker on issue, then mark done.”/new session.OPENCLAW_CASE_C_CREATED_<timestamp>.docker compose -f /tmp/openclaw-docker/docker-compose.yml -f /tmp/openclaw-docker/.paperclip-openclaw.override.yml logs -f openclaw-gateway
openclaw_gateway + non-placeholder token (tokenLen >= 16).devicePrivateKeyPem configured with device auth enabled (default path).done + marker comment.done + marker comment + main-chat message visible./new session.If you want, I can also give you a single “observer mode” command that runs the stock smoke harness while you watch the same steps live in UI.