diff --git a/index.html b/index.html index dd9c2c8..d688569 100644 --- a/index.html +++ b/index.html @@ -3,7 +3,7 @@ -Keysat — Bitcoin-native self-hosted licensing service for software creators +Keysat: Bitcoin-native self-hosted licensing service for software creators @@ -607,7 +607,7 @@ footer.site .bottom a { color:rgba(245,241,232,0.6); }
Software licensing for independent creators

Self-hosted licensing for software creators.

- Keysat is a self-hosted licensing server. Buyers pay you for the software you create, and their license can be verified offline. Your licensing key, customer list, and payment rails all live on your hardware — no SaaS, no middleman, no platform risk. + Keysat is a self-hosted licensing server. Buyers pay you for the software you create, and their license can be verified offline. Your licensing key, customer list, and payment rails all live on your hardware. No SaaS, no middleman, no platform risk.

Install Keysat @@ -669,7 +669,7 @@ footer.site .bottom a { color:rgba(245,241,232,0.6); }

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.

+

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.

@@ -684,7 +684,7 @@ footer.site .bottom a { color:rgba(245,241,232,0.6); }

SDKs in your language

-

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

+

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

@@ -724,7 +724,7 @@ footer.site .bottom a { color:rgba(245,241,232,0.6); }

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. Now Keysat lets me sell it to the other solo CPAs who were stuck with the same bad tools.”
+
“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. Now Keysat lets me sell it to the other solo CPAs who were stuck with the same bad tools.”
@@ -750,7 +750,7 @@ footer.site .bottom a { color:rgba(245,241,232,0.6); }

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. Now Keysat lets me sell it to the other coaches who recognize how it should actually work.”
+
“I knew exactly what coaches needed because I was the coach. AI handled the engineering. I handled the design. Now Keysat lets me sell it to the other coaches who recognize how it should actually work.”
@@ -789,7 +789,7 @@ footer.site .bottom a { color:rgba(245,241,232,0.6); } -
Illustrative examples of the kinds of creators Keysat is built for. Real Keysat creators — come be one of them.
+
Illustrative examples of the kinds of creators Keysat is built for. Real Keysat creators. Come be one of them.
@@ -816,12 +816,12 @@ footer.site .bottom a { color:rgba(245,241,232,0.6); }
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.

+

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.

@@ -871,13 +871,13 @@ fmt.Printf("licensed for %s, expires %s\n
Agent-friendly

Built so you can hand operations to an AI agent.

-

Keysat issues, monetizes, and manages licenses through a clean self-service admin UI. It also exposes every operator action through a documented HTTP API with bounded-scope credentials — so if you'd rather have an agent do the day-to-day work, you can give it the keys safely.

+

Keysat issues, monetizes, and manages licenses through a clean self-service admin UI. It also exposes every operator action through a documented HTTP API with bounded-scope credentials, so if you'd rather have an agent do the day-to-day work, you can give it the keys safely.

OpenAPI 3.1

Discovery built in

-

GET /v1/openapi.json returns a curated, stable spec. Drop the URL into Claude (Code or Computer Use), an OpenAI Custom GPT, or Perplexity’s Comet agent browser — the agent learns the endpoints automatically.

+

GET /v1/openapi.json returns a curated, stable spec. Drop the URL into Claude (Code or Computer Use), an OpenAI Custom GPT, or Perplexity’s Comet agent browser. The agent learns the endpoints automatically.

Scoped API keys
@@ -909,7 +909,7 @@ fmt.Printf("licensed for %s, expires %s\n offline). On load, `loadLiveTiers()` below fetches the master Keysat's product + policies and re-renders this grid with the live prices, marketing bullets, hidden-entitlement filtering, and - any active launch-special featured discount applied — matching + any active launch-special featured discount applied, matching what the buy page renders. -->
@@ -929,11 +929,11 @@ fmt.Printf("licensed for %s, expires %s\n

What’s the difference between the three tiers?

-

Creator is free forever, capped at 5 products / 5 policies per product / 10 active discount codes — plenty for a solo creator selling one-time or perpetual licenses. Pro lifts every cap and unlocks recurring subscriptions plus the Zaprite payment gateway (cards, Apple Pay, bank transfers, in addition to Bitcoin), billed annually. Patron is everything in Pro, sold as a one-time perpetual license instead of an annual subscription, plus direct one-on-one support and a public supporter badge — you’re funding development. See the tier cards above for the full breakdown.

+

Creator is free forever, capped at 5 products / 5 policies per product / 10 active discount codes, plenty for a solo creator selling one-time or perpetual licenses. Pro lifts every cap and unlocks recurring subscriptions plus the Zaprite payment gateway (cards, Apple Pay, bank transfers, in addition to Bitcoin), billed annually. Patron is everything in Pro, sold as a one-time perpetual license instead of an annual subscription, plus direct one-on-one support and a public supporter badge. You’re funding development. See the tier cards above for the full breakdown.

Do I have to use Bitcoin?

-

BTCPay (Bitcoin / Lightning) is the default and available on every tier. On Pro or Patron you can additionally connect Zaprite, which adds card / Apple Pay / bank transfer / more — with payments still landing in your wallet. Pick whichever your buyers prefer; you can switch the active provider at any time.

+

BTCPay (Bitcoin / Lightning) is the default and available on every tier. On Pro or Patron you can additionally connect Zaprite, which adds card / Apple Pay / bank transfer / more, with payments still landing in your wallet. Pick whichever your buyers prefer; you can switch the active provider at any time.

@@ -1085,7 +1085,7 @@ fmt.Printf("licensed for %s, expires %s\n }); }); - // Case-study slider — auto-advance with pause on hover, dot indicators + // Case-study slider: auto-advance with pause on hover, dot indicators (function() { const track = document.getElementById('case-track'); const slider = document.getElementById('case-slider'); @@ -1094,7 +1094,7 @@ fmt.Printf("licensed for %s, expires %s\n const slides = track.querySelectorAll('.case-slide'); const SLIDE_COUNT = slides.length; - const ADVANCE_MS = 9000; // ~9s per slide — long enough to read + const ADVANCE_MS = 9000; // ~9s per slide (long enough to read) let current = 0; let timer = null; @@ -1117,7 +1117,7 @@ fmt.Printf("licensed for %s, expires %s\n // Pause on hover; resume on leave. slider.addEventListener('mouseenter', stop); slider.addEventListener('mouseleave', start); - // Also pause when the tab isn't visible — saves CPU. + // Also pause when the tab isn't visible (saves CPU). document.addEventListener('visibilitychange', () => { if (document.hidden) stop(); else start(); }); @@ -1138,7 +1138,7 @@ fmt.Printf("licensed for %s, expires %s\n