cln-plugins/sauron
2026-04-20 13:46:22 +02:00
..
tests sauron: make tests more robust 2025-02-07 11:14:38 -06:00
.gitignore sauron: prepare for mutinynet support 2024-12-10 12:56:06 -06:00
art.py sauron: migrate to uv shebang 2025-12-05 20:49:32 +01:00
pyproject.toml sauron: upgrade min version of python to 3.10 and pyln packages to v25.9 2026-04-20 13:46:22 +02:00
README.md python plugins: add note for systemd and uv 2025-12-22 15:27:54 +01:00
sauron.py sauron: migrate to uv shebang 2025-12-05 20:49:32 +01:00
uv.lock sauron: upgrade min version of python to 3.10 and pyln packages to v25.9 2026-04-20 13:46:22 +02:00

Sauron

A Bitcoin backend plugin relying on Esplora.

About

It allows C-lightning to run without needing a local bitcoind, and can be either self-hosted (Esplora is Open Source, and self hosting it is basically a docker one-liner).

This is still a WIP, so is the API C-lightning side. So not to be used for real.

Run

You need to:

  • have uv installed
  • disable the default Bitcoin backend (bcli)
  • register sauron
  • provide the API endpoint you want to use

Here is a fully reptilian example running against blockstream.info:

lightningd --mainnet --disable-plugin bcli --plugin $PWD/sauron.py --sauron-api-endpoint https://blockstream.info/api/

Here is an example running against mutinynet.com:

lightningd --signet --disable-plugin bcli --plugin $PWD/sauron.py --sauron-api-endpoint https://mutinynet.com/api/

You can use also proxy your requests through Tor by specifying a SOCKS proxy to use with the --sauron-tor-proxy startup option, in the form address:port.

Hidden services are also supported :

lightningd --testnet --disable-plugin bcli --plugin $PWD/sauron.py --sauron-tor-proxy localhost:9050 --sauron-api-endpoint http://explorerzydxu5ecjrkwceayqybizmpjjznk5izmitf2modhcusuqlid.onion/testnet/api/

If you use systemd to start CLN, you must have uv in the PATH that systemd uses, which is likely different than the PATH from your shell. Most uv installation methods install uv into your user's home directory (~/.local/bin or ~/.cargo/bin), which systemd cannot access.

You can either:

Option 1: Install uv system-wide (recommended):

curl -LsSf https://astral.sh/uv/install.sh | sudo env UV_INSTALL_DIR="/usr/local/bin" sh

Option 2: Copy your existing user installation:

sudo cp "$(command -v uv)" /usr/local/bin/uv

Option 3: Configure your systemd service to use a custom PATH (see systemd documentation).

To verify uv is accessible to systemd:

sudo systemd-run --user --wait command -v uv

This should output /usr/local/bin/uv.