No description
Find a file
dependabot[bot] 65cf733a46
Some checks failed
Integration Tests (latest) / Test CLN=25.12.1, PY=3.10, BCD=31.0, EXP=1, DEP=0 (push) Has been cancelled
Integration Tests (latest) / Test CLN=25.12.1, PY=3.12, BCD=31.0, EXP=1, DEP=0 (push) Has been cancelled
Integration Tests (latest) / Test CLN=26.04.1, PY=3.10, BCD=31.0, EXP=1, DEP=0 (push) Has been cancelled
Integration Tests (latest) / Test CLN=26.04.1, PY=3.12, BCD=31.0, EXP=1, DEP=0 (push) Has been cancelled
Integration Tests (latest) / Test CLN=26.06.6, PY=3.10, BCD=31.0, EXP=1, DEP=0 (push) Has been cancelled
Integration Tests (latest) / Test CLN=26.06.6, PY=3.14, BCD=31.0, EXP=1, DEP=0 (push) Has been cancelled
Integration Tests (latest) / CI completion (push) Has been cancelled
Integration Tests (latest) / CI completion-1 (push) Has been cancelled
Integration Tests (latest) / CI completion-2 (push) Has been cancelled
build(deps): bump the all-dependencies group across 1 directory with 3 updates
Updates the requirements on [click](https://github.com/pallets/click), [requests[socks]](https://github.com/psf/requests) and [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) to permit the latest version.

Updates `click` from 8.3.3 to 8.4.2
- [Release notes](https://github.com/pallets/click/releases)
- [Changelog](https://github.com/pallets/click/blob/main/CHANGES.md)
- [Commits](https://github.com/pallets/click/compare/8.3.3...8.4.2)

Updates `requests[socks]` to 2.34.2
- [Release notes](https://github.com/psf/requests/releases)
- [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md)
- [Commits](https://github.com/psf/requests/compare/v2.33.1...v2.34.2)

Updates `pytest-asyncio` from 1.3.0 to 1.4.0
- [Release notes](https://github.com/pytest-dev/pytest-asyncio/releases)
- [Commits](https://github.com/pytest-dev/pytest-asyncio/compare/v1.3.0...v1.4.0)

---
updated-dependencies:
- dependency-name: click
  dependency-version: 8.4.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: all-dependencies
- dependency-name: requests[socks]
  dependency-version: 2.34.2
  dependency-type: direct:production
  dependency-group: all-dependencies
- dependency-name: pytest-asyncio
  dependency-version: 1.4.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: all-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-08-03 09:56:42 +02:00
.ci build(deps): bump cryptography from 46.0.7 to 48.0.1 in /.ci/reckless 2026-06-16 14:04:54 +02:00
.github CI: fix path creation flake 2026-07-30 13:23:20 +02:00
archived build(deps): bump cryptography 2026-06-16 14:05:09 +02:00
backup build(deps): bump the all-dependencies group across 1 directory with 3 updates 2026-08-03 09:56:42 +02:00
bolt12-prism@e5ecb4fffd bolt12-prism: upgrade to latest with test fixes 2025-03-15 16:56:01 +01:00
bumpit@9c1b19a070 bumpit: update submodule for CLN 25.12 newaddr fix 2026-05-15 16:46:54 +02:00
cl-zmq cl-zmq: add reckless manifest 2026-07-24 15:18:49 +02:00
clearnet clearnet: add reckless manifest 2026-07-24 15:18:49 +02:00
cln-nip47@7ec1e68d6c cln-nip47: update to v0.1.9 2026-04-23 12:33:11 +02:00
cln-ntfy@25c3c3e043 cln-ntfy: add very basic test 2024-06-05 15:06:18 -06:00
clnaddress@e32424d63c clnaddress: update to v0.1.4 2026-04-23 12:38:23 +02:00
clnrod@76a5790dcd clnrod: update to v0.6.0 2026-06-09 18:33:46 +02:00
consolidator@74ab0ba5eb consolidator: update to v0.2.3 2026-04-23 13:01:42 +02:00
currencyrate build(deps): bump cachetools 2026-08-03 09:54:44 +02:00
donations donations: add reckless manifest 2026-07-24 15:18:49 +02:00
feeadjuster feeadjuster: add reckless manifest 2026-07-24 15:18:49 +02:00
historian build(deps): bump pika 2026-08-03 09:54:07 +02:00
hold@945bca9779 hold: Update to latest release 2025-01-01 19:33:49 -06:00
ln-address-pay@e5a3499443 add ln-address-pay plugin 2024-07-22 18:13:32 -05:00
lnradar@55de3a732f add lnradar v0.1.1 2026-04-27 11:00:20 +02:00
monitor monitor: add reckless manifest 2026-07-24 15:18:49 +02:00
payany@8080d9a583 payany: update to v0.3.2 2026-06-09 23:11:51 +02:00
persistent-channels persistent-channels: add reckless manifest 2026-07-24 15:18:49 +02:00
prometheus build(deps): bump prometheus-client 2026-08-03 09:55:49 +02:00
rebalance rebalance: add reckless manifest 2026-07-24 15:18:49 +02:00
sling@e414aef5bd sling: update to v4.3.0 2026-06-09 18:33:35 +02:00
smaug@a1ad908ba1 smaug: test port allocation fix 2026-01-22 13:13:47 -06:00
summars@f18381b757 summars: update to v6.2.2 2026-04-23 13:29:35 +02:00
summary summary: fix persist test flake 2026-07-30 13:23:20 +02:00
trustedcoin@2e1d23d507 trustedcoin: update tests min python version to 3.10 2026-07-30 12:04:37 +02:00
watchtower-client@c9f82bce9f rust-teos: remove deprecated python-teos submodule, use rust-teos instead 2024-04-12 08:58:52 +00:00
.coveragerc pytest: Get coverage inside and outside plugins working 2020-08-28 23:06:30 +02:00
.gitignore git: Add reports to .gitignore 2021-09-25 15:03:14 +02:00
.gitmodules jwt-factory: archived 2026-06-09 14:58:47 +02:00
.mergify.yml ci(Mergify): configuration update 2023-03-20 12:25:50 +01:00
conftest.py pytest: Preparing to run integration tests using pytest 2019-03-30 00:03:16 +01:00
LICENSE Initial commit 2019-01-17 13:16:45 +01:00
pyproject.toml sauron: archive plugin 2026-05-13 13:12:43 +02:00
pytest.ini pytest: Preparing to run integration tests using pytest 2019-03-30 00:03:16 +01:00
README.md CI: update CLN point release versions 2026-07-24 15:59:23 +02:00
Reckless.md sauron: archive plugin 2026-05-13 13:12:43 +02:00
sitecustomize.py format python files with ruff 2024-07-10 12:13:42 -05:00
uv.lock chore: use uv instead of poetry for poject's ruff 2026-05-12 14:42:45 +02:00

Plugins for Core-Lightning

Community curated plugins for Core-Lightning.

Integration Tests (latest) Nightly Integration Tests (master)

Available plugins

Name Short description CLN
25.12/26.04/26.06/master
backup A simple and reliable backup plugin
bolt12-prism Split payments triggered manually or by paying a BOLT 12
bumpit A plugin to bump an open channel transaction by creating a CPFP, useful when the funding transaction is stuck in the mempool or the fee is too low.
clearnet A plugin that can be used to enforce clearnet connections when possible
clnaddress Run a lnurl server to receive via lnurl or ln-addresses with optional Zap support
cln-nip47 Nostr Wallet Connect (NWC) plugin to connect your wallets via nostr to your node.
cln-ntfy Core Lightning plugin for sending ntfy alerts.
clnrod Channel acceptor plugin. Configurable with external data from amboss/1ml and notifications
cl-zmq Publishes notifications via ZeroMQ to configured endpoints
consolidator Automatically consolidate your UTXO's
currencyrate A plugin to convert other currencies to BTC using web requests
donations A simple donations page to accept donations from the web
feeadjuster Dynamic fees to keep your channels more balanced
historian Gossip message archiver
hold Hold invoices that do not require the preimage to be known when created
ln-address-pay Allows payments to lightning addresses
lnradar A plugin to gather liquidity information from payment probes
monitor helps you analyze the health of your peers and channels
payany Supercharge CLN's pay/xpay/renepay. Automatically fetch invoices for static ln addresses like LNURL etc.. Set a budget for external wallets.
persistent-channels Maintains a number of channels to peers
prometheus Exposes some key metrics from c-lightning in the prometheus format
rebalance Keeps your channels balanced
sling Rebalance your channels with smart rules and built-in background tasks
smaug Send bkpr-compatible events to bkpr for external on-chain wallet movements
summars Print configurable summary of node, channels and optionally forwards, invoices, payments
summary Print a nice summary of the node status
trustedcoin Replace your Bitcoin Core with data from public block explorers
watchtower-client Watchtower client for The Eye of Satoshi

Plugin Managers

This is a list of plugin managers that can help you install these plugins:

Name Short description
coffee Reference implementation for a flexible core lightning plugin manager
reckless Comes with CLN. Reckless support can be checked here: Reckless.

Archived plugins

If you can't find a plugin you're looking for, it may have been archived. Plugins are archived when they start to fail integration testing with the latest CLN release, at which point they will be considered unmaintained.

Installation

To install and activate a plugin you need to stop your lightningd and restart it with the plugin argument like this:

lightningd --plugin=/path/to/plugin/directory/plugin_file_name.py

Notes:

  • The plugin_file_name.py must have executable permissions: chmod a+x plugin_file_name.py
    • You must have git core.fileMode set to true to reflect the permissions in git
    • On Windows you might need to do the git add command in WSL to be able to change the permissions
  • A plugin can be written in any programming language, as it interacts with lightningd purely using stdin/stdout pipes.

Automatic plugin initialization

Alternatively, especially when you use multiple plugins, you can copy or symlink all plugin directories into your ~/.lightning/plugins directory. The daemon will load each executable it finds in sub-directories as a plugin. In this case you don't need to manage all the --plugin=... parameters.

Dynamic plugin initialization

Most of the plugins can be managed using the RPC interface. Use

lightning-cli plugin start /path/to/plugin/directory/plugin_file_name

to start it, and

lightning-cli plugin stop /path/to/plugin/directory/plugin_file_name

to stop it.

As a plugin developer this option is configurable with all the available plugin libraries, and defaults to true.

PYTHONPATH and pyln

To simplify plugin development you can rely on pyln-client for the plugin implementation, pyln-proto if you need to parse or write lightning protocol messages, and pyln-testing in order to write tests. These libraries can be retrieved in a number of different ways:

  • Using pip tools: pip3 install pyln-client pyln-testing
  • Using the PYTHONPATH environment variable to include your clightning's shipped pyln-* libraries:
export PYTHONPATH=/path/to/lightnind/contrib/pyln-client:/path/to/lightnind/contrib/pyln-testing:$PYTHONPATH

Writing tests

The pyln-testing library provides a number of helpers and fixtures to write tests. While not strictly necessary, writing a test will ensure that your plugin is working correctly against a number of configurations (both with and without DEVELOPER, COMPAT and EXPERIMENTAL_FEATURES), and more importantly that they will continue to work with newly release versions of Core-Lightning.

Writing a test is as simple as this:

  • The framework will look for unittest filenames starting with test_.
  • The test functions should also start with test_.
from pyln.testing.fixtures import *

pluginopt = {'plugin': os.path.join(os.path.dirname(__file__), "YOUR_PLUGIN.py")}

def test_your_plugin(node_factory, bitcoind):
    l1 = node_factory.get_node(options=pluginopt)
    s = l1.rpc.getinfo()
    assert(s['network'] == 'regtest') # or whatever you want to test

Tests are run against pull requests, all commits on master, as well as once ever 24 hours to test against the latest master branch of the Core-Lightning development tree.

Running tests locally can be done like this: (make sure the PYTHONPATH env variable is correct)

pytest YOUR_PLUGIN/YOUR_TEST.py

Python plugins specifics

Additional dependencies

Additionally, some Python plugins come with a requirements.txt which can be used to install the plugin's dependencies using the pip tools:

pip3 install -r requirements.txt

Note: You might need to also specify the --user command line flag depending on your environment.

Contributing

Minimum supported Python version

The minimum supported version of Python for this repository is currently 3.9.x (12 June 2025). Python plugins users must ensure to have a version >= 3.9. Python plugins developers must ensure their plugin to work with all Python versions >= 3.9.

Whenever submitting code contributions for this repository, we should try to stick to the format 'lightning' uses, something like:

plugin name: One subject line
        (empty line)
more detailed description (if any)

More Plugins from the Community

Plugin Builder Resources