Pieverse Docs
Purr CLI

External OpenClaw

Register an agent, download skills, and connect purr to your own OpenClaw instance.

Runtime: External OpenClaw

If you're running your own OpenClaw instance (not hosted on purrfect-claw-platform), set up purr by following these steps in order.

Step 1 — Authenticate

Choose an authentication method:

API KeySocial Login
Human needed?NoYes — human approves via OAuth
Auth typeStatic key (pcp_live_*)JWT access token + refresh token
Token validityPermanent (until revoked)Access: 1 hour, Refresh: 7 days
Best forAutonomous agentsAgents with a human owner

If you're unsure, use Option A.

Register your agent — no account required:

curl -sf -X POST "https://purr.pieverse.io/v1/agents/register" \
  -H "Content-Type: application/json" \
  -d '{"name": "my-agent", "chainType": "ethereum"}'

Response:

{
  "ok": true,
  "data": {
    "agentId": "abc12345-...",
    "apiKey": "pcp_live_...",
    "wallet": { "address": "0x...", "chainId": 56, "chainType": "ethereum" }
  }
}

Save your apiKey immediately — it is shown only once.

Write credentials to ~/.purrfectclaw/.env:

mkdir -p ~/.purrfectclaw
cat > ~/.purrfectclaw/.env << 'EOF'
AGENT_ID=<agentId from response>
API_KEY=<apiKey from response>
AUTH_TOKEN=$API_KEY
WALLET_ADDRESS=<wallet.address from response>
WALLET_API_URL=https://purr.pieverse.io
WALLET_API_TOKEN=<apiKey from response>
INSTANCE_ID=<agentId from response>
EOF

Step B1 — Initiate the device flow

curl -sf -X POST "https://purr.pieverse.io/v1/auth/device" \
  -H "Content-Type: application/json"

Response:

{
  "ok": true,
  "data": {
    "deviceCode": "...",
    "loginUrl": "https://purr.pieverse.io/v1/auth/sso?device_code=...",
    "expiresIn": 600,
    "interval": 5
  }
}

Step B2 — Show the login URL to your owner

Display the loginUrl to the owner. They sign in with Google and see a success page.

Step B3 — Poll for the result

Poll every 5 seconds until login completes:

curl -sf -X POST "https://purr.pieverse.io/v1/auth/device/token" \
  -H "Content-Type: application/json" \
  -d '{"deviceCode": "<deviceCode from step B1>", "chainType": "ethereum"}'

While pending, you'll get HTTP 428 with "authorization_pending". On success:

{
  "ok": true,
  "data": {
    "accessToken": "eyJ...",
    "instanceId": "...",
    "user": { "id": "...", "email": "...", "name": "..." },
    "wallet": { "address": "0x...", "chainId": 56, "chainType": "ethereum" }
  }
}

Write credentials to ~/.purrfectclaw/.env:

mkdir -p ~/.purrfectclaw
cat > ~/.purrfectclaw/.env << 'EOF'
ACCESS_TOKEN=<accessToken from response>
REFRESH_TOKEN=<refreshToken from response>
AUTH_TOKEN=$ACCESS_TOKEN
INSTANCE_ID=<instanceId from response>
WALLET_ADDRESS=<wallet.address from response>
WALLET_API_URL=https://purr.pieverse.io
WALLET_API_TOKEN=<accessToken from response>
EOF

Access tokens expire after 1 hour. Use POST /v1/auth/refresh with your refresh token to renew without re-authenticating.

Source your credentials:

source ~/.purrfectclaw/.env

Step 2 — Download skills

mkdir -p ~/.purrfectclaw/skills
curl -sf "https://purr.pieverse.io/v1/skills/bundle" \
  -H "Authorization: Bearer $AUTH_TOKEN" \
  -o /tmp/skills-bundle.tar.gz
tar xzf /tmp/skills-bundle.tar.gz -C ~/.purrfectclaw/skills

Step 3 — Install and configure purr

See Installation for the full install steps. Then configure:

purr config set api-url "https://purr.pieverse.io"
purr config set api-token "$AUTH_TOKEN"
purr config set instance-id "$INSTANCE_ID"

Verify:

purr config list

Step 4 — Register skills with OpenClaw (OpenClaw-hosted agents only)

Skip this step if you are running a standalone agent without an OpenClaw gateway.

CURRENT=$(openclaw config get skills.load.extraDirs 2>/dev/null)
MERGED=$(node -e "
const cur = (() => { try { return JSON.parse('${CURRENT:-[]}'); } catch { return []; } })();
const p = '~/.purrfectclaw/skills';
if (cur.indexOf(p) === -1) cur.push(p);
console.log(JSON.stringify(cur));
")
openclaw config set skills.load.extraDirs "$MERGED"

Step 5 — Verify

purr wallet address --chain-type ethereum
# Expected: returns JSON with your 0x wallet address

For OpenClaw-hosted agents, restart the gateway and verify skills loaded:

openclaw gateway restart
openclaw skills list

On this page