Install
openclaw skills install arkade-walletSend and receive Bitcoin over Arkade (offchain), onchain (via onboard/offboard), and Lightning. Swap USDC/USDT stablecoins.
openclaw skills install arkade-walletSend and receive Bitcoin over Arkade (offchain), onchain (via onboard/offboard), and Lightning Network. Swap between BTC and stablecoins (USDC/USDT) via LendaSwap.
Payment methods:
Default Server: https://arkade.computer
# Using pnpm (recommended)
pnpm dlx @arkade-os/skill init
pnpm dlx @arkade-os/skill address
# Using npx
npx -y -p @arkade-os/skill arkade init
npx -y -p @arkade-os/skill arkade address
# Install globally
npm install -g @arkade-os/skill
# or
pnpm add -g @arkade-os/skill
# Then use directly
arkade init
arkade address
npm install @arkade-os/skill
# or
pnpm add @arkade-os/skill
Note: Examples below use
arkadedirectly (assumes global install). For pnpm:pnpm dlx @arkade-os/skill <command>For npx:npx -y -p @arkade-os/skill arkade <command>
# Initialize wallet (auto-generates private key, default server: arkade.computer)
arkade init
# Initialize with custom server
arkade init https://custom-server.com
# Show Ark address (for receiving offchain Bitcoin)
arkade address
# Show boarding address (for onchain deposits)
arkade boarding-address
# Show balance breakdown
arkade balance
# Send sats to an Ark address
arkade send <ark-address> <amount-sats>
# Example: Send 50,000 sats
arkade send ark1qxyz... 50000
# View transaction history
arkade history
# Get paid onchain: Receive BTC to your boarding address, then onboard to Arkade
# Step 1: Get your boarding address
arkade boarding-address
# Step 2: Have someone send BTC to your boarding address
# Step 3: Onboard the received BTC to make it available offchain
arkade onboard
# Pay onchain: Send offchain BTC to any onchain Bitcoin address
arkade offboard <btc-address>
# Example: Pay someone at bc1 address
arkade offboard bc1qxyz...
# Create a Lightning invoice to receive payment
arkade ln-invoice <amount-sats> [description]
# Example: Create invoice for 25,000 sats
arkade ln-invoice 25000 "Coffee payment"
# Pay a Lightning invoice
arkade ln-pay <bolt11-invoice>
# Show swap fees
arkade ln-fees
# Show swap limits
arkade ln-limits
# Show pending swaps
arkade ln-pending
# Get quote for BTC to stablecoin swap
arkade swap-quote <amount-sats> <from> <to>
# Example: Quote 100,000 sats to USDC on Polygon
arkade swap-quote 100000 btc_arkade usdc_pol
# Show available trading pairs
arkade swap-pairs
Supported Tokens:
btc_arkade - Bitcoin on Arkadeusdc_pol - USDC on Polygonusdc_eth - USDC on Ethereumusdc_arb - USDC on Arbitrumusdt_pol - USDT on Polygonusdt_eth - USDT on Ethereumusdt_arb - USDT on Arbitrumimport { Wallet, SingleKey } from "@arkade-os/sdk";
import {
ArkadeBitcoinSkill,
ArkaLightningSkill,
LendaSwapSkill,
} from "@arkade-os/skill";
// Create wallet (default server: arkade.computer)
const wallet = await Wallet.create({
identity: SingleKey.fromHex(privateKeyHex),
arkServerUrl: "https://arkade.computer",
});
// === Bitcoin Operations ===
const bitcoin = new ArkadeBitcoinSkill(wallet);
// Get addresses
const arkAddress = await bitcoin.getArkAddress();
const boardingAddress = await bitcoin.getBoardingAddress();
// Check balance
const balance = await bitcoin.getBalance();
console.log("Total:", balance.total, "sats");
console.log("Offchain available:", balance.offchain.available, "sats");
console.log("Onchain pending:", balance.onchain.total, "sats");
// Send Bitcoin
const result = await bitcoin.send({
address: recipientArkAddress,
amount: 50000,
});
console.log("Sent! TX:", result.txid);
// === Lightning Operations ===
const lightning = new ArkaLightningSkill({
wallet,
network: "bitcoin",
});
// Create invoice
const invoice = await lightning.createInvoice({
amount: 25000,
description: "Coffee payment",
});
console.log("Invoice:", invoice.bolt11);
// Pay invoice
const payment = await lightning.payInvoice({
bolt11: "lnbc...",
});
console.log("Paid! Preimage:", payment.preimage);
// === Stablecoin Swaps ===
const lendaswap = new LendaSwapSkill({ wallet });
// Get quote
const quote = await lendaswap.getQuoteBtcToStablecoin(100000, "usdc_pol");
console.log("You'll receive:", quote.targetAmount, "USDC");
// Execute swap
const swap = await lendaswap.swapBtcToStablecoin({
targetAddress: "0x...", // EVM address
targetToken: "usdc_pol",
targetChain: "polygon",
sourceAmount: 100000,
});
console.log("Swap ID:", swap.swapId);
Data Storage: ~/.arkade-wallet/config.json
Private keys are auto-generated on first use and stored locally. They are never exposed via CLI arguments or stdout. No environment variables required. The LendaSwap API is publicly accessible.
getArkAddress() - Get Ark address for receiving offchain paymentsgetBoardingAddress() - Get boarding address for receiving onchain paymentsgetBalance() - Get balance breakdownsend(params) - Send Bitcoin to Ark address (offchain)getTransactionHistory() - Get transaction historyonboard(params) - Get paid onchain: convert onchain BTC to offchainoffboard(params) - Pay onchain: send offchain BTC to any onchain addresswaitForIncomingFunds(timeout?) - Wait for incoming fundscreateInvoice(params) - Create Lightning invoicepayInvoice(params) - Pay Lightning invoicegetFees() - Get swap feesgetLimits() - Get swap limitsgetPendingSwaps() - Get pending swapsgetSwapHistory() - Get swap historyisAvailable() - Check if Lightning is availablegetQuoteBtcToStablecoin(amount, token) - Quote BTC to stablecoingetQuoteStablecoinToBtc(amount, token) - Quote stablecoin to BTCswapBtcToStablecoin(params) - Swap BTC to stablecoinswapStablecoinToBtc(params) - Swap stablecoin to BTCgetSwapStatus(swapId) - Get swap statusgetPendingSwaps() - Get pending swapsgetSwapHistory() - Get swap historygetAvailablePairs() - Get available trading pairsclaimSwap(swapId) - Claim completed swaprefundSwap(swapId) - Refund expired swapArkade supports multiple networks:
bitcoin - Bitcoin mainnettestnet - Bitcoin testnetsignet - Bitcoin signetregtest - Local regtestmutinynet - Mutiny signet