From 592b1e80e270471ee7b057e8888ee6fb1f3835ee Mon Sep 17 00:00:00 2001 From: Keysat Date: Thu, 7 May 2026 23:36:10 -0500 Subject: [PATCH] Reframe lede + integrate code sample around creator empowerment --- index.html | 2 +- integrate.html | 31 +++---- pricing.html | 218 +++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 235 insertions(+), 16 deletions(-) create mode 100644 pricing.html diff --git a/index.html b/index.html index 312aa86..f430d26 100644 --- a/index.html +++ b/index.html @@ -53,7 +53,7 @@
Get started · Introduction

Welcome to Keysat.

-

Keysat is a self-hosted licensing service for software creators who want to be paid in Bitcoin. Buyers pay through your own BTCPay; your software verifies signed keys offline. You own the signing key, the customer list, and the payment rails.

+

Keysat lets independent software creators sell their work on their own terms. You ship software — open source, closed source, free / paid versions, whatever fits — and Keysat handles the buy page, the Bitcoin payment via BTCPay, and a signed license for each buyer. How you use that license inside your software is up to you: a one-time purchase to unlock the whole app, a free + paid split with specific paid features, a tip-jar style supporter badge — all legitimate. The licensing layer is a primitive, not a script.

These docs cover both ends:

diff --git a/integrate.html b/integrate.html index ff97cea..e9156cb 100644 --- a/integrate.html +++ b/integrate.html @@ -53,7 +53,7 @@
Get started · Integrate the SDK

Integrate the SDK.

-

Wire Keysat licenses into your software in under an afternoon. The verifier is pure-function, offline, and ships in five lines.

+

Wire Keysat licenses into your software in under an afternoon. The verifier is pure-function, offline, and ships in five lines. What you do with the result — refuse to start without a license, unlock specific features, just show a "supporter" badge — is your call. The SDK is the primitive; the business model is yours.

Prerequisites

Before you start, you should have:

@@ -117,11 +117,13 @@ MCowBQYDK2VwAyEAmz7q8r4t1v…h3k2pXq9wL const result = verifier.verify(licenseKeyFromUser); -if (!result.valid) { - exitUnlicensed(); -} -if (!result.entitlements.has('export')) { - disableExport(); +// Now decide what to do with the result, based on YOUR business model. +// One-time purchase to use the app at all? Refuse to start unless valid. +// Free + paid features? Check entitlements per feature. +// Supporter badge only? Just render differently when valid. +if (result.valid) { + app.licensed = true; + app.entitlements = result.entitlements; } +# What you do with the result is your choice. +if result.valid: + app.licensed = True + app.entitlements = result.entitlements

The verifier returns a result object with the following fields:

diff --git a/pricing.html b/pricing.html new file mode 100644 index 0000000..07651a1 --- /dev/null +++ b/pricing.html @@ -0,0 +1,218 @@ + + + + + +Keysat Docs — Pricing + + + + + + + + +
+ + +
+ +

Pricing

+

+ Keysat dogfoods its own licensing — the Keysat daemon is itself licensed by a Keysat + instance running at licensing.keysat.xyz. + The same primitive operators use to gate features in their own software gates a few + Keysat features behind paid tiers. The free tier is genuinely useful — + most hobbyist operators will never need to upgrade. +

+ +
+ +
+

Creator

+
21,000sats
+
one-time, perpetual
+
    +
  • Up to 5 products
  • +
  • Up to 5 policies per product
  • +
  • Up to 5 active discount codes
  • +
  • BTCPay payments (Bitcoin / Lightning)
  • +
  • One-time purchases
  • +
  • Self-host on Start9 (always)
  • +
  • Distributed via free codes — ask
  • +
+ Get Creator +
+ + + +
+

Patron

+
500,000sats
+
per year
+
    +
  • Same features as Pro
  • +
  • "Patron" badge in your admin UI
  • +
  • Funds Keysat development
  • +
  • Honest upsell — no fake feature gate
  • +
+ Become a Patron +
+ +
+ +
+ Note on what's gated. Today the only enforced gates are the + capacity caps — number of products, policies, and active discount codes. Pro + will gate the new payment-provider features (recurring billing, Zaprite card + payments) when those ship in v0.3. Patron is functionally identical to Pro — + its tier exists for operators who want to fund development beyond what Pro + needs to stay in the green. +
+ +

What the caps count

+

+ All caps fire at create-time only. Once you're under the cap, + you're never retroactively kicked off. A Creator-tier operator who currently + has 5 products keeps all 5 if you ever lower the caps in the future. The cap + just stops them from creating a 6th. +

+
    +
  • Products: counts every product row (active + inactive). Operators don't get to evade the cap by toggling old rows inactive.
  • +
  • Policies per product: counts policies on a single product, regardless of public/active state.
  • +
  • Active discount codes: counts only active=true codes. Disable old codes to free up slots without deleting them — disabled codes don't function but stay in the audit trail.
  • +
+ +

Switching tiers

+

+ Buy a higher-tier license at licensing.keysat.xyz/buy/keysat, + then activate it via StartOS → Keysat → Actions → Activate Keysat license. + The daemon picks up the new entitlements on next request — no restart needed. + The persistent banner in your admin sidebar always shows your current tier + and the next-tier CTA. +

+

+ Downgrading: drop your license file (or replace with a lower + tier). Existing rows stay; new ones are subject to the new caps. No data loss. +

+ +

Running unlicensed

+

+ Keysat works without any license at all — you'll see "Unlicensed" in the + sidebar and get the same caps as a Creator-tier operator (5/5/5). The + license exists primarily so operators get a real "I bought it" experience + and so we can offer the upgrade path to Pro. Hobbyists can run Keysat + indefinitely without paying us a sat. +

+ +

What's coming

+

+ Two big v0.3 features will be Pro-only when they ship: +

+
    +
  • Recurring subscriptions — auto-renewal, customer-managed cancellation.
  • +
  • Zaprite payments — accept Bitcoin and credit cards. Massively expands your addressable buyers.
  • +
+

+ Both will gate on the recurring_billing and card_payments entitlements + respectively. Free-tier operators will see a "Pro feature" banner and a one-click + upgrade flow when they try to use these. +

+ +
+
+ + +