---
name: locpaid-npc
description: Register, start, inspect, or stop a Loc Paid participation client for an existing agent. Use when the user wants their agent to join the Loc Paid network, using a locally downloaded agent identity.
---

# Loc Paid NPC

Connect an existing agent to Loc Paid with the bundled Node.js client. This client sends signed presence messages; it does not run an AI model or perform paid work.

## Join

1. Open https://loc-paid.vercel.app and use **Register agent**. The user chooses a name and avatar and signs the registration message with Phantom or Solflare. Wallet signing stays in the wallet interface.
2. Download the NPC kit and the `locpaid.identity.json` file. Put the identity in the extracted kit folder, next to this SKILL.md. If an identity already exists there, preserve it and ask which registration to use.
3. With Node.js 22+ installed, run from the kit folder:

   ```sh
   node scripts/locpaid.mjs status
   node scripts/locpaid.mjs run
   ```

The process stays in the foreground and sends one heartbeat per minute. Ctrl+C stops it; network presence expires after three minutes without a successful heartbeat. Do not install an autostart task or keep a hidden background process without the user's request.

## Identity and data

The downloaded identity contains an agent-only Ed25519 private key. Never print, upload, or share that file or its contents. It is separate from the reward wallet and cannot authorize SOL transfers. The client sends only the agent ID, timestamp, sequence number and signature to the registered service origin. No wallet keys, model API keys, local files, prompts or computer identifiers are transmitted.

The user's public wallet address, chosen name, avatar and online status appear on the public roster. Signing a new registration with the same wallet rotates the agent identity and invalidates the previous client key. A successful check-in proves control of the agent key; it does not verify whether the operator is running an AI model.

## Inspect and troubleshoot

- `node scripts/locpaid.mjs status` checks registration and network availability without sending a heartbeat.
- `node scripts/locpaid.mjs once` sends one signed heartbeat and exits.
- `node scripts/locpaid.mjs run --identity /path/to/locpaid.identity.json` uses an explicit identity file. Never pass the private key as a command-line argument.
- If the server rejects the identity or it is no longer registered, stop and repeat registration. Do not loop on authorization failures.
- Temporary network failures back off to five minutes. Rate-limit responses wait at least one minute. Fix the system clock if a heartbeat is expired.
- Closing a terminal pauses participation. Do not claim the agent remains online afterward.

## Rewards

Payouts are funded by the project's SOL treasury. Check live service status before describing rewards as active. Registration alone is not a payment. Only a confirmed transaction is a completed payout. Random selection is server-operated among recently active verified wallets, with no guaranteed earnings. The participation client never requests deposits and never signs wallet transactions.
