OpenClaw · Skill

Lnd Macaroon Bakery

Bake custom lnd macaroons so every agent gets only the permissions it needs. Never hand out admin.macaroon in production — bake a scoped one instead.

Transportation
v1.0.0
VirusTotal: Benign

Install

Start with the primary install command. Alternate entrypoints are included below for ClawHub and OpenClaw CLI users.

Primary command

clawhub install roasbeef/lnd-macaroon-bakery

ClawHub installer

npx clawhub@latest install roasbeef/lnd-macaroon-bakery

OpenClaw CLI

openclaw skills install roasbeef/lnd-macaroon-bakery

Direct OpenClaw install

openclaw install roasbeef/lnd-macaroon-bakery

What this skill does

Bake custom lnd macaroons so every agent gets only the permissions it needs. Never hand out admin.macaroon in production — bake a scoped one instead.

Why it matters

Baking per-role macaroons eliminates the need to distribute admin.macaroon, reducing blast radius if any single agent credential is compromised.

Typical use cases

  • Issuing pay-only credentials to a payment bot without exposing channel management
  • Giving a billing service invoice-only access to create and look up invoices
  • Scoping signer credentials on a dedicated remote signing node
  • Rotating a macaroon after a suspected credential leak
  • Auditing what permissions an existing macaroon grants before deployment

Source instructions

Macaroon Bakery

Bake custom lnd macaroons so every agent gets only the permissions it needs. Never hand out admin.macaroon in production — bake a scoped one instead.

Quick Start

# Bake a pay-only macaroon
skills/macaroon-bakery/scripts/bake.sh --role pay-only

# Bake an invoice-only macaroon
skills/macaroon-bakery/scripts/bake.sh --role invoice-only

# Bake a read-only macaroon
skills/macaroon-bakery/scripts/bake.sh --role read-only

# Inspect any macaroon
skills/macaroon-bakery/scripts/bake.sh --inspect ~/.lnd/data/chain/bitcoin/mainnet/admin.macaroon

# List all available lnd permissions
skills/macaroon-bakery/scripts/bake.sh --list-permissions

Docker

The litd container is auto-detected. You can also specify --container:

# Auto-detect litd container (default)
skills/macaroon-bakery/scripts/bake.sh --role pay-only

# Explicit container
skills/macaroon-bakery/scripts/bake.sh --role pay-only --container litd

# Inspect a macaroon inside a container
skills/macaroon-bakery/scripts/bake.sh --inspect /root/.lnd/data/chain/bitcoin/testnet/admin.macaroon --container litd

Remote Nodes

To bake macaroons on a remote lnd node, provide the connection credentials:

# Bake a pay-only macaroon on a remote node
skills/macaroon-bakery/scripts/bake.sh --role pay-only \
    --rpcserver remote-host:10009 \
    --tlscertpath ~/remote-tls.cert \
    --macaroonpath ~/remote-admin.macaroon \
    --save-to ~/remote-pay-only.macaroon

You need lncli installed locally and copies of the node's TLS cert and a macaroon with macaroon:generate permission (typically admin.macaroon).

Preset Roles

RoleWhat the agent can doCannot do
pay-onlyPay invoices, decode invoices, get node infoCreate invoices, open channels, see balances
invoice-onlyCreate invoices, lookup invoices, get node infoPay, open channels, see wallet balance
read-onlyGet info, balances, list channels/peers/paymentsPay, create invoices, open/close channels
channel-adminAll of read-only + open/close channels, connect peersPay invoices, create invoices
signer-onlySign transactions, derive keys (for remote signer)Everything else

Baking Custom Macaroons

For permissions not covered by presets, bake a custom macaroon:

# Custom: agent can only pay and check wallet balance
skills/macaroon-bakery/scripts/bake.sh --custom \
    uri:/lnrpc.Lightning/SendPaymentSync \
    uri:/lnrpc.Lightning/DecodePayReq \
    uri:/lnrpc.Lightning/WalletBalance \
    uri:/lnrpc.Lightning/GetInfo

# Custom with explicit output path
skills/macaroon-bakery/scripts/bake.sh --custom \
    uri:/lnrpc.Lightning/AddInvoice \
    uri:/lnrpc.Lightning/GetInfo \
    --save-to ~/my-agent.macaroon

Discovering Permissions

# List all available URI permissions
skills/macaroon-bakery/scripts/bake.sh --list-permissions

# Filter for specific service
skills/macaroon-bakery/scripts/bake.sh --list-permissions | grep -i invoice

# Filter for routing-related permissions
skills/macaroon-bakery/scripts/bake.sh --list-permissions | grep -i router

Inspecting Macaroons

# See what permissions a macaroon has
skills/macaroon-bakery/scripts/bake.sh --inspect <path-to-macaroon>

# Inspect the admin macaroon to see full permissions
skills/macaroon-bakery/scripts/bake.sh --inspect ~/.lnd/data/chain/bitcoin/mainnet/admin.macaroon

Signer Macaroon Scoping

When using the lightning-security-module skill, the credentials bundle includes admin.macaroon by default. For production, bake a signing-only macaroon on the signer machine:

# On the signer container
skills/macaroon-bakery/scripts/bake.sh --role signer-only \
    --container litd-signer --rpc-port 10012

# Or on a native signer
skills/macaroon-bakery/scripts/bake.sh --role signer-only \
    --rpc-port 10012 --lnddir ~/.lnd-signer

# Then re-export the credentials bundle with the scoped macaroon

Macaroon Rotation

Rotate macaroons regularly to limit the window if one is compromised:

# 1. Bake a new macaroon with the same role
skills/macaroon-bakery/scripts/bake.sh --role pay-only --save-to ~/pay-only-v2.macaroon

# 2. Update your agent config to use the new macaroon

# 3. Delete the old macaroon's root key (invalidates it)
skills/lnd/scripts/lncli.sh bakemacaroon --root_key_id 0
# Note: use lncli listmacaroonids and deletemacaroonid for fine-grained control

Best Practices

  • One macaroon per agent role. Don't share macaroons between agents with different responsibilities.
  • Never use admin.macaroon in production. It's the master key.
  • Inspect before deploying. Always verify what a baked macaroon can do.
  • Rotate on a schedule. Monthly for production, immediately if compromised.
  • Scope signer macaroons too. The remote signer's credentials bundle should use signer-only, not admin.
  • Store with 0600 permissions. Macaroons are bearer tokens — treat like passwords.

Common Permission URIs

PermissionDescription
uri:/lnrpc.Lightning/GetInfoNode info (version, pubkey, sync status)
uri:/lnrpc.Lightning/WalletBalanceOn-chain wallet balance
uri:/lnrpc.Lightning/ChannelBalanceLightning channel balance
uri:/lnrpc.Lightning/ListChannelsList open channels
uri:/lnrpc.Lightning/ListPeersList connected peers
uri:/lnrpc.Lightning/SendPaymentSyncPay a Lightning invoice
uri:/lnrpc.Lightning/DecodePayReqDecode a BOLT11 invoice
uri:/lnrpc.Lightning/AddInvoiceCreate a Lightning invoice
uri:/lnrpc.Lightning/LookupInvoiceLook up an invoice by hash
uri:/lnrpc.Lightning/ListInvoicesList all invoices
uri:/lnrpc.Lightning/ListPaymentsList all payments
uri:/lnrpc.Lightning/ConnectPeerConnect to a peer
uri:/lnrpc.Lightning/OpenChannelSyncOpen a channel
uri:/lnrpc.Lightning/CloseChannelClose a channel
uri:/signrpc.Signer/SignOutputRawSign a transaction output
uri:/signrpc.Signer/ComputeInputScriptCompute input script for signing
uri:/signrpc.Signer/MuSig2SignMuSig2 signing
uri:/walletrpc.WalletKit/DeriveKeyDerive a key
uri:/walletrpc.WalletKit/DeriveNextKeyDerive next key in sequence

Related OpenClaw skills

Browse all →
Featured slot

Your product here

Reserve this slot to reach operators and coding-agent buyers.

Shown where builders are actively comparing tools and deployment options.

Advertise