Menu
Lightning Beginner 6 min read

Lightning Node Types

Types of Lightning nodes and their use cases. Routing nodes, mobile wallets, custodial services, and agent node selection.

nodes routing mobile custodial self-custody

Lightning Node Types

Lightning nodes come in different forms, each with trade-offs between sovereignty, convenience, and capabilities. Understanding these helps agents choose the right approach.

Why Node Selection Matters for Agents

FactorImpact
CustodyWho controls the funds?
UptimeChannels require online presence
LiquidityAccess to network capacity
APIsProgrammatic access methods

Node Categories

1. Full Routing Nodes

Fully validating nodes that route payments for others.

Implementations:

  • LND (Lightning Labs)
  • Core Lightning (CLN)
  • Eclair (ACINQ)
  • LDK (Lightning Dev Kit)

Characteristics:

AspectDetails
CustodySelf-custody (your keys)
UptimeRequires 24/7 operation
HardwareVPS or dedicated server
LiquidityYou manage channels
RevenueEarn routing fees

Best for:

  • Maximum sovereignty
  • Routing fee income
  • Large payment volumes
  • Custom integrations

Agent considerations:

# Full node gives complete control
node = LND(
    host="localhost:10009",
    macaroon=admin_macaroon,
    cert=tls_cert
)

# All APIs available
channels = node.list_channels()
invoices = node.list_invoices()
payments = node.send_payment(invoice)

2. Light Clients / Mobile Nodes

Partial nodes optimized for mobile devices.

Examples:

  • Phoenix (ACINQ)
  • Breez
  • Mutiny
  • Zeus (connects to your node)

Characteristics:

AspectDetails
CustodySelf-custody (on device)
UptimeIntermittent (uses LSPs)
HardwareMobile phone
LiquidityLSP-managed
RevenueNone (consumer focus)

Best for:

  • Personal payments
  • Mobile use
  • Automatic channel management
  • Beginners

Agent considerations:

  • Limited API access
  • Depends on LSP availability
  • Not ideal for server-side agents

3. LSP-Connected Nodes

Nodes that rely on Lightning Service Providers for liquidity and routing.

How it works:

Your Node ←───→ LSP ←───→ Network
           JIT channel

Characteristics:

AspectDetails
CustodySelf-custody
UptimeLSP monitors for you
HardwareMinimal
LiquidityOn-demand from LSP
CostLSP fees

Best for:

  • Receiving payments without existing liquidity
  • Reduced operational overhead
  • Mobile/intermittent nodes

4. Custodial Wallets

Third party holds your funds. You use their API.

Examples:

  • Wallet of Satoshi
  • Strike
  • Cash App
  • Alby (custodial mode)

Characteristics:

AspectDetails
CustodyThird party (not your keys)
UptimeProvider handles
HardwareNone
LiquidityProvider’s liquidity
RevenueNone

Best for:

  • Quick testing
  • Small amounts
  • Maximum convenience
  • Beginners

Risks:

  • Funds can be frozen/seized
  • Provider can disappear
  • No privacy
  • Counterparty risk

5. Hosted Channels

Your keys, but channels hosted by a provider.

Examples:

  • Hosted Channels protocol
  • Some LNbits setups

Characteristics:

AspectDetails
CustodyHybrid (complex)
UptimeProvider handles
HardwareMinimal
TrustProvider must be honest

Best for:

  • Balance between sovereignty and convenience
  • Testing self-custody without infrastructure

Node Comparison

TypeCustodyUptime ReqSetupAgent Suitability
Full routingSelf24/7Complex⭐⭐⭐⭐⭐
Light clientSelfIntermittentEasy⭐⭐
LSP-connectedSelfLowMedium⭐⭐⭐⭐
CustodialThird partyNoneTrivial⭐⭐⭐
HostedHybridNoneEasy⭐⭐⭐

API Access by Node Type

Full Node APIs

# LND gRPC - Full access
lnd.open_channel()
lnd.close_channel()
lnd.send_payment()
lnd.add_invoice()
lnd.forward_history()
lnd.update_channel_policy()

LNbits API

# REST API - Wallet operations
lnbits.create_invoice(amount, memo)
lnbits.pay_invoice(bolt11)
lnbits.check_balance()
lnbits.get_payments()

Custodial APIs

# Often limited
wallet.create_invoice(amount)
wallet.pay(bolt11)
wallet.balance()
# No channel management

Agent Node Recommendations

For Payment-Only Agents

Recommended: LNbits (self-hosted or trusted instance)

# Simple, API-first
class PaymentAgent:
    def __init__(self, lnbits_url, api_key):
        self.lnbits = LNbits(lnbits_url, api_key)

    def receive(self, amount, memo):
        return self.lnbits.create_invoice(amount, memo)

    def send(self, bolt11):
        return self.lnbits.pay_invoice(bolt11)

For Routing/Revenue Agents

Recommended: Full LND or CLN node

# Full control needed
class RoutingAgent:
    def __init__(self, lnd_connection):
        self.lnd = lnd_connection

    def optimize_fees(self):
        channels = self.lnd.list_channels()
        for ch in channels:
            new_fees = self.calculate_optimal_fees(ch)
            self.lnd.update_channel_policy(ch.chan_id, new_fees)

For Experimental/Testing Agents

Recommended: Custodial API (Alby, LNbits demo)

# Quick setup, no infrastructure
import alby

agent = alby.Wallet(api_key="...")
agent.pay("lnbc...")  # Just works

Running Your Own Node

Minimum Requirements

ResourceLNDCore Lightning
CPU2 cores2 cores
RAM4 GB2 GB
Storage20 GB10 GB
NetworkStatic IP or TorSame

Hosted Options

ProviderTypeCost/month
VoltageManaged LND~$12
NodlHardwareOne-time ~$500
Start9HardwareOne-time ~$400
UmbrelDIY (Raspberry Pi)~$100 hardware

Machine-Readable Summary

{
  "topic": "node-types",
  "categories": [
    {
      "type": "full-routing",
      "custody": "self",
      "examples": ["lnd", "core-lightning", "eclair"],
      "agent_suitability": 5
    },
    {
      "type": "custodial",
      "custody": "third-party",
      "examples": ["wallet-of-satoshi", "strike"],
      "agent_suitability": 3
    },
    {
      "type": "lsp-connected",
      "custody": "self",
      "examples": ["phoenix", "breez"],
      "agent_suitability": 4
    }
  ],
  "recommendation": {
    "payment-only": "lnbits",
    "routing": "lnd",
    "testing": "custodial"
  }
}