Relays as Lightning Service Providers
Identity announces. Infrastructure operates. Custody stays with the user.
This is a living document as I am drafting and crafting thoughts and ideas. It will change over time, or it may not. For now, it's purpose is to help me organize thoughts, in the open, and ideally spur discussion. LLMs are used in this journey.
Latest: 2026.05.20
Lightning onboarding on Nostr is bad enough that your Nostr identity keys are now being treated as Bitcoin spending keys. They shouldn't have to. The convenience that motivates "npub-derived on-chain wallets" is real but the trade is terrible, and the right alternative is buildable today out of pieces that are mostly already shipping.
This is a vision document for what I'm calling "Relay-LSP": a Nostr relay operator that also runs a Lightning Service Provider, exposed to clients over NIP-47 Nostr Wallet Connect, with the user's Lightning keys generated and held on the user's device. It is the Lightning sibling to NIP-SP, which solves the same problem on the on-chain rail using Silent Payments. Together they cover the full payment surface a Nostr user needs — easy public Lightning payments, private self-custodied on-chain payments, neither derived from your identity key, neither custodial by default.
The principles are the same as everything else I'm building toward. Identity announces a payment endpoint. The infrastructure to receive on that endpoint is operated by someone else. Custody of the keys that can spend stays with the user. The boundary between operational trust (acceptable) and custodial trust (not acceptable) is enforced by the protocol, not by the operator's promises.
The wrong-turn answer that needs replacing#
The npub-derived wallet pattern (generating a Bitcoin spending key deterministically from a Nostr identity key) emerges from a real and legitimate frustration: Lightning onboarding is annoying, custodial wallets are easy, and users will choose easy over correct every time they are forced to choose. The pattern ships a permanent, enumerable, identity-linked on-chain address. It reuses the social key as a spending key, the worst-case privacy and key-security pattern, in exchange for the convenience of zero setup.
The convenience is the only legitimate motivation. The convenience is also fully achievable without any of those tradeoffs, by delivering non-custodial Lightning on the rail it actually belongs to with a Nostr-native onboarding flow. The detour exists because nobody has shipped the polished version of the correct answer yet. Most of the pieces are deployed; what's missing is the integration and the policy expectations between user and operator.
This document specifies how those pieces compose.
Principles#
These are inherited from the broader trust-inversion thesis I'm building toward in nostr-station and nostrOS, applied to the payment layer:
Identity announces; never generates. The npub is the handle. It is never used to derive a payment endpoint, a wallet key, or a node identity. All payment endpoints are independently generated and published under the identity. The identity layer announces; the payment layer operates on its own keys.
Custody stays with the user. The user's client holds the Lightning signing keys. The Relay-LSP holds channels, liquidity, and uptime — never funds it cannot prove the user authorized. There is no scenario in which the operator can spend on the user's behalf.
Operational trust is acceptable; custodial trust is not. A Relay-LSP can refuse to route, force-close a channel, or go offline. It cannot steal, sign, or impersonate. That boundary is not a feature of any particular operator's morals; it is what the protocol allows and forbids.
Pluralism is structural. A user must be able to choose, switch, or self-host their Relay-LSP without losing their npub, contacts, or social graph. A single dominant operator is a failure mode, and the spec is responsible for ensuring it doesn't become one.
Public rails stay public; private rails stay private. Lightning zaps (NIP-57) are public-by-design — that is their entire point. NIP-SP on-chain payments are silent-by-design. Relay-LSP does not blur this line. A user's profile carries both endpoints; the sender chooses the rail with full knowledge of the privacy properties of each.
The user journey#
A new user installs a Nostr client. The client generates a Nostr keypair on-device and walks through profile setup. As part of that flow, it offers Lightning onboarding as a single optional step.
If accepted:
The client generates a Lightning wallet locally — LDK, Greenlight, Phoenix-style, whatever the client embeds. Keys held by the user.
The client connects, over NIP-47, to a Relay-LSP. By default the relay the user already selected; alternatively any other operator the user picks.
The Relay-LSP provisions inbound liquidity (a JIT channel or equivalent) and issues the user a Lightning address at its domain —
handle@relay.example.com.The client writes the address into the user's
kind:0profile metadata aslud16, alongside any other payment fields the user has configured (NIP-SP'ssp_addressfor on-chain, etc.).The user is now zappable, non-custodial, and ready. Elapsed time comparable to filling in a username and avatar.
Subsequent payments use the existing flows. A sender's client resolves the recipient's lud16 from profile metadata, requests a BOLT11 invoice from the Relay-LSP, and pays it. Zap receipts (kind 9735) are published as today.
Architecture#
+--------------------+ NIP-47 (NWC) +---------------------+
| User's Device | <-------------------> | Relay-LSP |
| (holds LN keys) | encrypted RPC | (channels, routing, |
| | | uptime, liquidity) |
+--------------------+ +---------------------+
| |
| publishes lud16 in kind:0 | issues lud16
| publishes sp_address in kind:0 (NIP-SP) | at its domain
v v
+--------------------------------------------------------------+
| Nostr Relays |
| (profile metadata, zap receipts, NWC transport) |
+--------------------------------------------------------------+
|
v
+-----------------+
| Lightning Network|
+-----------------+
The user's device holds the Lightning private keys (in the client today, in OS-managed hardware custody on nostrOS) and signs invoices and payments locally. The device is the source of truth for the user's balance.
The Relay-LSP runs Lightning node(s), provides inbound liquidity, routes payments, and serves the user's lud16 endpoint. It sees payment metadata (it is the recipient's entry point) but cannot move funds without the user's signature. NIP-47 is the transport between them — encrypted RPC, not custody.
Nostr relays carry the profile metadata, zap receipts, and the NWC transport. A Relay-LSP is also a Nostr relay in the canonical deployment, but the two roles can be separated: a relay operator may provide LSP service for users on other relays, and vice versa.
What's already deployed#
This is composition, not invention. Most of the pieces ship today:
| Component | Status |
|---|---|
lud16 in kind:0 profile metadata |
Deployed, standard |
| NIP-47 (Nostr Wallet Connect) | Deployed, in use |
| LSPs (Phoenix, Breez, Olympus, Alby Hub) | Mature and growing |
| On-device LN wallets (LDK, Greenlight) | Mature |
| NIP-SP (on-chain sibling) | Draft/Proposed |
The novel work is integration and policy. Making LSP service first-class to relay operators. Exposing it over NWC with consistent discovery. Standardizing the trust expectations between user and operator. Building the client UX so a new user genuinely experiences this as a single tap.
Trust boundaries — what the operator can and cannot do#
The Relay-LSP can:
Refuse to route a payment (censorship at the routing layer).
Force-close a channel (the user recovers funds on-chain, with delay).
Go offline (the user's payments fail until they migrate).
See routing-level metadata for payments to the user, including sender identity on zaps.
Charge fees for liquidity and routing.
The Relay-LSP cannot:
Sign payments or spend user funds.
Hold user funds in any custodial sense — funds live in user- controlled channels.
Impersonate the user on Nostr.
Prevent the user from migrating to another operator.
This is the non-custodial standard. It is the same trust model that Phoenix and Breez already deliver today. What this document standardizes is the expression of that model inside the Nostr ecosystem, with the relay layer as the natural deployment vector.
The honest tradeoffs#
Three things deserve more weight than a typical vision document gives them.
The Relay-LSP is a metadata surveillance point. It cannot steal your money, but it sees the payment graph keyed to your npub — every inbound zap, every sender, every amount, every timestamp. A self-hosted Lightning node avoids this; using any LSP, custodial or not, accepts it. Tor wiring on the user side hides location and ISP from the LSP; it does not hide the payment graph itself. Users who require payment-graph privacy should self-host. Users who don't can choose an operator whose privacy policy they trust, knowing that the trust is operational, not custodial.
Force-closure recovery is the actual UX cliff. The pitch of "non-custodial Lightning onboarding" sells a smooth experience. The day a Relay-LSP goes bad — shutdown, hostile force-close, data corruption — the user has to recover funds via on-chain transactions with a multi-day timelock. Clients shipping Relay-LSP support MUST ship explicit force-close recovery flows. The spec MUST define what backup data the user retains, where their on-chain UTXOs land, and how recovery proceeds. If this cliff is scary enough, users will rationally choose custodial wallets despite the trust cost, and the whole design fails. Solving force-closure UX is not a footnote.
Liquidity economics matter. JIT channels cost money. A user receiving their first 5,000 sat zap might find the Relay-LSP took 1,000 sats in liquidity fees, which feels worse than a custodial service that hides the cost. Operators have to be honest about liquidity pricing, clients have to surface it without scaring new users, and the ecosystem has to find a sustainable economic model. This is a real product problem and the spec doesn't get to wave it away.
Pluralism only has teeth if migration is genuinely easy. Migration involves closing channels with the old operator, opening with a new one, and republishing lud16 — operationally non-trivial. If migration takes 30 minutes of attention and 3,000 sats of on-chain fees, pluralism in principle becomes lock-in in practice. Clients MUST ship guided migration flows; the spec SHOULD define the migration contract; ecosystems that grow around Relay-LSP SHOULD prioritize operator-portability tooling as much as they prioritize onboarding.
Relationship to other specs#
NIP-57 (zaps). Unchanged. Relay-LSP makes
lud16provisioning effortless; the zap protocol itself is untouched. Zaps remain public-by-design.NIP-47 (NWC). Used as-is. The transport layer between client and Relay-LSP.
NIP-SP (Silent Payment Addresses in Profile Metadata). The on-chain sibling. A user's profile may carry both
lud16(Lightning, via Relay-LSP) andsp_address(on-chain, via independently generated SP keys). Senders choose the rail with full awareness of the privacy properties of each.kind:0profile metadata. The publication surface for both endpoints. No new event kind required for the core mechanism.
The shape mirrors [NIP-SP](Relays as Lightning Service Providers) deliberately: the identity layer announces the endpoint; the payment layer operates on its own keys.
How this fits with nostr-station and nostrOS#
This is a sibling document to nostrOS and nostr-station implementation work. nostrOS is the substrate (a sovereign nsite-native operating system, with hardware-rooted identity and OS-mediated capability brokering); Relay-LSP is one of the payment-layer services that sit on top.
The connection points are clean:
Hardware-rooted custody extends naturally to Lightning keys. The
nostrddaemon in the nostrOS spec already holds the Nostr identity key in a secure element (TPM on desktop, Titan M2 on mobile). The same hardware-rooted custody pattern protects a Lightning seed. Apps request signatures; the daemon performs them; keys never leave hardware.System-level Tor wiring covers LSP traffic. Already part of the nostrOS architecture for relay and Blossom traffic; extending it to LSP-bound NWC traffic is a one-line generalization. Mitigates the network-observer side of the metadata-surveillance problem.
Profile metadata management is OS-level on nostrOS. Setting and rotating
lud16(orsp_address) becomes a system operation, not a per-app concern.
None of this is required for Relay-LSP to work. It can ship on stock devices via Phoenix-style mobile apps and any Nostr web client. nostrOS just happens to make it stronger.
What this is not#
To be specific about the boundaries:
Not custodial. A relay that holds user funds is a different product entirely. This document does not endorse one.
Not an exchange. The user does not deposit fiat, sell goods, or KYC.
Not a zap replacement. Zaps already work; this makes them easy to set up.
Not an on-chain replacement. NIP-SP handles the on-chain case. This is the Lightning case. They coexist in the same profile.
Not an npub-derived wallet. No payment key, node key, or wallet key is derived from the Nostr identity key at any point.
Open questions#
These are the parts most worth arguing with:
Discovery without centralization. How do clients enumerate available Relay-LSPs at onboarding without hard-coding a list? Likely answer: a NIP for self-advertisement events, with client-side filtering and reputation surfaces.
Honest liquidity pricing. How is the cost surfaced without driving users back to custodial alternatives that hide it?
Force-closure recovery UX. What does a tested, polished recovery flow look like? What backup data does the user retain?
Reputation and accountability. How do users evaluate operators without that evaluation centralizing into a few "trusted" lists?
Operator economics. What sustains a relay operator running an LSP? Channel fees alone? Optional subscriptions? Bundled with relay paid-relay models?
Composition with NIP-SP. When a user has both
lud16andsp_address, how do sender clients present the rail choice? This is a UX question with privacy implications.
A Unique Standing#
Shocknet's Lightning.Pub is the nearest thing. It's a "Nostr Native Lightning node" that uses commodity Nostr relays as transport with NIP-44 encryption, and bundles a bootstrap liquidity provider that "provides initial channel funding as a service credit until you can afford your own channels". Critically — and this is where it differs from this concept — Lightning.Pub is the "Uncle Jim" model: a node-runner shares their node with friends/family. This concept is the inverse: the relay operator provides LSP service to many users whose keys live on-device. Different shape, overlapping primitives. They also pushed their own NIP-68 Lightning Debit Requests explicitly because "NWC UX is failing people bigly today" — worth a read, as thread is exactly the discourse this is entering.
Alby Hub is the most mature reference implementation of the user side of this stack. "A self-sovereign lightning wallet... powered by a full lightning node with 1-click channel management," running an embedded LDK node or remote LND, exposed over NWC. Alby Cloud hosts it for a monthly fee; Start9 and Umbrel let you self-host. They formally partnered with LQWD as their LSP. So the Alby Hub + LQWD pairing is essentially what Relay-LSP describes, minus the relay-operator role — LQWD is a pure-play LSP business, not a relay operator. Alby is also publicly thinking about L2s like Spark and Ark to bring NWC to "more casual, less technical and beginner users", which is the same wedge this is aiming at from a different angle.
Voltage sells managed self-custodial Lightning nodes wired to Nostr — same idea, classic SaaS posture, no relay integration story.
Nobody has framed the relay operator as the natural LSP. Lightning.Pub assumes a node-runner. Alby/Voltage assume a cloud provider. This concept is the first I can find that says the operator who already runs your relay should also be the operator who provisions your liquidity. That's a real architectural claim with consequences (pluralism, censorship resistance, NIP-65 relay choice flowing into payment choice).
The "operational trust vs custodial trust" framing is sharper than what the field is using. Alby and Shocknet both say "self-custodial" and then ship complicated trust models around channel backups, recovery, and JIT trust.
The composition with NIP-SP is genuine. No one else is publishing a paired Lightning + on-chain-private-by-default spec under one identity-announces principle. That's the differentiator.
Closing#
The on-chain-zap detour is a symptom of unsolved Lightning onboarding. Solve onboarding correctly — non-custodially, with the Nostr identity layer doing only what identity layers should do — and the detour loses its reason to exist. Pair Relay-LSP with NIP-SP and the entire payment surface a Nostr user needs is covered: easy public payments on Lightning, private self-custodied payments on-chain, neither derived from the identity key, neither custodial by default.
The principle is worth saying twice, because it applies more places than just payments:
> Identity announces. Infrastructure operates. Custody stays with the user.
That is how the broader sovereign-Nostr stack should be built. Relay- LSP is one application of it. NIP-SP is another. The same shape will recur at the storage layer, the social-graph-backup layer, and anywhere else where the convenient-but-wrong pattern is "derive from npub."
If you operate a relay and are interested in adding LSP service to it, get in touch — the missing piece is operator commitment, and a small number of committed operators is enough to make this real.
A relay is a websocket server with a database. An LSP is a Lightning node with inbound liquidity and uptime. There's no protocol-level reason one operator can't be both, and these specs are explicitly designed for that composition. nostr-station already ships the relay half (in-process, SQLite, loopback-bound). Adding LSP service is "embed an LDK or CLN node, expose NWC, provision channels" — every component exists.
In practice, the gap between "I run a relay" and "I run an LSP for myself" is small. The gap between that and "I run an LSP for others" is large. The threshold matters because the pluralism principle depends on the latter being viable for many operators, not just the former.
Self-LSP (relay + LSP for your own npub only):
Genuinely easy. nostr-station could ship this. You run a relay you already trust, you run an LDK node on the same box, you wire NWC between your client and your local node, you publish
lud16at your own domain. No JIT channels needed — you open your own channels when you want them. No liquidity economics, no operator-trust questions, no metadata surveillance because you're surveilling yourself. This is the sovereign endpoint for a technical user and it's the right default for an eventual nostrOS.The honest tradeoffs in this article mostly evaporate at this scale: force-closure UX is your problem alone, liquidity pricing is between you and your channel partners, migration is moot.
Relay-LSP for others (this document as written):
This is where the work lives. The operator now has to: run a node with enough inbound capacity to serve N users' zaps, manage JIT channel provisioning, handle force-closure recovery support requests, maintain uptime SLA, surface honest fee disclosure, possibly handle regulatory exposure depending on jurisdiction. The relay-operator skillset and the LSP-operator skillset overlap on "linux sysadmin" and diverge on everything else.
Liquidity economics in particular: a relay operator running a small relay for 50 friends is a hobby. An LSP serving 50 users with average 10k sat inbound need is ~500k sats of capital locked up, plus the operational discipline to keep it rebalanced. That's not insurmountable, but it's not "flip a switch on your relay."
The interesting middle: self-hosted nostrOS device as its own Relay-LSP. This is where the spec gets philosophically clean. If nostrOS ships hardware-rooted Lightning keys (as the spec implies in the "Hardware-rooted custody extends naturally to Lightning keys" section), and the device runs its own relay (as nostr-station already does), then a single user device is its own everything: identity, relay, LSP, on-chain wallet, and other stuff. The operator/user distinction collapses. No metadata surveillance because nobody else is in the loop. The full trust-inversion thesis lands at one box.
The catch is that "be your own LSP" only works if you can be your own Lightning node — which means inbound liquidity (someone opens a channel to you), uptime (you need to be online to receive), and bootstrap capital. The Lightning network doesn't have a "just receive payments with no setup" mode without an LSP somewhere in the picture. So the truly sovereign nostrOS device is still going to bootstrap from someone else's LSP for its first inbound channel, even if it eventually runs its own.
Companion documents:
All of these (including this one) are related, living pieces of documentation and/or products. These articles and documents and project will shift as this multi-faceted effort continues.
nostrOS vision spec — the OS layer that this composes with naturally but does not require.
nostr-station — the userspace prototype I'm building toward nostrOS.
(a proof-of-concept Relay-LSP may soon be shipped in nostr-station instances and would provision lud16 endpoints to test users.)NIP-SP — the on-chain sibling to this document.


Comments
No comments yet. Start the conversation.