Module catalog

BLVM node runs optional features as separate, process-isolated modules. See Building modules to build your own.

Available modules

Core integration modules (documented in this book):

Registry modules (bootstrap from registry/modules.json):

Module system architecture

flowchart LR TOML[blvm.toml pin] --> REG{Registry URL?} REG -->|Yes| DL[Download release binary] REG -->|No| DISK[modules_dir on disk] DL --> VERIFY[sha256sums.txt verify] DISK --> SPAWN VERIFY --> SPAWN[Spawn process] SPAWN --> IPC[Module IPC / events] IPC --> RPC[Optional JSON-RPC extensions]

Modules run in separate processes with IPC (Module System Architecture):

  • Process isolation: Module crash does not take down the node
  • Consensus isolation: Modules cannot alter consensus rules or the UTXO set
  • Defined APIs: IPC, ModuleAPI, and optional JSON-RPC extension

Installing modules

Pin modules in blvm.toml under [modules] (merge into your existing file: a standalone snippet still needs transport_preference and network keys elsewhere in the file):

[modules]
registry_url = "https://raw.githubusercontent.com/BTCDecoded/blvm/main/registry/modules.json"
blvm-mesh = "0.1.*"
blvm-zmq = "0.1.*"

The node downloads version-pinned binaries from GitHub Releases (sha256sums.txt on each tag) when a pinned module is missing on disk. See blvm README in the blvm repository for the full bootstrap contract.

Build from source

cargo install blvm-lightning # when published on crates.io
# or clone BTCDecoded/blvm-<name>, cargo build --release, place binary per module.toml

Manual placement

  1. Build the module: cargo build --release
  2. Place the binary and module.toml under the node module search path
  3. Restart the node or load at runtime via configuration / module manager

Module configuration

Each module uses module.toml plus optional config.toml. See per-module pages linked above and Node configuration.

  • Load at startup when pinned under [modules] (inline blvm-zmq = "0.1.*") or loaded at runtime via RPC
  • Unload without stopping the base node
  • Reload configuration where the module supports hot reload

WASM modules (wasm-modules)

When the node loads WebAssembly guests (wasm-modules / blvm-sdk embedding), treat them as trusted only if your governance policy says so. The embedder applies wasmtime fuel and store limits with conservative defaults; override per module via [modules.<name>] keys in node configuration guide.

See Also