What is a plugin anyway?
- Executable file
- Started by CLN
- Runs as a subprocess of CLN
- Communicates with CLN via the plugin’s stdin and stdout
- Can be written in any language
- Can be launched at CLN startup or dynamically launched
- Extends CLN’s functionality via:
- RPC methods
- Event stream notifications
- Hooks
In this tutorial, we'll look at each of these elements more closely.
Examples of plugins
Built in plugins:
- Pay (pays invoices)
- Bcli (connects to a bitcoin backend)
- Keysend (aids in sending and receiving keysend payments)
- Bookkeeper (accounting manager)
Official plugins repo
- Summary (Print a nice summary of the node status)
- Circular (A smart rebalancing plugin for Core Lightning routing nodes)
- Watchtower (Watchtower client for The Eye of Satoshi)
- Sauron (A Bitcoin backend relying on Esplora's API)
- Reckless (An experimental plugin manager)
Other
- CLBOSS (Automated node manager)
Languages and Frameworks
Python
- pyln-client by @cdecker
Rust
- cln-plugin by @cdecker
Go
- glightning by @niftynei
C
- libplugin by @rustyrussell
C++
- lightning-cpp by @darosior
Javascript
- clightningjs by @darosior
Typescript
- core-ln.ts by @AaronDewes
Java
- JRPClightning by @vincenzopalazzo
C#
- DotNetLightning by @joemphilips
Kotlin
- Tutorial/example using JRPClightning Java Framework by @vincenzopalazzo