<< All versions
Skill v1.0.0
currentAutomated scan96/100lightninglabs/lightning-agent-tools/commerce
──Details
PublishedSeptember 29, 2026 at 11:03 PM
Content Hashsha256:7b8184b11d5efaa1...
Git SHAa94fcbff33b6
──Files
Files (1 file, 5.7 KB)
SKILL.md5.7 KBactive
SKILL.md · 213 lines · 5.7 KB
version: "1.0.0" 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 walletskills/lnd/scripts/create-wallet.sh --mode standalone# Verify node is runningskills/lnd/scripts/lncli.sh getinfo
Step 3: Fund the Wallet
bash
# Generate a Bitcoin addressskills/lnd/scripts/lncli.sh newaddress p2tr# Send BTC to this address from an exchange or another wallet# Verify balanceskills/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 channelskills/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 connectionlnget ln status
Step 6: Fetch Paid Resources
bash
# Fetch an L402-protected resourcelnget --max-cost 1000 https://api.example.com/paid-data# Preview without payinglnget --no-pay https://api.example.com/paid-data# Check cached tokenslnget tokens list
Step 7: Host Paid Endpoints (Optional)
bash
# Start your backend servicepython3 -m http.server 8080 &# Configure aperture to protect itskills/aperture/scripts/setup.sh --insecure --port 8081# Start the L402 paywallskills/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 setupskills/lnd/scripts/install.shskills/lnget/scripts/install.shskills/lnd/scripts/start-lnd.shskills/lnd/scripts/create-wallet.sh --mode standalonelnget 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 resourceslnget --max-cost 100 -q https://seller-api.example.com/api/data | jq .
Seller Agent Setup
bash
# One-time setupskills/lnd/scripts/install.shskills/aperture/scripts/install.shskills/lnd/scripts/start-lnd.shskills/lnd/scripts/create-wallet.sh --mode standalone# Configure and start paywallskills/aperture/scripts/setup.sh --port 8081 --insecure# Start backend with content to sellmkdir -p /tmp/api-dataecho '{"market_data": "..."}' > /tmp/api-data/data.jsoncd /tmp/api-data && python3 -m http.server 8080 &# Start apertureskills/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 requestlnget --max-cost 500 https://api.example.com/data# Check cost before payinglnget --no-pay --json https://api.example.com/data | jq '.invoice_amount_sat'# Track spending via token listlnget 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.shskills/lnd/scripts/stop-lnd.sh