Keysat Install Keysat
Software licensing for Bitcoin 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.

Runs on Start9 Pays via BTCPay Verifies offline
What this enables

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

Keysat handles 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 go straight to 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.

Trials, expiries, seats, entitlements

Per-product policies for time-limited licenses, multi-seat caps, trial flags, feature entitlements baked into the key.

Discount & referral codes

Percent-off, fixed-sats-off, or free-license codes (no payment). 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.

How it works

Five steps, end to end.

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

  1. 01

    Install on your Start9

    Sideload the .s9pk, or install from registry.keysat.xyz. BTCPay comes bundled as a dependency.

  2. 02

    Connect BTCPay

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

  3. 03

    Define products + policies

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

  4. 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.

  5. 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.

For developers

Five lines, in the language you already write.

Keysat licenses are Ed25519-signed and base32-encoded. Verification is pure-function — no network, no daemon, no shared state.

  • Wire-compatible across SDKs
  • Public key embedded at compile time
  • Returns product, policy, expiry, entitlements
  • Source-available, easy to port
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.

If you migrate Start9 boxes, all of Keysat goes with you. If Keysat the project disappears, your existing 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.

What's outside the box

Things you don't have to deal with.
  • Stripe
  • Gumroad
  • Paddle
  • Cryptlex
  • Keygen
  • LicenseSpring
  • SaaS subscription fees
  • Platform decisions about who you sell to

Source-available license · one-time payment in sats · ships with you when you migrate hardware.

Install

From the marketplace, or sideload directly.

Alternative

Sideload

If you'd rather not add the marketplace:

  1. Download keysat_x86_64.s9pk from GitHub releases.
  2. StartOS dashboard → Sideload → drag the file in.
  3. Click Install.