Skip to main content

Getting Started

LNPlay Origin Story

LNPlay all started when farscapian met one of the creators of Clams Remote. Remote is a web app that uses lnmessage to remotely control one or more backend Core Lightning daemons using the websocket interface.

After learning a bit about Clams, farscapian​​ set out to create a project that Dockerize's Clams. Since Clams Remote requires a Core Lightning node to function, the next logical step was to deploy bitcoind and Core Lightning. Of course, the deployment should wire everything up correctly so Clams Remote can control the Core Lightning node directly.

bitcoin++ hackathon

Soon afterwards, farscapian and Clams Tech joined forces on team ROYGBIV (see full team here) at base58's bitcoin++ conference in Austin TX (2023).

Team ROYGBIV implemented a "BOLT12 Prism" Core Lightning plugin – a payment split implementation focusing on utilizing BOLT12 for receiving and payouts (payment splits).

Well, turns out if you're going to develop a Prism plugin, you will need multiple lightning nodes to properly test payment splits... During the hackathon, team ROYGBIV used a polar lightning test environment for this, but eventually farscapian incorporated the idea into his project by deploying a bunch of CLN containers and connecting them to an overlay network.


It was at this point that farscapian's project, which he called ROYGBIV-stack at the time (now LNPlay), was when was started. LNPlay was used to create the ROYGBIV Demo.

D++'s Lightning LARP

One of the ROYGBIV team members was D++, a well-known Bitcoin educator in the space who presented her Lightning LARP at the opening of the conference.

"Bitcoin is for enemies, Lightning is for friends" she reminded the room. After her presentation at the hackathon, there was an opportunity to discuss the challenges of the presentation; namely the high fee environment and slow confirmation times of mainnet, leading to less-than-optimal user experience. An educational tool that could use regtest with shorter, more consistent block times would improve the overall experience of the presentation.

Scaling LNPlay

farscapian was determined to scale LNPlay such that multiple Core Lightning Nodes can be on a dedicated regtest environment having short blocker times. LNPlay can now reliably deploy 200 CLN nodes, each exposing the websocket and REST interfaces, all secured over TLS (reverse proxy is nginx; certs via certbot). Thus, when a conference or meetup attendee scans a unique QR code, their browsers will open ready to control a dedicated lightning node using Clams Remote. Neat! They can go around and open channels and make payments to each other. Each node is funded with 1 BTC by default.

BitBlockBoom Lighting LARP

With a working prototype (called roygbiv-stack at the time), farscapian, Clams Tech, and D++ set out to do a conference event to perfect the Lightning LARP. The seminal event for LNPlay was at BitBlockBoom 2023 in Austin TX. The presentation went great and was generally well-received by around ~80 or so participants.

After the event, LNPlay underwent some further updates to improve scalability and deployment reliability, and to develop other scripts and to facilitate the development and testing of Prisms.

Special thanks to Clams Tech for adding functionality in the (server-side) app to parse these special links, and for implementing "LARP mode" which simplifies the Clams Remote interface for LNPlay participants.

tabconf 2023 - team

At tabconf 2023, John with Clams Tech, farscapian, plebpoet, and NinjaGrannyHodl joined forces to create The objectives during the hackathon were:

  1. create a front-end application that communicates with CLN API to issue invoices and display connection strings, and
  2. a CLN plugin that implements the API for ordering and providing connection strings back to the front-end application.

The final piece of is the provisioning piece; i.e., what happens AFTER a customer submits an order. This piece was left out of the tabconf hackathon but has undergone further development since.

Before provisioning plugin could be completed, Sovereign Stack had to undergo migration from LXD to Incus due to a project fork.