home / skills / openclaw / skills / lightning-agent-commerce

lightning-agent-commerce skill

/skills/roasbeef/lightning-agent-commerce

This skill enables end-to-end lightning network commerce for agents by setting up a complete payment stack and enabling paid data exchange.

npx playbooks add skill openclaw/skills --skill lightning-agent-commerce

Review the files below or copy the command above to add this skill to your agents.

Files (2)
SKILL.md
5.7 KB
---
name: commerce
description: End-to-end agentic commerce workflow using Lightning Network. Use when an agent needs to set up a full payment stack (lnd + lnget + aperture), buy or sell data via L402, or enable agent-to-agent micropayments.
user-invocable: false
---

# Agentic Commerce Toolkit

This plugin provides a complete toolkit for agent-driven Lightning Network
commerce. Three skills work together to enable agents to send and receive
micropayments over the Lightning Network using the L402 protocol.

## Components

| Skill | Purpose |
|-------|---------|
| **lnd** | Run Lightning Terminal (litd: lnd + loop + pool + tapd) |
| **lnget** | Fetch L402-protected resources (pay for data) |
| **aperture** | Host paid API endpoints (sell data) |

## Full Setup Workflow

### Step 1: Install All Components

```bash
# Install litd (Lightning Terminal — bundles lnd + loop + pool + tapd)
skills/lnd/scripts/install.sh

# Install lnget (Lightning HTTP client)
skills/lnget/scripts/install.sh

# Install aperture (L402 reverse proxy)
skills/aperture/scripts/install.sh
```

### Step 2: Set Up the Lightning Node

```bash
# Start litd container (testnet by default)
skills/lnd/scripts/start-lnd.sh

# Create an encrypted wallet
skills/lnd/scripts/create-wallet.sh --mode standalone

# Verify node is running
skills/lnd/scripts/lncli.sh getinfo
```

### Step 3: Fund the Wallet

```bash
# Generate a Bitcoin address
skills/lnd/scripts/lncli.sh newaddress p2tr

# Send BTC to this address from an exchange or another wallet

# Verify balance
skills/lnd/scripts/lncli.sh walletbalance
```

### Step 4: Open a Channel

```bash
# Connect to a well-connected node (e.g., ACINQ, Bitfinex)
skills/lnd/scripts/lncli.sh connect <pubkey>@<host>:9735

# Open a channel
skills/lnd/scripts/lncli.sh openchannel --node_key=<pubkey> --local_amt=1000000

# Wait for channel to confirm (6 blocks)
skills/lnd/scripts/lncli.sh listchannels
```

### Step 5: Configure lnget

```bash
# Initialize lnget config (auto-detects local lnd)
lnget config init

# Verify connection
lnget ln status
```

### Step 6: Fetch Paid Resources

```bash
# Fetch an L402-protected resource
lnget --max-cost 1000 https://api.example.com/paid-data

# Preview without paying
lnget --no-pay https://api.example.com/paid-data

# Check cached tokens
lnget tokens list
```

### Step 7: Host Paid Endpoints (Optional)

```bash
# Start your backend service
python3 -m http.server 8080 &

# Configure aperture to protect it
skills/aperture/scripts/setup.sh --insecure --port 8081

# Start the L402 paywall
skills/aperture/scripts/start.sh

# Other agents can now pay to access your endpoints
# lnget --max-cost 100 https://your-host:8081/api/data
```

## Agent-to-Agent Commerce

The full loop for autonomous agent commerce:

```
Agent A (buyer)                    Agent B (seller)
─────────────                      ─────────────
lnd node running                   lnd node running
  ↓                                  ↓
lnget fetches URL ──────────────→ aperture receives request
                                     ↓
                                   Returns 402 + invoice
  ↓
lnget pays invoice ─────────────→ lnd receives payment
  ↓                                  ↓
lnget retries with token ───────→ aperture validates token
                                     ↓
                                   Proxies to backend
  ↓                                  ↓
Agent A receives data ←──────────  Backend returns data
```

### Buyer Agent Setup

```bash
# One-time setup
skills/lnd/scripts/install.sh
skills/lnget/scripts/install.sh
skills/lnd/scripts/start-lnd.sh
skills/lnd/scripts/create-wallet.sh --mode standalone
lnget config init

# Fund wallet and open channels (one-time)
skills/lnd/scripts/lncli.sh newaddress p2tr
# ... send BTC ...
skills/lnd/scripts/lncli.sh openchannel --node_key=<pubkey> --local_amt=500000

# Ongoing: fetch paid resources
lnget --max-cost 100 -q https://seller-api.example.com/api/data | jq .
```

### Seller Agent Setup

```bash
# One-time setup
skills/lnd/scripts/install.sh
skills/aperture/scripts/install.sh
skills/lnd/scripts/start-lnd.sh
skills/lnd/scripts/create-wallet.sh --mode standalone

# Configure and start paywall
skills/aperture/scripts/setup.sh --port 8081 --insecure

# Start backend with content to sell
mkdir -p /tmp/api-data
echo '{"market_data": "..."}' > /tmp/api-data/data.json
cd /tmp/api-data && python3 -m http.server 8080 &

# Start aperture
skills/aperture/scripts/start.sh

# Buyers can now access:
# https://your-host:8081/api/data.json (100 sats per request)
```

## Cost Management

Agents should always control spending:

```bash
# Set a hard limit per request
lnget --max-cost 500 https://api.example.com/data

# Check cost before paying
lnget --no-pay --json https://api.example.com/data | jq '.invoice_amount_sat'

# Track spending via token list
lnget tokens list --json | jq '[.[] | .amount_paid_sat] | add'
```

## Security Summary

| Component | Security Model |
|-----------|---------------|
| **Wallet passphrase** | Stored at `~/.lnget/lnd/wallet-password.txt` (0600) |
| **Seed mnemonic** | Stored at `~/.lnget/lnd/seed.txt` (0600) |
| **L402 tokens** | Stored at `~/.lnget/tokens/<domain>/` per domain |
| **lnd macaroons** | Standard lnd paths at `~/.lnd/data/chain/...` |
| **Aperture DB** | SQLite at `~/.aperture/aperture.db` |

For production use with significant funds, use watch-only mode with a remote
signer container. See the `lightning-security-module` skill for details.

## Stopping Everything

```bash
skills/aperture/scripts/stop.sh
skills/lnd/scripts/stop-lnd.sh
```

Overview

This skill provides an end-to-end agentic commerce toolkit that uses the Lightning Network to enable micropayments, L402-protected data access, and agent-to-agent transactions. It bundles three cooperating components—lnd (Lightning node and terminal), lnget (L402 client), and aperture (L402 paywall)—so an agent can run a full payment stack and buy or sell data programmatically. The focus is practical setup, secure local storage of credentials, and simple cost control for autonomous agents.

How this skill works

The skill installs and manages a local Lightning node (lnd) for on-chain and off-chain payments, runs lnget to fetch L402-protected resources and pay invoices, and runs aperture to host paid API endpoints that return 402 + invoice responses. A buyer agent uses lnget to request a resource; aperture issues an invoice and, after payment, validates a token and proxies the request to the backend. Tokens, invoices, and node credentials are stored locally with file permissions to limit exposure.

When to use it

  • When an agent needs to buy data from an L402-protected API
  • When an agent must sell data or APIs and accept micropayments
  • When you want agent-to-agent microtransactions over Lightning
  • For prototyping autonomous commerce workflows between services
  • When you need an integrated local payment stack (node + client + paywall)

Best practices

  • Run lnd on a testnet for development and move to production with a hardened signer setup
  • Limit per-request spend with lnget --max-cost and preview invoices with --no-pay
  • Protect wallet seed and passphrase files with strict file permissions and backups
  • Open channels with well-connected nodes to ensure liquidity and reliability
  • Monitor tokens and spending using lnget tokens list and periodic balance checks

Example use cases

  • Agent buys market data from a seller API and pays per-request microfees
  • Marketplace of agent-run APIs where each endpoint is monetized via aperture
  • Autonomous data validation agents that pay small amounts to fetch labeled datasets
  • Peer agents exchanging capabilities where access is gated by L402 tokens

FAQ

Can I run this entirely locally for testing?

Yes. The default scripts start lnd on testnet and run aperture and lnget locally so agents can test full flows without mainnet funds.

How do I control spending from a buyer agent?

Use lnget --max-cost to cap per-request spending, preview invoices with --no-pay, and track payments with lnget tokens list to aggregate spend.