Private Provider on Nostr: Date: 2026-07-23 Status: exploratory vision — not a commitment, not a roadmap ...
Date: 2026-07-23
Status: exploratory vision — not a commitment, not a roadmap promise.
Context: written after reviewing the fips-tollgate MVP and the nostr-vpn
(mmalmi) README. nostr-vpn is a Tailscale-style mesh VPN built on the same
FIPS data plane fips-tollgate uses, with signed join-request admission,
exit-node selection, WireGuard upstream egress, and shipped native apps
(including iOS/Android).
This document preserves a design conversation about what the integration of
these two pieces could mean and what could be built on top of it.
---
## The core insight: accounts disappear from the entire stack
Every VPN that has ever existed works the same way: identity first (email,
account, payment card), access second. Even Mullvad's numbered accounts are
still *accounts*. This integration inverts it completely:
- Who are you? A keypair you generated yourself.
- What did you pay? A bearer ecash token — cash, not a card.
- How do you get in? A cryptographic signature on a roster.
- How do you get kicked out? A janitor with a timer (the reconcile sweep).
There is no user database anywhere in this system. Nothing to leak, nothing
to subpoena, nothing to breach. That's not a feature — it's a *category
change*. The product stops being "a VPN subscription" and becomes **access
itself, sold as a commodity**, like electricity from a socket.
The tollgate control plane is four machines, and none of them care what is
being sold:
1. **A ticket seller** — verifies a Cashu token at the mint, converts sats
into minutes.
2. **A wristband printer** — records "npub X is allowed until 10:30".
3. **A turnstile** — the FIPS ACL / nvpn roster that physically enforces
admission.
4. **A janitor** — the reconcile sweep that removes expired grants even when
no process is running.
## What could be built, near to far
1. **The vending-machine VPN.** Open the app, insert 10 sats, get one hour
online. No signup, no email, no subscription dark patterns. The nvpn
mobile apps already exist — this is a payment flow, not a product build.
2. **Operator-in-a-box.** nvpn already packages for StartOS and Umbrel — the
home-server crowd. A one-click "Paid Exit Node" service: set your price,
plug in your WireGuard upstream, and an always-on home server earns sats
while its owner sleeps. That's the supply side of the market, and the
packaging channel already exists.
3. **The giftable internet voucher.** A Cashu token can travel over *any*
channel — DM, QR code, printed paper. VPN access becomes a transferable
bearer instrument: a friend in a free country buys hour-tokens and sends
them to a friend somewhere censored, where credit cards don't work and
VPN merchant accounts are blocked anyway. You cannot DM someone a VPN
subscription; you *can* DM them ecash redeemable at any participating
exit.
4. **The exit market.** Operators advertise exits on Nostr relays (the
TollGate kind-10021 offer event, grown up): city, price per hour, mint.
Clients browse, compare, pick. Price discovers jurisdiction, quality, and
trust. This is the economic cure to Tor's exit scarcity — a tragedy of
the commons where volunteers absorb legal risk for free. A price signal
fixes it: don't beg people to run exits; pay them.
5. **Wholesale recursion.** A gateway operator with customers but no appetite
for exit risk buys exit capacity from another operator — settlement in
ecash, per session, enforced by the same tollgate on the exit side. A
wholesale bandwidth market with no contracts, no invoices, no minimums.
6. **The services bazaar.** The same control plane can sell anything
reachable on a mesh: a Nostr relay, a storage box, a game server, a
media library, a build cache. Every home server becomes a stall in a
bazaar, and every stall has the same coin slot.
## What it means, zoomed all the way out
Nostr, Cashu, and FIPS are three protocols swimming toward the same reef:
**who you are, how you pay, how you connect** — identity, money, and
networking, each open, with no company in the middle. This integration is
one of the first places they click together into a single economic organism:
discovery flows through Nostr, payment flows through Cashu, traffic flows
through FIPS, and the tollgate is the connective tissue that turns the whole
thing into a market instead of a hobby.
Bandwidth today is a stranded asset — every home connection sits mostly idle,
worthless because there's no safe way to sell sips of it to strangers. This
stack makes bandwidth *liquid*. The headline: **the internet's last mile
becomes a peer-to-peer marketplace, and access becomes money.**
## Honest tether
- Two-sided markets are brutally hard to bootstrap; the vending-machine VPN
and operator-in-a-box come first, the bazaar comes after liquidity.
- Regulators will have opinions about paid telecom-ish services.
- The abuse problem doesn't vanish because the payment rail is anonymous —
it gets *priced*, which is different and defensible, but it still has to
be designed for (rate limits, upstream terms, jurisdiction choice).
- Mobile VPN UX has sharp edges; nvpn's own README notes platform hardening
in progress.
- nvpn caveats to verify before building: headless roster approval/revocation,
revocation liveness, one-active-network-per-device, and keeping two
control planes (tollgate ACL vs nvpn roster) from fighting over the same
network.
## The concrete first step
A small spike, not a build: stand up an nvpn test network, confirm headless
roster approve/revoke from the CLI, then prototype the **bridge daemon** —
join requests + Cashu tokens in, roster signatures in, expiry sweeps out —
reusing the existing Merchant, session store, and reconcile logic. The
reconcile invariant transfers unchanged: *the roster must equal the set of
active paid sessions.*
---
*Preserved from a design conversation on 2026-07-23 so the idea doesn't
evaporate. Visions expire; documents don't.*
Published at
2026-07-26 09:02:58 CESTEvent JSON
{
"id": "234d560919c476e5cf60d43348c1de98f30ca236e538b06cd19abb725398d95b",
"pubkey": "4e5622b575cdbb4d5ded093e48c68cd3f724fad547142f0c1b0aec2f2b2a0b2e",
"created_at": 1785049378,
"kind": 1,
"tags": [],
"content": "Date: 2026-07-23\nStatus: exploratory vision — not a commitment, not a roadmap promise.\n\nContext: written after reviewing the fips-tollgate MVP and the nostr-vpn\n(mmalmi) README. nostr-vpn is a Tailscale-style mesh VPN built on the same\nFIPS data plane fips-tollgate uses, with signed join-request admission,\nexit-node selection, WireGuard upstream egress, and shipped native apps\n(including iOS/Android).\n\nThis document preserves a design conversation about what the integration of\nthese two pieces could mean and what could be built on top of it.\n\n---\n\n## The core insight: accounts disappear from the entire stack\n\nEvery VPN that has ever existed works the same way: identity first (email,\naccount, payment card), access second. Even Mullvad's numbered accounts are\nstill *accounts*. This integration inverts it completely:\n\n- Who are you? A keypair you generated yourself.\n- What did you pay? A bearer ecash token — cash, not a card.\n- How do you get in? A cryptographic signature on a roster.\n- How do you get kicked out? A janitor with a timer (the reconcile sweep).\n\nThere is no user database anywhere in this system. Nothing to leak, nothing\nto subpoena, nothing to breach. That's not a feature — it's a *category\nchange*. The product stops being \"a VPN subscription\" and becomes **access\nitself, sold as a commodity**, like electricity from a socket.\n\nThe tollgate control plane is four machines, and none of them care what is\nbeing sold:\n\n1. **A ticket seller** — verifies a Cashu token at the mint, converts sats\n into minutes.\n2. **A wristband printer** — records \"npub X is allowed until 10:30\".\n3. **A turnstile** — the FIPS ACL / nvpn roster that physically enforces\n admission.\n4. **A janitor** — the reconcile sweep that removes expired grants even when\n no process is running.\n\n## What could be built, near to far\n\n1. **The vending-machine VPN.** Open the app, insert 10 sats, get one hour\n online. No signup, no email, no subscription dark patterns. The nvpn\n mobile apps already exist — this is a payment flow, not a product build.\n2. **Operator-in-a-box.** nvpn already packages for StartOS and Umbrel — the\n home-server crowd. A one-click \"Paid Exit Node\" service: set your price,\n plug in your WireGuard upstream, and an always-on home server earns sats\n while its owner sleeps. That's the supply side of the market, and the\n packaging channel already exists.\n3. **The giftable internet voucher.** A Cashu token can travel over *any*\n channel — DM, QR code, printed paper. VPN access becomes a transferable\n bearer instrument: a friend in a free country buys hour-tokens and sends\n them to a friend somewhere censored, where credit cards don't work and\n VPN merchant accounts are blocked anyway. You cannot DM someone a VPN\n subscription; you *can* DM them ecash redeemable at any participating\n exit.\n4. **The exit market.** Operators advertise exits on Nostr relays (the\n TollGate kind-10021 offer event, grown up): city, price per hour, mint.\n Clients browse, compare, pick. Price discovers jurisdiction, quality, and\n trust. This is the economic cure to Tor's exit scarcity — a tragedy of\n the commons where volunteers absorb legal risk for free. A price signal\n fixes it: don't beg people to run exits; pay them.\n5. **Wholesale recursion.** A gateway operator with customers but no appetite\n for exit risk buys exit capacity from another operator — settlement in\n ecash, per session, enforced by the same tollgate on the exit side. A\n wholesale bandwidth market with no contracts, no invoices, no minimums.\n6. **The services bazaar.** The same control plane can sell anything\n reachable on a mesh: a Nostr relay, a storage box, a game server, a\n media library, a build cache. Every home server becomes a stall in a\n bazaar, and every stall has the same coin slot.\n\n## What it means, zoomed all the way out\n\nNostr, Cashu, and FIPS are three protocols swimming toward the same reef:\n**who you are, how you pay, how you connect** — identity, money, and\nnetworking, each open, with no company in the middle. This integration is\none of the first places they click together into a single economic organism:\ndiscovery flows through Nostr, payment flows through Cashu, traffic flows\nthrough FIPS, and the tollgate is the connective tissue that turns the whole\nthing into a market instead of a hobby.\n\nBandwidth today is a stranded asset — every home connection sits mostly idle,\nworthless because there's no safe way to sell sips of it to strangers. This\nstack makes bandwidth *liquid*. The headline: **the internet's last mile\nbecomes a peer-to-peer marketplace, and access becomes money.**\n\n## Honest tether\n\n- Two-sided markets are brutally hard to bootstrap; the vending-machine VPN\n and operator-in-a-box come first, the bazaar comes after liquidity.\n- Regulators will have opinions about paid telecom-ish services.\n- The abuse problem doesn't vanish because the payment rail is anonymous —\n it gets *priced*, which is different and defensible, but it still has to\n be designed for (rate limits, upstream terms, jurisdiction choice).\n- Mobile VPN UX has sharp edges; nvpn's own README notes platform hardening\n in progress.\n- nvpn caveats to verify before building: headless roster approval/revocation,\n revocation liveness, one-active-network-per-device, and keeping two\n control planes (tollgate ACL vs nvpn roster) from fighting over the same\n network.\n\n## The concrete first step\n\nA small spike, not a build: stand up an nvpn test network, confirm headless\nroster approve/revoke from the CLI, then prototype the **bridge daemon** —\njoin requests + Cashu tokens in, roster signatures in, expiry sweeps out —\nreusing the existing Merchant, session store, and reconcile logic. The\nreconcile invariant transfers unchanged: *the roster must equal the set of\nactive paid sessions.*\n\n---\n\n*Preserved from a design conversation on 2026-07-23 so the idea doesn't\nevaporate. Visions expire; documents don't.*",
"sig": "54c859f47ba04200bce5491d887202af1a755f5dc8dcfbb0340f3a4cdde2e962345b0771a79d82a092362ce71cc8ce36016ab5c8f588ddead5f3262c0498493e"
}