Nano (XNO) cryptocurrency wallet CLI with payment processing for AI agents
npm install berrypayNano (XNO) cryptocurrency wallet CLI designed for AI agents and automated payment processing.
- No passwords - Designed for automation, no interactive prompts
- Environment variables - Configure via BERRYPAY_SEED for AI agents
- JSON output - All commands output JSON for easy parsing
- Payment processor - Ephemeral addresses, auto-sweep to main wallet
- Webhooks - Get notified when payments complete
- Auto-receive - Pending funds received automatically
- Real-time - WebSocket-based payment confirmations
- Persistent - Charges survive restarts
``bash`
npm install -g berrypay
`bashCreate wallet (no password, stored in ~/.berrypay/)
berrypay init
Environment Variables
`bash
BERRYPAY_SEED # 64-char hex seed (overrides config file)
BERRYPAY_RPC_URL # RPC node URL
BERRYPAY_WS_URL # WebSocket URL
`Payment Processor
Accept payments with auto-generated ephemeral addresses:
`bash
Create a charge with webhook
berrypay charge create 0.5 --webhook http://localhost:3000/callbackWith metadata for your webhook
berrypay charge create 0.5 \
--webhook http://localhost:3000/callback \
--metadata '{"orderId": "123"}'With QR code image
berrypay charge create 0.5 --qr --output /tmp/payment.pngCheck status (auto-receives and sweeps if paid)
berrypay charge status chg_abc123List all charges
berrypay charge listCheck listener status
berrypay charge listenerStop listener
berrypay charge stop
`$3
`
1. charge create 1.0 → Ephemeral address generated, listener auto-starts
2. Customer pays → WebSocket detects payment
3. Auto-receive → Pending blocks received
4. Auto-sweep → Funds sent to main wallet (index 0)
5. Webhook called → Your server notified with charge details
6. Auto-stop → Listener stops when no active charges
`$3
`json
{
"event": "charge.completed",
"charge": {
"id": "chg_abc123",
"address": "nano_3ephemeral...",
"amountNano": "0.5",
"sweepTxHash": "ABC123...",
"metadata": {"orderId": "123"}
},
"timestamp": "2026-01-30T12:00:00.000Z"
}
`All Commands
`bash
berrypay init # Create new wallet
berrypay import # Import from seed
berrypay address [--qr] # Show address
berrypay balance [--json] # Check balance (auto-receives)
berrypay send [-y] # Send XNO (auto-receives first)
berrypay receive # Receive pending
berrypay watch # Watch for payments
berrypay export # Show seed
berrypay delete [-y] # Delete wallet
berrypay config # Show/set configberrypay charge create # Create charge (auto-starts listener)
berrypay charge status # Check charge (auto-sweeps if paid)
berrypay charge sweep # Manually sweep to main wallet
berrypay charge list # List charges
berrypay charge listener # Check if listener running
berrypay charge stop # Stop background listener
berrypay charge cleanup # Remove swept charges
`Programmatic Usage
`typescript
import { BerryPayWallet, PaymentProcessor } from 'berrypay';const wallet = new BerryPayWallet({ seed: process.env.BERRYPAY_SEED });
// Send
await wallet.send('nano_1...', BerryPayWallet.nanoToRaw('0.1'));
// Payment processor
const processor = new PaymentProcessor({ wallet, autoSweep: true });
processor.on('charge:completed', (charge) => console.log('Paid!', charge.id));
processor.on('charge:swept', ({ hash }) => console.log('Swept:', hash));
await processor.start();
const charge = await processor.createCharge({
amountNano: '1.0',
webhookUrl: 'http://localhost:3000/callback',
metadata: { orderId: '123' }
});
// charge.address - send payment here
`AI Agent Skill Guide
See skills/berrypay/SKILLS.md for a comprehensive guide on using BerryPay CLI as an AI agent.
Storage
- Config:
~/.berrypay/config.json
- Charges: ~/.berrypay/charges.json
- Listener PID: ~/.berrypay/listener.pid`MIT