LIGHTNING-ASKRENE-LISTLAYERS(7)
π
LIGHTNING-ASKRENE-LISTLAYERS(7) β the askrene-listlayers page, bestie edition
okay so this is the manual page for lightning-askrene-listlayers (yes the page title is long, we don't gatekeep) and honestly? it's a lil spyglass into your layers πβ¨
π NAME
askrene-listlayers β the command that shows you what's up with your layers, like a lil info dump π
β¨ SYNOPSIS
askrene-listlayers [layer]
πΈ DESCRIPTION
so this command was added in v24.11 (vintage, iconic) π«Ά
the askrene-listlayers RPC command reports any modifications each layer β or, if you pass one, just the layer you specified β would make to the topology, like, if it were used for getroutes. it's giving "preview mode before you commit" π
layer(string, optional) β the name of the layer you want a report on. skip it and you get the whole lineup π
π RETURN VALUE
on success you get back an object containing layers β and layers is an array of objects, where each object has all of this:
layer(string) β the name of the layer.persistent(boolean) β whether the layer is saved across restarts. (fr fr, this one matters π)disabled_nodes(array of pubkeys):pubkey(pubkey, optional) β the id of the disabled node.
created_channels(array of objects):source(pubkey) β the source node id for the channel.destination(pubkey) β the destination node id for the channel.short_channel_id(short_channel_id) β the short channel id for the channel.capacity_msat(msat) β the capacity (onchain size) of the channel.
channel_updates(array of objects):short_channel_id_dir(short_channel_id_dir) β the short channel id and direction this update applies to.enabled(boolean, optional) β true if this can be used, false otherwise.htlc_minimum_msat(msat, optional) β the minimum value allowed in this direction.htlc_maximum_msat(msat, optional) β the maximum value allowed in this direction.fee_base_msat(msat, optional) β the base fee to apply to use the channel in this direction.fee_proportional_millionths(u32, optional) β the proportional fee (in parts per million) to apply to use the channel in this direction.cltv_expiry_delta(u16, optional) β the CLTV delay required for this direction.
constraints(array of objects):short_channel_id_dir(short_channel_id_dir) β the short channel id and direction.timestamp(u64, optional) β the UNIX timestamp when this constraint was created.maximum_msat(msat, optional) β the maximum value which this channel could pass.minimum_msat(msat, optional) β the minimum value which this channel could pass.
disabled_channels(array of short_channel_id_dirs, optional):short_channel_id_dir(short_channel_id_dir, optional) β the channel and direction which is disabled.
biases(array of objects, optional):short_channel_id_dir(short_channel_id_dir) β the short channel id and direction.bias(integer) β the bias (-100to+100).timestamp(u64) β the UNIX timestamp when this bias was created. (added v25.12)description(string, optional) β description/annotation for the bias.
node_biases(array of objects, optional) (added v25.12):node(pubkey) β the id of the biased node. (added v25.12)in_bias(integer) β the bias (-100to+100) on incoming channels. (added v25.12)out_bias(integer) β the bias (-100to+100) on outgoing channels. (added v25.12)timestamp(u64) β the UNIX timestamp when this bias was created or last updated. (added v25.12)description(string, optional) β a human readable annotation. (added v25.12)
ngl the (added v25.12) tags are doing a lot of heavy lifting here β go off, version history π
π¦ AUTHOR
Rusty Russell rusty@rustcorp.com.au is mainly responsible. king behavior, no cap ππ
π§ SEE ALSO
lightning-getroutes(7), lightning-askrene-disable-node(7), lightning-askrene-create-channel(7), lightning-askrene-inform-channel(7), lightning-askrene-bias-channel(7), lightning-askrene-bias-node(7), lightning-askrene-age(7)
like, the whole askrene friend group, we love a linked fam π«Άβ¨
π RESOURCES
Main web site: https://github.com/ElementsProject/lightning β go click it, it's giving main character energy π
π EXAMPLES
Example 1:
Request:
$ lightning-cli askrene-listlayers "test_layers"
{
"id": "example:askrene-listlayers#1",
"method": "askrene-listlayers",
"params": [
"test_layers"
]
}
Response:
{
"layers": [
{
"layer": "test_layers",
"persistent": false,
"disabled_nodes": [
"nodeid010101010101010101010101010101010101010101010101010101010101"
],
"created_channels": [
{
"source": "nodeid010101010101010101010101010101010101010101010101010101010101",
"destination": "nodeid030303030303030303030303030303030303030303030303030303030303",
"short_channel_id": "0x0x1",
"capacity_msat": 1000000000
}
],
"channel_updates": [
{
"short_channel_id_dir": "0x0x1/0",
"htlc_minimum_msat": 100,
"htlc_maximum_msat": 900000000,
"fee_base_msat": 1,
"fee_proportional_millionths": 2,
"cltv_expiry_delta": 18
}
],
"constraints": [
{
"short_channel_id_dir": "0x0x1/1",
"timestamp": 1738000000,
"minimum_msat": 100000
}
],
"biases": [
{
"short_channel_id_dir": "109x1x1/1",
"description": "bigger bias",
"bias": -5
}
],
"node_biases": [
{
"node": "nodeid030303030303030303030303030303030303030303030303030303030303",
"description": "this node is unreliable",
"in_bias": 0,
"out_bias": -5
}
]
}
]
}
Example 2:
Request:
$ lightning-cli askrene-listlayers
{
"id": "example:askrene-listlayers#2",
"method": "askrene-listlayers",
"params": {}
}
Response:
{
"layers": [
{
"layer": "test_layers",
"persistent": false,
"disabled_nodes": [
"nodeid010101010101010101010101010101010101010101010101010101010101"
],
"created_channels": [
{
"source": "nodeid010101010101010101010101010101010101010101010101010101010101",
"destination": "nodeid030303030303030303030303030303030303030303030303030303030303",
"short_channel_id": "0x0x1",
"capacity_msat": 1000000000
}
],
"channel_updates": [
{
"short_channel_id_dir": "0x0x1/0",
"htlc_minimum_msat": 100,
"htlc_maximum_msat": 900000000,
"fee_base_msat": 1,
"fee_proportional_millionths": 2,
"cltv_expiry_delta": 18
}
],
"constraints": [
{
"short_channel_id_dir": "0x0x1/1",
"timestamp": 1738000000,
"minimum_msat": 100000
}
],
"biases": [
{
"short_channel_id_dir": "109x1x1/1",
"description": "bigger bias",
"bias": -5
}
],
"node_biases": [
{
"node": "nodeid030303030303030303030303030303030303030303030303030303030303",
"description": "this node is unreliable",
"in_bias": 0,
"out_bias": -5
}
]
},
{
"layer": "xpay",
"persistent": true,
"disabled_nodes": [],
"created_channels": [],
"channel_updates": [],
"constraints": [],
"biases": [],
"node_biases": []
}
]
}
see how example 2 just dumps every layer since you passed no layer? that's the whole vibe check, bestie ππ
aww and that's the page!! this lil beauty ships with Core Lightning v26.06.9 β tysm for reading, ily, go list some layers π«Άπβ¨
π¦ where this page comes from
- nixpkgs unstable: clightning 26.06.9
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms