#

12

(9 articles)

Lightning Transport Protocols: BOLT12, CLINK, L402 and NWC Design & Comparison

Summarising here some notes I've been consolidating about the comparison of the four protocols that currently serve as transport layers for Lightning Network interactions, written from the perspective of the architectural decisions that define what each protocol can and cannot do. ## Overview The Lightning Network has no single standardized transport layer. When a wallet needs to request an invoice, a node needs to send a payment, or an app needs to authorize a transaction, each pair of participants must agree on how to communicate. Four protocols have emerged in the past years competing for this role, and each makes fundamentally different choices about where identity lives, how messages route, and what infrastructure the endpoints must run. Before looking at the protocols themselves, it helps to name the constraints that from my perspective any viable Lightning transport has to navigate: **Receive without a server.** If a protocol requires an HTTP endpoint or a hosted wallet service to receive payments, it excludes self-custodial mobile users, Tor users, and anyone behind a Carrier-grade NAT. Those are most of the people who would benefit most from self-sovereign Lightning. **Traverse NAT and firewalls.** The majority of Lightning nodes are not reachable on the open internet because most implementations decided Tor was the default. A transport that depends on inbound TCP connections or publicly routable IP addresses will only work for a minority of deployments. **Support both, sending and receiving, on the same layer.** Unidirectional protocols force developers to stitch together multiple systems. Every seam is a place where user experience degrades, a key gets exposed, or a payment fails silently. **Minimize external dependencies.** Every dependency on DNS (censorship), HTTP (surveilllance) infrastructure, a specific relay operator, or a third-party routing node is a potential point of failure by censorship or surveillance. With those constraints in mind, here is how the four protocols compare (in alphabetical order): | Dimension | BOLT12 | CLINK | L402 | NWC (Nostr Wallet Connect) | | --------------------------- | ------------------------------------------------------------------------------- | -------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------ | | **Transport Layer** | Lightning onion messages (BOLT #12) | Nostr relay events (kind 21001/21002/21003) | HTTP (REST/gRPC) | Nostr relay events (NIP-47, kind 23194/23195) | | **Identity** | Node pubkey (blinded paths) | Nostr pubkey (NIP-05 optional) | Macaroon or token plus preimage (stateless) | Nostr pubkey (per-connection ephemeral keys) | | **Encryption** | Onion encryption (hop-by-hop) | NIP-44 (end-to-end) | TLS (transport) plus macaroon HMAC | NIP-44 preferred; NIP-04 legacy still common | | **Directionality** | Bidirectional (offer leads to invoice request leads to invoice) | Bidirectional (Offers, Debits, Manage) | Unidirectional (server gates access) | Unidirectional (wallet as service) | | **Receive without server** | Yes. Onion messages only. | Yes. Nostr relay only. | No. Requires HTTP server. | No. Requires hosted wallet service. | | **Works behind NAT or Tor** | Partial. Onion messages unreliable in practice. | Yes | No. Requires inbound HTTP. | Yes (relay mediated) | | **Infrastructure Required** | Onion-message-capable LN node (CLN, LDK, or Eclair) | Nostr relay (ephemeral events, no storage) | HTTP server or reverse proxy (Aperture) | Nostr relay (durable events) plus hosted wallet service | | **Static Identifiers** | `lno1...` offers | `noffer1...`, `ndebit1...`, `nmanage1...` | HTTP 402 plus `WWW-Authenticate` header | `nostr+walletconnect://...` URI. No static receive code. | | **Invoice Format** | BOLT12 invoices (native) | BOLT11 (returned over Nostr) | BOLT11 (returned in 402 response) | BOLT11 (returned over Nostr) | | **Preimage Return** | Inherent (protocol native) | Yes | Required. Authentication fails without it. | Yes (wallet dependent) | | **Maturity** | Spec merged September 2024. CLN, LDK, Eclair native. LND via LNDK sidecar only. | Early production. Zeus, Lightning.Pub, ShockWallet, CLINK SDK. | Production. Lightning Labs Aperture used in Loop and Pool. | Production. Alby, Primal, Damus, Phoenix, and others. | | **Web Compatible** | Not natively. Requires onion-message bridge. | Yes (Nostr DM over WebSocket) | Yes (native HTTP) | Yes (via Nostr relay WebSocket) | | **AI Agent Ready** | Low. No agent tooling exists. | Emerging. SDK exists, no MCP yet. | High. MCP server in Aperture. Lightning Agent Tools released. | High. SDKs in JavaScript, Rust, Python, Go. MCP gap remains. | | **LND Support** | Via LNDK sidecar only (no native LND support) | Yes, via Lightning.Pub on top of LND | Yes, native LND REST | Yes, via LNC, CLNRest, LndHub | *** ## BOLT12 (Offers) **Philosophy.** Extend the Lightning protocol itself. Keep everything inside the LN graph. No external transport. No web infrastructure. No Nostr. ### How It Works The receiver publishes a static `lno1...` offer. This string encodes the receiver's terms: accepted currency, optional amount, description, and a blinded path that routes to the receiver's node without revealing its identity. The sender's wallet reads the offer and sends an `invoice_request` message over Lightning onion messages, traveling through the blinded path. The receiver's node generates a fresh BOLT12 invoice with a unique payment hash and returns it over the same onion message channel. The sender then pays via standard HTLC forwarding. Each payment gets its own hash and preimage, so the offer itself is safe to publish anywhere.[^2] BOLT12 has been heavily [discussed here in SN](https://stacker.news/search/r/deSign_r?q=%22BOLT12%22&what=posts)? ### Design Decisions That Shaped BOLT12 The decision to use onion messages as the transport layer was the defining architectural choice. Onion messages are the only communication channel that exists inside the Lightning protocol itself, so staying native meant accepting their constraints. These messages are asynchronous, have no guaranteed delivery timeline, and must be routed through participating nodes that may be offline or slow. The tradeoff was deliberate: protocol purity and privacy (blinded paths prevent the sender from learning the receiver's node identity) in exchange for reliability and web accessibility. The blinded path design was a second defining decision. Rather than exposing the receiver's node pubkey, the offer encodes a path through intermediate nodes. This means the sender never learns who the receiver is. But it also means the offer is tied to specific routing topology. If the intermediate nodes go offline, the offer becomes unreachable until the receiver publishes a new one. ### Pros * Native to Lightning. No external dependencies. No HTTP. No Nostr. No DNS. * Privacy by design. Blinded paths hide the receiver's node identity. Fresh payment hash per invoice. * Reusable static offers. Safe to publish on websites, in podcast feeds, and on QR codes. * Spec merged. Officially part of the BOLT specification as of September 24, 2024, the first new BOLT added since 2017.[^1] * Pull payments. Can request invoices, which makes agent-to-agent flows possible. * Subscription ready. Supports recurring payment flows natively. ### Cons * Onion message unreliability. Asynchronous delivery over the LN graph can be slow. Not practical for web applications that expect synchronous responses. * Not web friendly. Browsers cannot send onion messages. Requires a bridge or dedicated node client. * LND holdout. LND has no native support. Available only through the experimental LNDK sidecar daemon.[^3] * Three native implementations (CLN, LDK, Eclair) but the dominant node implementation is not among them. * No existing agent tooling. Zero MCP servers or agent-facing SDKs despite architectural suitability. ### End User Experience For the end user, BOLT12 is invisible when it works and mystifying when it does not. A user who scans a BOLT12 offer from a merchant's website expects to pay instantly. If the onion message takes thirty seconds to deliver or never arrives at all (because an intermediate node in the blinded path is offline), there is no clear error message. The user sees only a spinner or a timeout. The privacy benefits are real but invisible, while the reliability problems are immediate and frustrating. For node operators, the experience is better: CLN users enable offers with a flag and get reusable payment codes without maintaining a web server. But for the typical mobile wallet user, BOLT12 remains years away from being a reliable daily driver. *** ## CLINK (Common Lightning Interface for Nostr Keys) **Philosophy.** Use Nostr as the transport layer for all Lightning interactions. Replace HTTP callbacks, onion messages, and pre-shared secrets with signed events published to Nostr relays. ### How It Works The publisher creates a `noffer1...` string. This bech32-encoded payload carries the recipient's Nostr pubkey, a recommended relay URL, and offer metadata including pricing hints. When a client scans or pastes this string, it decodes the TLV data, generates an ephemeral keypair, NIP-44 encrypts a request payload, and publishes a kind 21001 event to the recommended relay. The recipient's wallet (for example Lightning.Pub) picks up the event, generates a BOLT11 invoice, and publishes a response. The client sanity checks that the invoice amount matches the offer and then hands it off to the existing payment flow.[^4] CLINK extends this pattern in two additional directions. Debits (kind 21002, encoded as `ndebit1...`) authorize a remote party to request payments from your node. Manage (kind 21003, encoded as `nmanage1...`) enables delegated node administration with configurable permissions.[^5] All three use the same Nostr event infrastructure, the same NIP-44 encryption, and the same relay-based delivery. ### Design Decisions That Shaped CLINK The choice to build on Nostr rather than invent a new transport was the decisive architectural move. Nostr provides cryptographic identity (every message is signed), a relay-based delivery model (no inbound connections needed), and a well understood event system. CLINK did not need to solve identity, encryption, or message routing. It inherited those from Nostr and defined only the application-layer semantics: what events mean, how offers encode, how debits authorize. [Few](https://stacker.news/items/1003716/r/deSign_r) [conversations](https://stacker.news/items/1018586/r/deSign_r) here on SN as early as last year. The ephemeral event design was a deliberate departure from NWC's approach. CLINK events do not require relay persistence. A relay that refuses to store events can still forward them. This means CLINK works with lightweight relays that have no disk footprint, and it leaves no permanent metadata trail of who requested what from whom. The decision to define three distinct interaction patterns (Offers, Debits, Manage) rather than a single generic RPC method reflects a different philosophy about protocol design. Each pattern encodes a specific relationship: someone offering to be paid, someone authorized to request payment, someone delegated to manage permissions. This makes the protocol more constrained and therefore more analyzable. A wallet can make precise policy decisions about each pattern without interpreting opaque RPC arguments. ### Pros * No web server required. Operates entirely over Nostr relays. Ideal for mobile, Tor, and behind-NAT setups. * Bidirectional. Same transport for sending, receiving, offers, debits, and delegated management. * Builds on Nostr identity. Leverages existing key infrastructure, NIP-05 names, and web-of-trust. * Ephemeral events. Works with relays that do not persist data. No storage footprint. * Blinded path support available. Privacy on par with BOLT12. * Trivially web friendly. Nostr direct messages use WebSocket transport. No onion-message hurdles. ### Cons * Tied to Nostr ecosystem. Requires Nostr relay infrastructure. Centralization risk if relays consolidate. * Immature. Spec still evolving. Limited wallet and node implementations. * Nostr relay dependency. If the recommended relay is down, the offer is unreachable, though multi-relay configuration mitigates this. * Fast-growing smaller community. Far fewer developers and integrations than NWC or L402. ### End User Experience For the end user, CLINK offers the simplest mental model. You have a reusable string that lets people pay you. You share it like a Lightning Address, but nothing breaks if your server goes down because there is no server. The wallet handles the Nostr communication transparently. When you want to authorize a marketplace to pull payments from you (for example a subscription or a usage-based service), you share a debit pointer and set a budget. The marketplace requests payment when needed, your wallet checks the budget, and approves or rejects automatically. The user never sees an invoice, never copies a BOLT11 string, never waits for an onion message. The experience is closer to Venmo than to raw Lightning, but without the custodial dependency. The main friction today is wallet availability. A user who wants to try CLINK needs ShockWallet or a patched version of another wallet. That is a real barrier. But for users already in the Nostr ecosystem, CLINK integrates naturally. The same key that signs their notes can sign their payment requests. Recently [Zeus](https://stacker.news/items/1492370/r/deSign_r) and [Ametyst](https://stacker.news/items/1510180/r/deSign_r) have implemented CLINK. *** ## L402 (Lightning HTTP 402 Protocol) **Philosophy.** Activate HTTP's long dormant 402 status code. Combine Lightning Network payments with cryptographic authentication tokens to create a pay-per-request protocol for web services. ### How It Works The client sends an HTTP request to an L402-gated endpoint. The server responds with HTTP 402 Payment Required and a `WWW-Authenticate` header containing a token (a macaroon is the recommended format) and a BOLT11 Lightning invoice. The token commits to the payment hash of the invoice, which enables stateless verification. The client pays the invoice and obtains the preimage. The client retries the original request with an Authorization header of the form `L402 <base64(token)>:<hex(preimage)>`. The server validates the token's HMAC chain and confirms that the SHA-256 hash of the preimage matches the payment hash stored in the token. If both checks pass, the server serves the resource. No database lookup is required.[^8][^9] Read [what stackers are saying](https://stacker.news/search/r/deSign_r?q=%22L402%22&what=posts) about L402. ### Design Decisions That Shaped L402 The stateless verification design was the key architectural insight. By embedding the payment hash in the token, the server can verify payment without contacting a database or a Lightning node at the time of request. This makes L402 suitable for distributed systems where validation and resource serving may happen on different machines. The choice of macaroons (rather than JWTs or simple API keys) reflects a specific set of requirements. Macaroons support attenuation: a service can hand a macaroon to a client and the client can derive a more restricted macaroon for a sub-agent. They also support third-party caveats, which could enable delegation to other payment services. The protocol specification was updated in bLIP-0026 to use the generic term "token" rather than "macaroon," opening the door to alternative formats, but macaroons remain the reference implementation. The decision to use HTTP as the transport was pragmatic but limiting. HTTP is universal, works with every programming language, and is trivially compatible with existing web infrastructure. But it also constrains L402 to request-response patterns where the client initiates contact. There is no server-to-client payment flow, no push notification, no persistent connection. ### Pros * Web native. Pure HTTP. Works with curl, browsers, and any HTTP client. Zero new infrastructure. * Stateless verification. Servers do not need a payment database. The token plus preimage is self-validating. * Token agnostic. The bLIP-0026 specification uses "token" rather than "macaroon" as the key name. Any token format that commits to the payment hash works.[^10] * Agent native. Agents can discover, pay, and consume APIs without human registration. Aperture ships with an MCP server for native agent control.[^11][^13] * Production ready. Aperture has been used in production by Lightning Labs for Lightning Loop and Pool since launch.[^12] * Standardized. Formalized as bLIP-0026, a Bitcoin Lightning Improvement Proposal.[^10] ### Cons * HTTP only. Limited to web and API gateways. Does not address P2P payments, wallet-to-wallet, or mobile transport. * Failure driven model. The protocol begins with a rejection (402). Requires a round trip of pay and retry. * No identity layer. Stateless by design. No persistent user identity between requests. Not suitable for ongoing budgeted relationships where the user expects to be recognized. * Preimage required. Payment succeeds but API access fails if the wallet does not return the preimage. Common wallets including Primal and OpenNode do not expose preimages. * Unidirectional. Server gated. The client is always the payer. No offer semantics, no debit semantics, no receive flow. ### End User Experience For the end user, L402 is interesting primarily because of what it removes. No signup form. No API key management. No billing dashboard. The first time you hit an L402-gated endpoint, your wallet fires, you approve the payment, and the resource loads. Every subsequent request uses the cached macaroon until it expires or the balance depletes. For one-shot API access (for example a single LLM inference or a data lookup), this is the best experience available. You pay exactly once and move on. The friction appears when the user's wallet does not return preimages. The payment succeeds, the money leaves the wallet, but the API still returns 402 because the client cannot construct the credential. The user sees a confusing state: charged but denied access. This is not a theoretical edge case. It happens with several widely used wallets today. The protocol is unforgiving about this. *** ## NWC (Nostr Wallet Connect) **Philosophy.** Remote control for Lightning wallets over Nostr. Define a standardized API that lets applications send payment requests to a wallet and receive responses, with permission scoping built in. ### How It Works The wallet generates a connection URI with the format `nostr+walletconnect://<wallet_pubkey>?relay=<relay_url>&secret=<client_secret>`. This URI encodes the wallet's public key, a relay for communication, and a randomly generated secret that the client will use to sign and encrypt messages. The user shares this URI with an application by scanning a QR code, following a deeplink, or entering it manually. Once connected, the application sends encrypted NIP-47 events to the wallet via the relay.[^6] The event kind is 23194 for requests and 23195 for responses. Supported methods include `pay_invoice`, `make_invoice`, `lookup_invoice`, `get_balance`, `get_info`, and `list_transactions`. The wallet verifies that the requesting key is authorized for the specific method, decrypts the payload, executes the operation, and returns the result. NWC has been largely [discussed here](https://stacker.news/search/r/deSign_r?q=%22NWC%22&what=posts) too. ### Design Decisions That Shaped NWC The decision to model NWC as a remote procedure call protocol rather than a transport protocol was architectural, not accidental. NWC assumes a client-server relationship. One side (the wallet) is always the service provider. The other side (the app) is always the client. This makes NWC excellent for its intended use case (apps that need to trigger payments from a user's wallet) and unsuitable for anything that requires symmetric peer-to-peer interaction. The per-connection keypair design was a pragmatic security decision. Each NWC connection uses an ephemeral key pair rather than the user's main Nostr identity key. This means a compromised connection does not expose the user's primary key, and revoked connections leave no ability to request new payments. The tradeoff is that managing connections becomes a UX problem. The user needs to generate, share, and revoke connection strings. NWC wallets have addressed this with QR codes and deeplinks, but the mental overhead is higher than a protocol where identity is implicit. The decision to use Nostr relays rather than direct connections was about NAT traversal and mobile compatibility. A mobile wallet behind a carrier-grade NAT cannot accept inbound TCP connections. By placing a relay in the middle, NWC ensures that both parties can communicate regardless of their network topology. The cost is that the relay sees all event metadata (though not the encrypted payload content) and becomes a potential bottleneck or surveillance point. ### Pros * Production ready. Widely deployed across Alby, Primal, Phoenix, Damus, and others. Over 350,000 users.[^7] * Permission scoped. Granular controls including daily limits, per-transaction caps, and method-level scoping. * Mature SDKs. JavaScript, Rust, Python, Go. WebLN adapter for browser-based wallets. * One-click connections. OAuth-like flow for publicly accessible wallets. Nostr flow for mobile or self-hosted. * Wallet agnostic. Works with custodial, self-custodial, and node-backed wallets. * Strong agent readiness. A well designed MCP server wrapping NWC would unlock broad AI agent Lightning payments. ### Cons * Wallet as service, not transport. NWC is fundamentally a remote RPC protocol. It assumes a persistent, hosted wallet service on the other end. There is no NWC flow where two parties interact directly. * Cannot receive without a hosted service. Receiving a payment via NWC requires a wallet service that is always on and internet reachable. A mobile wallet behind NAT cannot receive NWC requests. This is an architectural constraint, not an implementation gap. * No static payment codes. NWC defines how to control a wallet remotely, not how to advertise a payable identity. There is no NWC equivalent of a Lightning Address or BOLT12 offer. Receiving requires pairing LNURL or CLINK on top. * Durable event storage. Unlike CLINK's ephemeral events, NWC typically relies on relay persistence. This creates a metadata footprint of payment activity. * Preimage dependent. Some NWC wallets do not return preimages, which breaks downstream protocols like L402. ### End User Experience NWC delivers the most polished experience of any protocol in this comparison, within its domain. A user who wants to zap a note on a Nostr client clicks a button, scans a QR code that their wallet generates, and from that point forward the zaps happen without further ceremony. For in-app payments (topping up a balance, buying a digital good, tipping a creator), the flow is similar. The wallet connection is set up once and the app handles the rest. The limitations show up when the user wants to do anything outside the app-to-wallet pattern. Receiving money, for example, requires a separate protocol. The user needs a Lightning Address or an LNURL link. If the user is self-custodial and running their own node behind NAT, receiving is a configuration challenge. The wallet app needs a bridge service that is publicly reachable, or the user must rely on a custodial provider. This split between sending (NWC, great) and receiving (some other protocol, variable) is the single biggest UX gap in the NWC ecosystem. For users who are not running their own node, NWC works seamlessly. The wallet provider handles the infrastructure. The user just connects and pays. But that convenience comes with a tradeoff. The wallet provider sees the user's payment history, controls availability, and can impose spending limits. For many users this is acceptable. For users who want self-sovereign Lightning, it is a real compromise. *** ## Conclusion: What Each Protocol Teaches us about Sats Transport Design The four protocols designed for different problems, and each one' strengths map directly to the constraints they chose to accept. BOLT12 is the most principled protocol in this group from a pure Lightning perspective. It is native, private, and spec-canonical. For developers working on Lightning node implementations or protocol research, BOLT12 is the right foundation. The user benefit is subtle but real over time. Reusable offers eliminate the invoice generation step. Blinded paths protect receiver privacy. Subscription flows become possible without external infrastructure. But the practical constraints are severe. LND does not support it. Onion messages are unreliable. The web is inaccessible without bridges. BOLT12 is the long term answer for in-protocol payments, but most developers building user-facing applications today will find these constraints too limiting. CLINK is the only protocol that started from a different question. Not *"how do we control a wallet remotely"* or *"how do we gate an API"* or *"how do we define offers inside the existing protocol.*" The question was ***"how do two parties communicate about Lightning payments over a decentralized network without any of them running a server?"*** That question leads to a different set of design decisions. Identity comes from Nostr keys, not from a node pubkey or a pre-shared secret. Transport comes from Nostr relays, not from the LN graph or HTTP. The protocol is bidirectional by construction because anything less would leave half the payment lifecycle uncovered. For developers, the benefit of CLINK is architectural economy. A single protocol gives you offers for receiving, debits for pull payments, manage for delegation, and identity for persistence across sessions. You do not stitch together NWC for sending, LNURL for receiving, and L402 for API access. You wire up one SDK, define your policies against one event model, and the transport handles the rest. The developer experience today is constrained by the small ecosystem, but the surface area is well defined and the SDK is functional. For end users, the benefit of CLINK is a unified mental model. One identifier that lets people pay you. One authorization flow that lets services request payment from you. One wallet that manages both without distinguishing between "sending mode" and "receiving mode." The UX ideal is an environment where the wallet passively listens for payment requests, applies the user's policy (auto approve small amounts, ask for confirmation on large ones, reject unknown requesters), and the user never copies an invoice or waits for a message to deliver. That is the design target CLINK is aiming at. Whether the ecosystem reaches critical mass is an open question, but the architecture is built for a world where sovereign peers interact directly, not for a world where every payment goes through a hosted intermediary. L402 solves API monetization with cryptographic rigor. For developers who want to charge per request for an API endpoint without building a billing system, L402 is elegant and production proven. The stateless verification design means you can scale authentication without scaling a payment database. The user benefit is the elimination of signup friction. No account creation, no API key provisioning, no credit card form. Pay once and the resource is yours. But L402 is unidirectional and HTTP bound. It does not help a mobile wallet receive a payment, and it breaks silently when the wallet does not return a preimage. For its narrow domain it is excellent. Outside that domain, it is not applicable. NWC solves wallet remote control better than anything else in the ecosystem. For developers building an app that needs to trigger payments from a user's existing wallet, NWC is the right choice today. The SDKs are mature, the deployment surface is wide, and the permission model gives reasonable safety guarantees. The user benefit is clear. Users connect once and pay without friction. The architectural limitation is equally clear. NWC is not a transport protocol. It does not define how two peers discover each other, how they negotiate payment terms, or how they maintain a relationship over time. For those things, you bring another protocol. This was a great exercise to place everything we have on the table for a fair analysis. Users don't care about the tech powering their everyday tools, but yes, it needs to work. More than spotlighting all of them, the answer is now for you to take, build and use the protocols that best suit your needs. *** ## Footnotes [^1]: BOLT12 officially merged into Lightning specification, September 2024. [https://x.com/niftynei/status/1838568847701360861](https://x.com/niftynei/status/1838568847701360861) ; [https://www.nobsbitcoin.com/bolt12-offers-officially-merged-into-lightning-spec/](https://www.nobsbitcoin.com/bolt12-offers-officially-merged-into-lightning-spec/) [^2]: LDK Blog, "BOLT12 Has Arrived." [https://lightningdevkit.org/blog/bolt12-has-arrived/](https://lightningdevkit.org/blog/bolt12-has-arrived/) [^3]: BOLT12 Developers Overview, LNDK documentation. [https://bolt12.org/developers](https://bolt12.org/developers) [^4]: CLINK Protocol by ShockNet. [https://clinkme.dev](https://clinkme.dev/) ; [https://github.com/shocknet/clink-demo](https://github.com/shocknet/clink-demo) [^5]: CLINK SDK (`@shocknet/clink-sdk`) on npm. [https://www.npmjs.com/package/@shocknet/clink-sdk](https://www.npmjs.com/package/@shocknet/clink-sdk) [^6]: NIP-47: Nostr Wallet Connect Specification. [https://github.com/nostr-protocol/nips/blob/master/47.md](https://github.com/nostr-protocol/nips/blob/master/47.md) [^7]: NWC Protocol Overview and Documentation. [https://nwc.dev/](https://nwc.dev/) ; [https://docs.nwc.dev/](https://docs.nwc.dev/) [^8]: L402 Introduction and Motivation. [https://github.com/lightninglabs/L402/blob/master/introduction.md](https://github.com/lightninglabs/L402/blob/master/introduction.md) [^9]: L402 Protocol Specification and Aperture Reference. [https://docs.lightning.engineering/the-lightning-network/l402](https://docs.lightning.engineering/the-lightning-network/l402) [^10]: L402 bLIP-0026 Specification. [https://github.com/Roasbeef/blips/blob/697ae354c205f1aacc450e72067c92a7f2467321/blip-0026.md](https://github.com/Roasbeef/blips/blob/697ae354c205f1aacc450e72067c92a7f2467321/blip-0026.md) ; [https://github.com/lightning/blips/pull/26](https://github.com/lightning/blips/pull/26) [^11]: Aperture Reverse Proxy Documentation. [https://docs.lightning.engineering/lightning-network-tools/aperture](https://docs.lightning.engineering/lightning-network-tools/aperture) [^12]: Lightning Labs (2026). "The Future Is Now: Why L402 Is the Internet-Native Payments Protocol for Agents." [https://lightning.engineering/posts/2026-03-11-L402-for-agents/](https://lightning.engineering/posts/2026-03-11-L402-for-agents/) [^13]: The Block (February 2026). "Lightning Labs Releases AI Agent Tools for Native Bitcoin Lightning Payments." [https://www.theblock.co/post/389584/lightning-labs-releases-ai-agent-tools-for-native-bitcoin-lightning-payments](https://www.theblock.co/post/389584/lightning-labs-releases-ai-agent-tools-for-native-bitcoin-lightning-payments) https://stacker.news/items/1513920

Nostr Bi-weekly Review ( 15-30 April 2026)

**GM, Nostriches!** The Nostr Review is a biweekly newsletter focused on protocol updates, exciting programs, the long-form content ecosystem, and key events happening in the Nostr-verse. If you’re interested, join me in covering updates from the Nostr ecosystem! **Quick review:** In the past two weeks, daily active pubkeys increased to 300,302. New user growth increased, while profiles with bios decreased by about 25.88%. Events totaled 6.1 million and zap volume increased to 14.3 million sats. Additionally, 9 pull requests were submitted to the Nostr protocol, with 1 merged. A total of 106 Nostr projects were tracked, with 15 releasing product updates. During this period, 4 notable event took place, and 2 significant events are upcoming. ## Nostr Statistics Based on user activity, the total daily active pubkeys reached 300,302, reflecting an increase of 25.97% compared to the previous period's 238,389. The highest daily activity was recorded on April 25th, 2026, with 23,541 active users, representing a 12.58% increase compared to the previous record of 20,910. The number of new users overall showed mixed trends from the last period. In particular, the number of profiles with bios fell to 635,790, marking a decrease of about 25.88% compared to the previous record of 857,746. However, the number of new profiles with contact lists rose to 160,552, a 4.23% increase from 154,032. Meanwhile, pubkeys writing events decreased to 107,681 within this period, representing a 31.09% drop from the previous 156,255. In terms of content publishing, approximately 6,132,804 total events were published during this period, representing an increase of about 16.38% compared to the 5,269,760 from the previous cycle. Among them, Reposts reached a total of 307,447 within this period, marking a 7.29% decrease compared to the previous 331,632. For zap activity, the total zap amount is about 14.3 million, showing an increase of over 21.19% compared to the previous period. **Data source:** https://npub.world/stats , https://stats.andotherstuff.org/ ## NIPs [**NIP-29: Define Explicit Role Permissions and Access Schema on Kind 39003 #2316**](https://github.com/nostr-protocol/nips/pull/2316) [1amKhush](https://github.com/1amKhush) This PR is scoped to NIP-29 and centralizes role semantics on kind 39003. It was motivated by a related issue in the coracle/flotilla project. Key Changes Authorization Model Clarification - Permissions now derive from role-permission, not role names or ordering. - Role names and role-order are explicitly non-authoritative for moderation capability. [**NIP-67: EOSE Completeness Hint #2317**](https://github.com/nostr-protocol/nips/pull/2317) [mattn](https://github.com/mattn) **The Problem** The EOSE message in NIP-01 marks the boundary between stored and real-time events for a subscription, but does not tell the client whether every stored matching event was delivered or whether the relay stopped partway due to an internal limit. github This creates three concrete failure scenarios: - Silent data loss - A client requests 500 events, but the relay has an internal cap of 300. It returns 300, the client sees 300 < 500 and assumes the result is complete, silently missing the remaining matching events. - Wasted round trips - Any subscription that exhausts the relay's cap forces an extra REQ just to confirm there's nothing left, even when the filter would have matched exactly that many events. This costs both client and relay unnecessary latency and bandwidth. - Boundary tie ambiguity - Multiple events can share the same created_at timestamp at the boundary of a batch. Paginating with until = oldest_created_at risks either skipping or double-fetching events depending on the relay's comparison semantics. The key design decisions: - Only a positive "done" signal is defined — omitting the hint means there is more data. - Backward compatible in both directions: legacy relays omit it, legacy clients ignore trailing array elements. - Relays advertise support via NIP-11 supported_nips. [**NIP-AB: Device Pairing #2328**](https://github.com/nostr-protocol/nips/pull/2328) [tlongwell-block](https://github.com/tlongwell-block) - This PR proposes a new NIP for securely transferring a Nostr private key from one device to another without pasting nsec strings around or requiring the source device to stay online. The UX mirrors Bluetooth numeric pairing: scan a QR code on the new device, confirm a short code matches on both screens, done. The author acknowledges prior art in @1l0's NIP-4B draft (#1768) but says this draft makes different tradeoffs: QR bootstrap, ephemeral ECDH, and a short confirmation code (SAS — Short Authentication String) displayed on both screens before the key is transmitted. [**NIP-G6: OpenWyrd Capability-URL Inline Rendering #2329**](https://github.com/nostr-protocol/nips/pull/2329) [DeltaClimbs](https://github.com/DeltaClimbs) Background This is a successor to the withdrawn NIP-C6 (PR #2327), which was closed after two review objections. This new draft was specifically designed to address both of those objections before submission. What It Proposes NIP-G6 defines a rendering contract for Nostr clients to: - Detect OpenWyrd MOP capability URLs in kind:1 event content (or NIP-17 inner sealed events) - Fetch the encrypted envelope from the host server - Decrypt it client-side using the key embedded in the URL fragment - Render the plaintext inline in the feed - replacing the standard OpenGraph card The key design principle: zero sender burden. Senders paste URLs exactly as they do today. No new tags, no signer changes, no wire-format additions. All logic sits entirely on the rendering client. **Source:** https://github.com/nostr-protocol/nips/pulls ## Notable Projects [**YakiHonne**](https://yakihonne.com/profile/nprofile1qqszpxr0hql8whvk6xyv5hya7yxwd4snur4hu4mg5rctz2ehekkzrvc64twc2) nostr:npub1yzvxlwp7wawed5vgefwfmugvumtp8c8t0etk3g8sky4n0ndvyxesnxrf8q What's New: - Launched interactive DM Gifts. - Introduced Blossom server management. - Added NIP-22 comment support for articles and videos. - Optimised relay sharing links with direct content parameters. - Simplified relay invitation UI to "Share". - Unified feed settings by moving nested replies configuration. - Added relay sharing capability within the Orbits view. - Added automatic state reset for paid note progress. - General bug fixes and performance enhancements. [**Nowhere - New Tool**](https://github.com/5t34k/nowhere) nostr:npub1x5t34kxd79m657qcuwp4zrypy9t8t4e6yks5zapjvau29t0xvgaqakh2p2 - Nowhere is a decentralized web publishing system where an entire website is encoded directly into a URL fragment, meaning the site exists within the link itself rather than being stored on a server. It enables users to create and publish content instantly using tools like events, fundraisers, stores, petitions, messages, drops, art, and forums without needing accounts or platform approval. Interactions such as orders and messages are routed through Nostr relays using ephemeral keys, ensuring privacy and censorship resistance. [**Iris Audio - New Tool**](https://git.iris.to/#/npub1xdhnr9mrv47kkrn95k6cwecearydeh8e895990n3acntwvmgk2dsdeeycm/iris-audio) nostr:npub1g53mukxnjkcmr94fhryzkqutdz2ukq4ks0gvy5af25rgmwsl4ngq43drvk - Iris Audio is a Hashtree-backed audio catalog application and reference implementation for building large decentralized media databases within the Nostr ecosystem. [**Nostr WoT Extension - New Tool**](https://github.com/nostr-wot/nostr-wot-extension) **Leon Acosta** - Nostr WoT Extension is a browser extension for Nostr that manages identity, signs events, sends zaps, and visualizes trust relationships (Web of Trust) directly inside the browser without needing to switch apps. [**Clave - v0.1.0-build18 (Build 18 - Bunker-first UX + dev menu) - New Tool**](https://github.com/DocNR/clave/releases/tag/v0.1.0-build18) nostr:npub1xy54p83r6wnpyhs52xjeztd7qyyeu9ghymz8v66yu8kt3jzx75rqhf3urc - Clave is an iOS NIP-46 remote signer used to securely sign Nostr events via the bunker protocol without exposing private keys to client apps. This release improves the onboarding UX by making bunker-first flow the default, hides nostrconnect UI for reliability, adds a developer menu with logging and diagnostic tools, and includes build and stability improvements while keeping the signing (bunker) flow unchanged. This was the latest, and there was another release of v0.1.0-build13 last week. [**Nostria - v3.1.30**](https://github.com/nostria-app/nostria/releases/tag/v3.1.30) nostr:npub1zl3g38a6qypp6py2z07shggg45cu8qex992xpss7d8zrl28mu52s4cjajh - Nostria is a decentralized social app built on the Nostr protocol, focused on human connections and a cleaner social experience without algorithmic noise. This release adds a wallet setting to display sats in USD and introduces an option to enable or disable promotional cards in the feed, improving user customization and control over the interface. This was the latest, and there were also a few more releases last week. [**Comet - alpha-9aab0d3**](https://github.com/nodetec/comet/releases/tag/alpha-9aab0d3) **Christian Chiarulli** - Comet is a local-first notes app built with Tauri, React, TypeScript, and Rust, designed for offline-first editing with structured sync capabilities. This release focuses on internal architecture improvements, including refactoring event handling into imperative flows, consolidating Tauri sync listeners, reorganizing shared modules for better code separation, tightening lint rules, and preventing unsafe cross-feature imports to improve maintainability and stability. [**Hostr - v0.1.0**](https://github.com/sudonym-btc/hostr/releases/tag/v0.1.0) **Paco** - Hostr is a peer-to-peer rental accommodation platform built using Nostr-based decentralized technologies, allowing property listings and bookings without relying on centralized intermediaries. The v0.1.0 release introduces the initial production setup with escrow infrastructure, blockchain/RPC integrations for RSK, deployment and CI improvements, production Docker build fixes, network and DNS reliability updates, and operational refinements for the escrow and hosted environment, establishing the first stable foundation of the system. [**Nymchat - v3.58.288**](https://github.com/Spl0itable/NYM/releases/tag/v3.58.288) nostr:npub16jdfqgazrkapk0yrqm9rdxlnys7ck39c7zmdzxtxqlmmpxg04r0sd733sv - Nymchat is a lightweight ephemeral chat client built on the Nostr protocol, also bridged with Bitchat for anonymous, temporary messaging. This release is a security-focused hotfix that patches a stored XSS vulnerability, adds jitter to kind 0 created_at timestamps for better privacy behavior, and improves safety by validating JSON structure of events received from relays. [**WaveFunc Radio - 0.1.3**](https://github.com/zeSchlausKwab/wavefunc/releases/tag/v0.1.3) nostr:npub182jczunncwe0jn6frpqwq3e0qjws7yqqnc3auccqv9nte2dnd63scjm4rf - WaveFunc Radio is a Nostr-based internet radio directory and player with full-text search, allowing users to discover and stream radio stations in a decentralized way. This release improves streaming stability and UI responsiveness, adds toast notifications for playback failures, fixes mixed-content issues by upgrading HTTP to HTTPS, refines search behavior and indexing for better performance, and enhances error handling in admin and station search operations. [**Mostro Mobile Client - v1.2.5**](https://github.com/MostroP2P/mobile/releases/tag/v1.2.5) nostr:npub1catrya6c7rdnny0useday5ftxq9ycl5vt7c880zzmfwnpn58urgq6neuhz nostr:npub1hht9umpeet75w55uzs9lq6ksayfpcvl9lk64hye75j0yj4husq5ss8xsry - Mostro Mobile Client is a secure mobile app for the Mostro peer-to-peer Bitcoin trading platform, providing order book, chat, and trading features on top of the Mostro network. This release adds filtering of offers by maker account age in the order book, introduces in-app notifications for chat messages received outside the chat screen, adds configurable trade history retention settings, and improves background P2P chat notifications, along with fixes for order cancellation UI issues and incorrect role display in canceled orders. [**Wisp - v1.0.2**](https://github.com/barrydeen/wisp/releases/tag/v1.0.2) nostr:npub1utx00neqgqln72j22kej3ux7803c2k986henvvha4thuwfkper4s7r50e8 - Wisp is a minimal and high-performance Android client for the Nostr protocol focused on speed and usability. This release adds a QR scan tab to the drawer QR sheet for easier interactions and includes a compatibility fix to support 16 KB page size on Android 15+, improving stability on newer devices. This was the latest release and there was also the release of v1.0.0 last week. [**Hashtree-cc - New Developer Tool**](https://git.iris.to/#/npub1xdhnr9mrv47kkrn95k6cwecearydeh8e895990n3acntwvmgk2dsdeeycm/hashtree-cc) nostr:npub1g53mukxnjkcmr94fhryzkqutdz2ukq4ks0gvy5af25rgmwsl4ngq43drvk - Hashtree-cc is a standalone workspace for the hashtree.cc application and its local TypeScript packages, built on top of Hashtree, providing a structured development environment for maintaining and extending the system within the Nostr ecosystem. [**Mostro Core - v0.10.0**](https://github.com/MostroP2P/mostro-core/releases/tag/v0.10.0) nostr:npub1qqqqqqqx2tj99mng5qgc07cgezv5jm95dj636x4qsq7svwkwmwnse3rfkq - Mostro Core is a developer library (Rust SDK) that provides peer-to-peer building blocks for decentralized applications and serves as the foundation for the Mostro daemon. This release adds improvements to key handling by splitting identity and trade keys in wrap/unwrap flows, enforces stricter validation and formatting for rumor kinds, updates NIP-59 related logic, and includes documentation updates reflecting the new transport and key separation design. This was the latest release. But there were also the releases of v0.9.1 and v0.9.0 last week. [**Grain - v0.5.0**](https://github.com/0ceanSlim/grain/releases/tag/v0.5.0) nostr:npub1zmc6qyqdfnllhnzzxr5wpepfpnzcf8q6m3jdveflmgruqvd3qa9sjv7f60 - Grain is a comprehensive Nostr solution that functions as both a powerful relay and a Go developer library for building Nostr applications. This release is a major architectural overhaul that replaces MongoDB with a fully embedded nostrdb storage engine, moves to a single self-contained binary with built-in dashboard assets, introduces real physical event deletion with NIP-09 support, enforces proactive NIP-42 authentication, rebuilds mutelist handling using NIP-65 outbox relays, and significantly improves performance through caching, concurrency, and progressive rendering while also adding CI reliability, Windows fixes, and a developer-preview Go client library. This was the latest, and there were the releases of v0.5.0-rc7 and v0.5.0-rc6 last week. ## Long-Form Content Eco In the past two weeks, approximately 18,783 kind 30023 events have been tracked (long-form articles), with over 55% being Bitcoin related articles and 45% related to Nostr and other topics across the Nostr Ecosystem. **The Evolution of Decentralized Networks** The core discussion around decentralized technologies continues to evolve, grounded in the reality that public opinion matters when shaping the future of money and autonomy. As global dynamics shift, the community is moving definitively toward resilient, user-driven models designed for secure, private communication. Looking ahead, the broader outlook remains focused on the signal: addressing existential technical questions like Bitcoin vs. Quantum computers, while leveraging this technology to build sustainable, privacy-centric infrastructures that prioritize true personal freedom over centralized oversight. **Nostr Expansion and Developer Focus** As the ecosystem grows, the focus has broadened to include practical tools and developer-driven progress. Continuous ecosystem updates highlight the rigorous software development and Devs building in Bitcoin, working seamlessly alongside dedicated OS devs to fortify the underlying architecture of these networks. For newcomers, comprehensive Nostr walkthroughs are providing crucial, foundational guidance. This hands-on approach lowers the barrier to entry, ensuring that users truly understand the underlying protocols and can navigate these evolving spaces safely. **Cultural Shifts, Economics, and Advocacy** To support this shift, the infrastructure is evolving far beyond simple financial transactions to challenge legacy systems and amplify diverse voices. Critical economic discourse is taking center stage, often grounded in profound explorations like book reviews of writings from Murray Rothbard. The network also champions global freedoms through active Human rights advocacy in digital assets, while continuing to foster a vibrant, uncensored environment that welcomes other religious, motivational, life, and fictional stories topics. Creators and advocates are harnessing these decentralized networks to blend digital sovereignty with deep philosophical alignment. **Conclusion: A Blueprint for the Future** Ultimately, the convergence of these tools bridges deep philosophical ideals with practical reality. The financial sovereignty of Bitcoin, fortified by forward-thinking development, and the open communication of Nostr provide a tangible framework for a new digital era. Through dedicated developer efforts, foundational economic education, and the protection of profound cultural expressions, the ecosystem proves that decentralized tech is no longer just about code. It is about empowering individuals, securing human rights, and building a resilient, multifaceted reality. Thank you, nostr:npub123sfqjpgf54p28yd7cjlgrpcn4pra5zhlnheyldc39td9r3zhgpshcwk9x nostr:npub1klkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qulx3vt nostr:npub1ypkxqdraua3faa9q88ycjvfq70amh50t2r9fcktu0gdncauz6yxqtnhwrm nostr:npub1cnlymdm5jz8eayycwynhze4s2zh9n0y04atce8ahxl5qfkptplls0s40hp nostr:npub17xvf49kht23cddxgw92rvfktkd3vqvjgkgsdexh9847wl0927tqsrhc9as nostr:npub1jxl2tnvnv9gycsy64aze295c3a529lx5sfmzlktf5lxuw805g5wqew0z0n nostr:npub1whtn0s68y3cs98zysa4nxrfzss5g5snhndv35tk5m2sudsr7ltms48r3ec nostr:npub1gzuushllat7pet0ccv9yuhygvc8ldeyhrgxuwg744dn5khnpk3gs3ea5ds nostr:npub175nul9cvufswwsnpy99lvyhg7ad9nkccxhkhusznxfkr7e0zxthql9g6w0 nostr:npub1qe3e5wrvnsgpggtkytxteaqfprz0rgxr8c3l34kk3a9t7e2l3acslezefe and others, for your work. Enriching Nostr’s long-form content ecosystem is crucial. ## Nostriches Global Meet Ups Recently, five (4) Notable Nostr and Bitcoin events have been hosted. - [**Nostr: Introducing Renaud Lifchiz:**](https://nostr.com/nprofile1qqspue77xa2pwyr3608ek39ku4rtm98apgk2876dhwcmq4rgtjg3deqpzemhxue69uhhyetvv9ujumt0wd68ytnsw43z7hl2mjz) Took place on Wednesday, April 15, 2026 at Chez Ginette, 101 Rue Caulaincourt, 75018 Paris, France Organised by nostr:npub1ve8qwrlztemdmnh62jffcr0y9m9dpqgqjdg8ufx7gc3qw5wdk74qyv9ka6 ![image](https://image.nostr.build/0cbde0e2e7002ac291d3c2858b604a8fdb542d4e886b51b422ef3b41a0e4829f.png) - **Brisbane BitDevs March** - NOSTR - Took place on Sunday, April 19, 2026 at The Dalgety Public House, 6a/110 MacQuarie St, Teneriffe QLD 4005, Brisbane, Australia nostr:npub1ve8qwrlztemdmnh62jffcr0y9m9dpqgqjdg8ufx7gc3qw5wdk74qyv9ka6 ![image](https://image.nostr.build/312ac6768918e53e9defec0ebfaf5f1b515670231598b4bdcd0760fb715854ae.png) - **Nostr Atlanta #12 - Lunch & Learn** - Spaces Workshop - Took place on Wednesday, April 22, 2026 at ATL BitLab, 684 John Wesley Dobbs Ave NE UNIT A1, Atlanta, GA 30312, United States nostr:npub1ve8qwrlztemdmnh62jffcr0y9m9dpqgqjdg8ufx7gc3qw5wdk74qyv9ka6 ![image](https://image.nostr.build/484d0bd373205c1fca6b98edc2ea314951630ebcebe1b6cbedb59307d7d1b244.png) - **NosVegas 2026** - Tuesday, April 28, 2026 - Took place at We All Scream Night Club, 517 Fremont St, Las Vegas, NV 89101, United States organised by nostr:npub18ams6ewn5aj2n3wt2qawzglx9mr4nzksxhvrdc4gzrecw7n5tvjqctp424 ![image](https://image.nostr.build/0ea1cdab892cfb5eca5617fa51784c2dd451b3fd92baf3270982056baf48d8e1.png) **Here are the upcoming Nostr and Bitcoin events that you might want to check out:** - **Digital Freedom with Nostr & Bitcoin** - Takes place on Sunday, May 03, 2026 at Jives Coffee Lounge, 16 Colbrunn Ct, Colorado Springs, CO, United States nostr:npub1t3gxvxcf9nrcdd2ukhtfzjd39x7uers96u3ce3jnm605vhkkn7gsfp9elk ![image](https://image.nostr.build/12602108c9fea55956325e3a733c55d0024fcddd1bc547d5c8974ea83e5b9f29.png) - **Nostr Nights #2 @ Bitcoin Park Nashville** - Takes place on Monday, May 11, 2026 at Bitcoin Park, 1910, 21st Avenue South, Nashville, Davidson County, Middle Tennessee, Tennessee, 37212, United States nostr:npub18ams6ewn5aj2n3wt2qawzglx9mr4nzksxhvrdc4gzrecw7n5tvjqctp424 ![image](https://image.nostr.build/5faade16bd996eb8b32cc2c7fa53c3141c34ea5bf000cdc1efb840ecf23199ef.png) Thanks for reading! If there’s anything I missed, feel free to reach out and help improve the completeness and accuracy of my coverage.

All The News That's Fit To Print On Ken's Blogspot Serving The Internet Since 2006

4/22/2026

muskspacexipoirishnewstennesseehonoluluindonesiaislamabadnasaluxembourgtexas100senate2chinese13samsung4usnepal3utahparispodcast1ukfleetrihanna75adisneyworld9amarketslisbonlocallywalesonlineukrainerussianoklahomacity27a11pakistanfreemanjamaicaeuathensmothergazaisraeli52ottawanewdelhioxfordshiresaintpaulnetflixkathmanduhealth6iowahouse50pcb24congoapple48usubelfast_livetaiwaneseafricantaiwansingaporenewkualalumpursaskatoonrussiaconstructionirelandportlandstarmertallinnnazithejournallondon94chinabeijinggermanymoldovansarabiaindianseoulunitedstatesmanilajapanuniversity43kilkennykazakhstanenvironmentalberlinepamarylanddcjoneslebronjamesbaku18horoscope41ai21atvuae1aedmontontrump16denmarkxbox51a105aoxfordinternationalperuvianbishkekgooglehome12cbsnews39denverbitcoin17greecetodayindiaidfwallstreetnewsletterfoxirishmirrorthiruvananthapurambagdadspainsouthwalesargusfloridaunfi11amacbooklinuxhungarykyivmediatechicc64apopenewbuses49europeirandonaldtrumpfamily42skoreapopescatholic15hartfordmalawiansnationalrigasupremecourthousestanzanianorthernnigeriaadhdafricajapanese22manufacturingmicrosoft53dublinpatriotskuwaitcitydubairiyadhresearcherscanadiansportsnewengland25windows36americansouthkorean81bbcwalessudanbelgrade7stock55policeaustraliaprovidenceearthcraftsscottishkuwaitghanalearnovateevoke35toykonevadaargentinathesunrelationshipchatgptcharity39a28awyoming119ajacksonyemendna29fitnesswisconsinnflcomusmcaconsumerromania20northropgrummanfinancialhongkongsuriname21lucknownewprince384764news2413a10grandrapidsdemocratsnorthkorealebanonrtbristol22aestonianderrynicosiaandroidauto31capetownretail55a54political5ohio28austinukrainianpanamacitymusicceo77global35amovie145labostonsyriachristians75unitedcanadaethiopianprimeministerlimaseychellesdesmoinespalestinianeuropeanpakistanicalifornia26aungovernmentvideodeifashioniphonemalaysiafmjerusalemsouthafricaasiansbritishvirginislandsnapshotghanaiangoldmansachs9maputo10aatlantaputinmadisonrepublic87amiami14munichisrg46romaniandonegaldowndaily_recordapramazon37icewellingtonbuildingenvironmentmichiganromemetabhamliveedinburghtechnologyalabamaarizonabrusselsrwandausbcolomboscotsmanmetalsderryjournalsouthkoreacristianoronaldo41aarchitecturemaltalearnedhawaiiphilippinesrsvp1313074achicagosecurityalbanianfbitransgendermachinestradefood58turkeynovakittnlawmanchesterresearchermagastv_newsnepaliforeignmlahistoryegyptirishrepublicansarmeniacharlestoncancertrentoniranian45glasgowattorneygeneraljakarta118abbcscotlandmorocco104macronrabatasiapierregeorgia8missoulanewalbumgpuscpusrepublicanhawaiianairlineslimerickleaderlyonsinvestmentkosovocopenhagentrinitycollegewomenhorrorbangladeshludhianaholidaylaosamericans32ankarawebtoonssciencewindsorgopscotusnewsonygandhibookamsterdamitalynbawsjoklahomacitycheyennefinancespurslatviagdpmexicounite63akievnflmotorcyclist140openaifaafccnewlookspotifyjubaalaskalatvianwhocongressnewwarjordanvilniustlibyaairbnbamericazelenskydelhinationwideautonomyharrisburginternetnewrazrchristiane991bernabeuevmstiruchirappalli83espncyprustownpackersbasseterremotherwellmilanlearninglimericknewplaycnnnewzealand40travel110amontgomeryevsbarbadosususarichmondagrilandgas197freezechilesuclasantodomingokigaliodesamamdaninewsupportbanjulwilliamsonstarbucksabudhabialdihanoitehranparliament25acvspharmacylilongweoregonmilitarybuenosairesdhsmadridnovascotiahomebuildertollbrothersarkansasmonacoconnorstorrieresearchfuturenewsodasscotlandnatonewfedlpool_echomacaocongressional26slovakianvidia57acryptosaints1989yankeesgodbulgariamoscowrfkportvilavirginianewyorkbuffalocairohomeownerskabulrnaljubljanacoloradomiddleeastasian93sonyazerbaijanundpdarwinaustralianspanamaartistickanolawmakerslasvegas33maduraikingcharlesnewnaturepropertykansaslouisiana23walmartnewabortion16amassachusettsyerevanaustriagermanmyanmarintelligencehomelessfrancedefenselittlerockbooksbookingshelenatownsenddominicansailakyliejennerhousekeepervaticancitymortgagesdemocratgambiathe42culturalgasperini27minnesotaartemisinsurancemlasmilwaukeehumanrightsugandabestbuy44charlottesvilleconcordjeffersoncityequatorialguineaindustryscientificsalonemobilemilanoastanatesla33adowngrade51engineeringtorontopodcastsnewrulesindianabatonrougekyrgyzstan102adobemobilealgerianwichitademocraticjerseyarturoamericasmalawivarietyeducationcubsbreakingnewshelsinkifmsmalinovkavrambeiruttourismapplesmalaysianabujacbp88aharvardtraderzelenskyyvolvoswedencostaricacuencadominicanhaitibelfastscientistsstockholmnihweatheraviationcarsoncitynewpregnancymoviesmoneyartistgodmotherhathawaytvkvermontbeveragemedicalraleighsomaliatopekaetfsnewark69latviansisraelmontpelier101vietnamkevinwarshdojagrawalperthlansing