commit 0e7c413825e9023eea48585d60827a0fae352038 Author: Grant Date: Fri May 8 13:36:54 2026 -0500 Initial commit — keysat.xyz landing site Static HTML + SVG/PNG assets for the public marketing site at keysat.xyz. Deployed via FileBrowser to the operator's StartOS at websites/keysat-xyz-landing/. Files: - index.html — main landing - support.html — Lightning donation + on-chain BTC for sponsors - assets/ — SVG marks, PNG icon/thumbnail, favicon Stack: hand-written HTML + CSS, no build step, no JS framework. Matches the keysat-design-system tokens (cream paper, navy ink, gold accents, Archivo display + Inter body + JetBrains Mono). Private repo during alpha; will go public alongside v1.0 launch. diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7f2b2a5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +# macOS +.DS_Store +*.swp + +# Editor +.vscode/ +.idea/ diff --git a/assets/bitcoin-mark.svg b/assets/bitcoin-mark.svg new file mode 100644 index 0000000..cd43f29 --- /dev/null +++ b/assets/bitcoin-mark.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/assets/favicon.svg b/assets/favicon.svg new file mode 100644 index 0000000..31f1365 --- /dev/null +++ b/assets/favicon.svg @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/assets/icon.png b/assets/icon.png new file mode 100644 index 0000000..9d21d32 Binary files /dev/null and b/assets/icon.png differ diff --git a/assets/keysat-lockup.svg b/assets/keysat-lockup.svg new file mode 100644 index 0000000..41d46c7 --- /dev/null +++ b/assets/keysat-lockup.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + KEYSAT + \ No newline at end of file diff --git a/assets/keysat-mark-mono.svg b/assets/keysat-mark-mono.svg new file mode 100644 index 0000000..472cb08 --- /dev/null +++ b/assets/keysat-mark-mono.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/keysat-mark-reverse.svg b/assets/keysat-mark-reverse.svg new file mode 100644 index 0000000..0880e15 --- /dev/null +++ b/assets/keysat-mark-reverse.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/keysat-mark.svg b/assets/keysat-mark.svg new file mode 100644 index 0000000..826dea1 --- /dev/null +++ b/assets/keysat-mark.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/keysat-thumbnail.png b/assets/keysat-thumbnail.png new file mode 100644 index 0000000..542c743 Binary files /dev/null and b/assets/keysat-thumbnail.png differ diff --git a/index.html b/index.html new file mode 100644 index 0000000..ae2dcb1 --- /dev/null +++ b/index.html @@ -0,0 +1,1008 @@ + + + + + +Keysat — Bitcoin-paid software licensing, self-hosted on Start9 + + + + + + + + + + + +
+ +
+ +
+
+
+
Software licensing for independent creators
+

Bitcoin-paid software licensing, self-hosted on Start9.

+

+ Buyers pay in Bitcoin via your own BTCPay. Your software verifies signed keys offline. You own the signing key, the customer list, and the payment rails — no SaaS, no middleman, no platform risk. +

+

+ Keysat empowers independent software creators to monetize any software they choose to sell — fully open source, free/paid versions, or fully closed source. The licensing layer is agnostic to your decision. +

+ +
+ Runs on Start9 + + Pays via BTCPay + + Verifies offline +
+
+
+ +
+
+
+ +
+
+
+ What this enables +

A complete sell-your-software stack, sovereign end-to-end.

+

Keysat is the licensing layer. BTCPay handles payments. Your hardware holds the keys. No third party can mint, revoke, or read your sales records.

+
+
+
+
+

Bitcoin payments, your store

+

BTCPay Server on your own Start9 takes the payment. Lightning settles in seconds. Funds land in your wallet — no intermediary holds them.

+
+
+
+

You own the signing key

+

The Ed25519 keypair lives on your hardware. Every license is signed by it. There's no third party who could mint or revoke licenses.

+
+
+
+

Offline verification

+

Your software verifies licenses against an embedded public key. No network call. Customer apps work even if your Keysat goes offline.

+
+
+
+

Sell however you want

+

One-time purchases for the whole app. Free / paid splits. Trials. Recurring renewals. Time-limited licenses, multi-seat licenses, comp keys for press. The licensing layer is a primitive — you decide the business model.

+
+
+
+

Discount & comp codes

+

Percent-off, fixed-sats-off, or free-license codes (no payment required). Run launch promos, comp keys for press, track partner campaigns.

+
+
+
+

SDKs in your language

+

Rust, TypeScript, Python — wire-compatible offline verifiers. Five lines of code in your app and you're verifying real signatures.

+
+
+
+
+ +
+
+
+ Real creators, real software +

Built by experts in their craft, not coders.

+

Empowering the next generation of software creators. The people who actually know the work — accountants, trainers, teachers, builders — can finally ship the tool they’ve always wanted, because AI handed them the keyboard. Keysat is the licensing layer that lets them get paid for what they made.

+
+
+ +
+
+ + +
+
+ Marisol Vargas, solo CPA + +
+
+
Solo CPA
+

Marisol Vargas

+

12 years specializing in small-business tax. Built her own software because the existing tools didn’t fit her workflow.

+
+ +
+
SchedulCalc
+

Schedule C + 1099 reconciler for solo accountants. Replaces a $1,200/yr software stack with one focused tool.

+
+
+
“I worked with bloated tax software for twelve years. With AI I built one that fits how I actually think — in three months, on weekends.”
+
+
42active licenses
+
$99/yrper seat
+
8 mo.since launch
+
+
+
+ + +
+
+ Tomas Kovac, powerlifting coach + +
+
+
Powerlifting coach
+

Tomas Kovac

+

12 years in the gym. Built RPE-based programming software because off-the-shelf apps assume gym-membership-app generic.

+
+ +
+
BarbellTracker
+

RPE-based programming and autoregulation for one-on-one coaches. Built around how strength athletes actually train.

+
+
+
“I knew exactly what coaches needed because I was the coach. AI handled the engineering — I handled the design.”
+
+
87active coaches
+
20k sats/moper seat
+
14 mo.since launch
+
+
+
+ + +
+
+ Hana Brennan, homeschooling parent + +
+
+
Homeschooling mom
+

Hana Brennan

+

Three kids, three different curriculum tracks. Built her own week-planner because every existing tool assumed one student.

+
+ +
+
SeasonsOfLearning
+

Multi-grade week planner for homeschool families with kids on different tracks. Mixes curricula across ages.

+
+
+
“I sketched the workflow on a notepad in October. By January my kids’ school days were running on it. Now 200 other families use it too.”
+
+
208families
+
$48/yrper family
+
11 mo.since launch
+
+
+
+ +
+
+ +
+
+ + + +
+
Illustrative examples of the kinds of creators Keysat is built for. Real Keysat creators — come be one of them.
+
+
+ +
+
+
+ How it works +

Five steps, end to end.

+

From install to first sale in an afternoon. No cloud account to create, no API keys to copy.

+
+
    +
  1. 01

    Install on your Start9

    One click from registry.keysat.xyz in the StartOS marketplace. BTCPay comes bundled as a dependency. (Sideload the .s9pk directly if you prefer.)

  2. +
  3. 02

    Connect BTCPay

    One click in the StartOS Actions tab. Authorize once on BTCPay's consent page; Keysat registers a webhook automatically.

  4. +
  5. 03

    Define products + policies

    Declare a product, set its price in sats, define a policy (duration, seat cap, trial, entitlements).

  6. +
  7. 04

    Embed your public key

    Copy your Keysat public key into your app. Add the SDK. Five lines of code verifies a signature at startup.

  8. +
  9. 05

    Share your purchase URL

    Buyers hit your public URL, pay in Bitcoin, get a signed license. Their copy of your software boots up licensed.

  10. +
+
+
+ +
+
+
+
+ For developers and AI agents +

Five lines, in the language you or your AI agents already write.

+

Keysat licenses are Ed25519-signed and Crockford base32-encoded. Verification is pure-function — no network, no daemon, no shared state. Hand the docs to your coding agent and tell it to wire licensing into your software; the integration is small enough to fit in one prompt.

+
    +
  • Wire-compatible across SDKs (TypeScript, Rust, Python)
  • +
  • Public key embedded at compile time
  • +
  • Returns product, policy, expiry, entitlements
  • +
  • Source-available — agents can read the verifier source directly
  • +
+
+
+
+ + + + npm install @keysat/licensing-client +
+
import { Verifier, PublicKey } from '@keysat/licensing-client'
+
+const verifier = new Verifier(
+  PublicKey.fromPem(ISSUER_PEM)
+)
+
+const ok = verifier.verify(licenseKeyFromUser)
+console.log('licensed:', ok.productId, ok.expires)
+ + +
+
+
+
+ +
+
+
+ Sovereign by default +

Everything stays on your hardware.

+

Migrate Start9 boxes — Keysat goes with you. If the Keysat project disappears tomorrow, your already-issued licenses keep verifying: the public key is embedded in your software, the private key is on your machine.

+
+
+
+

What you keep

+
On your Start9, in your normal backups.
+
    +
  • Signing keypair
  • +
  • Customer email · npub list
  • +
  • Sale records
  • +
  • Audit log
  • +
  • BTCPay invoice history
  • +
  • Webhook subscribers
  • +
  • Bitcoin (your wallet)
  • +
+

Backed up automatically by StartOS as part of your normal backup routine.

+
+
+

Or accept fiat, on your terms

+
Coming soon: opt-in card payments via Zaprite.
+

If your customers prefer paying with credit cards over Bitcoin, you’ll be able to plug Zaprite into Keysat as an alternative payment provider. Same Keysat license-issuance flow, but the payment can come through Stripe-via-Zaprite for cards or any of Zaprite’s Bitcoin rails (BTCPay, Strike, Unchained). Trades off some sovereignty — cards mean Stripe KYC and customer PII flowing through Zaprite — in exchange for a much wider addressable audience.

+

Keysat stays sovereign-by-default. Card payments are something you opt into per Keysat install if your business needs them. Shipping in v0.3.

+

Source-available license · pay your operator-style trade-offs deliberately, never by default.

+
+
+
+
+ +
+
+
+ Install +

From the marketplace, or sideload directly.

+

Either path leaves you in the same place: a running Keysat on your Start9, ready to connect BTCPay.

+
+
+ +
+ Alternative +

Sideload

+

If you'd rather not add the marketplace:

+
    +
  1. Download keysat_x86_64.s9pk from GitHub releases.
  2. +
  3. StartOS dashboard → Sideload → drag the file in.
  4. +
  5. Click Install.
  6. +
+
+
+
+
+ +
+
+
+ Common questions +

What people ask.

+
+
+
+

What happens if Keysat the project disappears?

+

Your software keeps working. The public key is embedded in your app at compile time, and offline verification doesn't depend on us. The wire format is documented; you can reimplement the verifier in any language in an afternoon.

+
+
+

Can I do free or comped licenses?

+

Yes. Define a discount code with type free_license and the buyer redeems it at checkout without paying. Useful for press, beta testers, partners, and giveaways.

+
+
+

What about subscriptions?

+

v0.1 issues fixed-duration licenses (e.g. 1 year) with offline expiry. True recurring billing — auto-renew without buyer interaction — lands in v0.3 alongside license-tier upgrades, volume packs, and Zaprite card payments.

+
+
+
+
+ + + + + + + diff --git a/support.html b/support.html new file mode 100644 index 0000000..9d5acfe --- /dev/null +++ b/support.html @@ -0,0 +1,191 @@ + + + + + +Support Keysat development + + + + + + + +
+
+ Keysat + +
+
+ +
+
Support development
+

If Keysat is making you money,
send a few sats back.

+

Keysat is source-available and free to run. There’s no SaaS dial-home, no auto-deducted percentage of your sales. If the project is useful to you, here are three ways to fund continued development.

+ +

1. Buy a Patron license

+ + +

2. Lightning

+
+
Fast, no-strings tip
+

Lightning Address

+

Tip any amount over Lightning. Hosted on Primal — works in any Lightning wallet that supports LN addresses.

+
+ keysat@primal.net + +
+
+ +

3. On-chain Bitcoin

+
+
For larger contributions
+

BTC address

+

Best for $50+ contributions where the Lightning channel-balance limit might be a concern.

+
+ Coming soon: on-chain address will be published once finalized. For now, please use Lightning above or the Patron license tier. +
+
+ +

What the funds go toward

+

Roughly in this order: paying contractors to ship the v0.2 web UI auth hardening, recurring billing primitives, additional language SDKs (Go, Swift, Java, .NET), and the long tail of papercut fixes that operators report. A small slice covers infrastructure — the marketing site, the docs site, the marketplace registry. We publish quarterly transparency reports of what came in and where it went, signed by the keysat.xyz issuer key.

+ +

OpenSats

+

If you’d rather fund Bitcoin software development broadly rather than this project specifically, OpenSats is a 501(c)(3) public charity that grants to dozens of FOSS Bitcoin projects (BTCPay, Fedimint, Cashu, NoStr clients, …). They take Lightning. Keysat itself relies on BTCPay, which OpenSats supports.

+
+ + + + + +