Landing rewrite: new hero, tier comparison, Go SDK, agent platform refresh

- Hero: simpler headline ('Self-hosted licensing for software creators'),
  one consolidated paragraph, no underline. 'Runs on Start9' now links to
  start9.com.
- New /#tiers section: side-by-side Creator / Pro / Patron cards with
  what's included at each tier. Pro highlighted with gold inset. Honest
  framing: Patron is feature-identical to Pro, no fake gates.
- 'Pricing' anchor added to top nav.
- SDK card on the Why page lists Go alongside TS / Rust / Python.
- For developers + AI agents: Go added as a fourth code tab with the
  ParseAndVerify example. Install command map extended.
- Case studies: section headline now reads 'Empowering the next
  generation of software creators' with new eyebrow 'Real creators
  can now build real software'. Made-up stats removed from all three
  cases. Each quote now closes with a sentence about Keysat letting
  them sell to others like themselves.
- Agent-friendly OpenAPI card mentions Claude (Code or Computer Use),
  OpenAI Custom GPTs, and Perplexity Comet. LangChain dropped.
- FAQ: 'What about subscriptions' replaced with 'What's the difference
  between the three tiers'. New 'Do I have to use Bitcoin?' question
  added to explain BTCPay vs Zaprite.

Case-study photo placeholders are still rendered as placeholders — the
photoreal portraits referenced (assets/case-marisol.jpg,
assets/case-tomas.jpg, assets/case-hana.jpg) were never tracked in any
git history I could find. Drop real photos into assets/ when ready.
This commit is contained in:
Grant
2026-05-11 09:16:24 -05:00
parent 3f6108edfc
commit 6680f448c9
+117 -33
View File
@@ -301,6 +301,40 @@ pre.code .p { color:rgba(245,241,232,0.55); }
.agent-grid { display:grid; grid-template-columns:repeat(3, 1fr); gap:24px; }
@media (max-width: 880px) { .agent-grid { grid-template-columns:1fr; } }
/* ---------- Tier comparison ---------- */
.tier-grid { display:grid; grid-template-columns:repeat(3, 1fr); gap:20px; }
@media (max-width: 880px) { .tier-grid { grid-template-columns:1fr; } }
.tier-card {
background:var(--cream-50); border:1px solid var(--border-1);
border-radius:14px; padding:28px 26px;
display:flex; flex-direction:column; gap:6px;
position:relative;
}
.tier-card.featured {
box-shadow:0 0 0 2px var(--gold-500) inset, var(--shadow-sm);
}
.tier-cap {
display:inline-block; font-size:10.5px; font-weight:700;
letter-spacing:0.18em; text-transform:uppercase; color:var(--ink-500);
margin-bottom:6px;
}
.tier-cap.gold { color:var(--gold-700); }
.tier-price { display:flex; align-items:baseline; gap:8px; margin:0 0 12px; }
.tier-price .price-num {
font-family:var(--font-display); font-weight:700; font-size:28px;
color:var(--navy-950); letter-spacing:-0.02em; line-height:1.1;
}
.tier-price .price-sub { font-size:13.5px; color:var(--ink-500); }
.tier-pitch { font-size:14px; color:var(--ink-700); line-height:1.55; margin:0 0 16px; min-height:42px; }
.tier-card ul { list-style:none; padding:0; margin:0; display:flex; flex-direction:column; gap:7px; }
.tier-card li {
font-size:13.5px; color:var(--ink-700); padding-left:20px; position:relative; line-height:1.45;
}
.tier-card li::before {
content:'\2713'; position:absolute; left:0; top:0;
color:var(--gold-700); font-weight:700;
}
/* ---------- Install ---------- */
.install-grid { display:grid; grid-template-columns:1fr 1fr; gap:24px; }
.install-card { background:var(--cream-50); border:1px solid var(--border-1); border-radius:14px; padding:28px; }
@@ -522,6 +556,7 @@ footer.site .bottom a { color:rgba(245,241,232,0.6); }
<a href="#how">How it works</a>
<a href="#integrate">Integrate</a>
<a href="#agents">Agents</a>
<a href="#tiers">Pricing</a>
<a href="#install">Install</a>
<a href="https://docs.keysat.xyz">Docs</a>
</nav>
@@ -533,19 +568,19 @@ footer.site .bottom a { color:rgba(245,241,232,0.6); }
<div class="wrap hero-grid">
<div>
<div class="eyebrow">Software licensing for independent creators</div>
<h1><span class="gold">Bitcoin-native</span> self-hosted licensing service for software creators.</h1>
<h1>Self-hosted licensing for software creators.</h1>
<p class="lede">
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 &mdash; no SaaS, no middleman, no platform risk.
</p>
<p class="lede" style="margin-top:14px; color:var(--ink-700); font-size:17px;">
Keysat empowers independent software creators to monetize any software they choose to sell &mdash; fully open source, free/paid versions, or fully closed source. The licensing layer is agnostic to your decision.
Keysat empowers software creators to monetize their work. Keysat is fully self-hosted and is Bitcoin-native. Your software verifies signed keys offline. You own the signing key, the customer list, and the payment rails &mdash; no SaaS, no middleman, no platform risk.
</p>
<div class="cta-row">
<a class="btn primary lg" href="#install">Install Keysat <span class="arrow">&rarr;</span></a>
<a class="btn secondary lg" href="#how">See how it works</a>
</div>
<div class="trust">
<span><i data-lucide="server" style="width:14px;height:14px"></i> Runs on Start9</span>
<span>
<i data-lucide="server" style="width:14px;height:14px"></i>
Runs on <a href="https://start9.com" target="_blank" rel="noopener" style="color:inherit; text-decoration:underline; text-underline-offset:2px;">Start9</a>
</span>
<span class="dot"></span>
<span><i data-lucide="bitcoin" style="width:14px;height:14px"></i> Pays via BTCPay</span>
<span class="dot"></span>
@@ -612,7 +647,7 @@ footer.site .bottom a { color:rgba(245,241,232,0.6); }
<div class="item">
<div class="icon-wrap"><i data-lucide="wrench"></i></div>
<h3>SDKs in your language</h3><div class="accent-bar"></div>
<p>Rust, TypeScript, Python &mdash; wire-compatible offline verifiers. Five lines of code in your app and you're verifying real signatures.</p>
<p>Rust, TypeScript, Python, Go &mdash; wire-compatible offline verifiers. Five lines of code in your app and you're verifying real signatures.</p>
</div>
</div>
</div>
@@ -621,9 +656,9 @@ footer.site .bottom a { color:rgba(245,241,232,0.6); }
<section class="block case-section" id="creators">
<div class="wrap">
<div class="section-head">
<span class="eyebrow">Real creators, real software</span>
<h2>Built by experts in their craft, not coders.</h2>
<p>Empowering the next generation of software creators. The people who actually know the work &mdash; accountants, trainers, teachers, builders &mdash; can finally ship the tool they&rsquo;ve always wanted, because AI handed them the keyboard. Keysat is the licensing layer that lets them get paid for what they made.</p>
<span class="eyebrow">Real creators can now build real software</span>
<h2>Empowering the next generation of software creators.</h2>
<p>AI software tools now allow specialists to finally ship the tools they&rsquo;ve always wanted for themselves, without needing any coding background. Keysat is the licensing layer that lets them get paid for what they made.</p>
</div>
</div>
@@ -652,12 +687,7 @@ footer.site .bottom a { color:rgba(245,241,232,0.6); }
<p class="product-tag">Schedule C + 1099 reconciler for solo accountants. Replaces a $1,200/yr software stack with one focused tool.</p>
</div>
</div>
<blockquote>&ldquo;I worked with bloated tax software for twelve years. With AI I built one that fits how I actually think &mdash; in three months, on weekends.&rdquo;</blockquote>
<div class="stats">
<div><span class="stat-num">42</span>active licenses</div>
<div><span class="stat-num">$99/yr</span>per seat</div>
<div><span class="stat-num">8 mo.</span>since launch</div>
</div>
<blockquote>&ldquo;I worked with bloated tax software for twelve years. With AI I built one that fits how I actually think &mdash; in three months, on weekends. Now Keysat lets me sell it to the other solo CPAs who were stuck with the same bad tools.&rdquo;</blockquote>
</div>
</article>
@@ -683,12 +713,7 @@ footer.site .bottom a { color:rgba(245,241,232,0.6); }
<p class="product-tag">RPE-based programming and autoregulation for one-on-one coaches. Built around how strength athletes actually train.</p>
</div>
</div>
<blockquote>&ldquo;I knew exactly what coaches needed because I was the coach. AI handled the engineering &mdash; I handled the design.&rdquo;</blockquote>
<div class="stats">
<div><span class="stat-num">87</span>active coaches</div>
<div><span class="stat-num">20k sats/mo</span>per seat</div>
<div><span class="stat-num">14 mo.</span>since launch</div>
</div>
<blockquote>&ldquo;I knew exactly what coaches needed because I was the coach. AI handled the engineering &mdash; I handled the design. Now Keysat lets me sell it to the other coaches who recognize how it should actually work.&rdquo;</blockquote>
</div>
</article>
@@ -714,12 +739,7 @@ footer.site .bottom a { color:rgba(245,241,232,0.6); }
<p class="product-tag">Multi-grade week planner for homeschool families with kids on different tracks. Mixes curricula across ages.</p>
</div>
</div>
<blockquote>&ldquo;I sketched the workflow on a notepad in October. By January my kids&rsquo; school days were running on it. Now 200 other families use it too.&rdquo;</blockquote>
<div class="stats">
<div><span class="stat-num">208</span>families</div>
<div><span class="stat-num">$48/yr</span>per family</div>
<div><span class="stat-num">11 mo.</span>since launch</div>
</div>
<blockquote>&ldquo;I sketched the workflow on a notepad in October. By January my kids&rsquo; school days were running on it. Now Keysat lets me sell it to the other homeschool families who were trying to bend single-student tools to fit their week.&rdquo;</blockquote>
</div>
</article>
@@ -761,7 +781,7 @@ footer.site .bottom a { color:rgba(245,241,232,0.6); }
<h3>Five lines, in the language you or your AI agents already write.</h3>
<p>Keysat licenses are Ed25519-signed and Crockford base32-encoded. Verification is pure-function &mdash; 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.</p>
<ul>
<li>Wire-compatible across SDKs (TypeScript, Rust, Python)</li>
<li>Wire-compatible across SDKs (TypeScript, Rust, Python, Go)</li>
<li>Public key embedded at compile time</li>
<li>Returns product, policy, expiry, entitlements</li>
<li>Source-available &mdash; agents can read the verifier source directly</li>
@@ -772,6 +792,7 @@ footer.site .bottom a { color:rgba(245,241,232,0.6); }
<button class="active" data-lang="ts">TypeScript</button>
<button data-lang="rs">Rust</button>
<button data-lang="py">Python</button>
<button data-lang="go">Go</button>
<span class="install" id="install-cmd">npm install @keysat/licensing-client</span>
</div>
<pre class="code" id="code-ts"><span class="k">import</span> { <span class="f">Verifier</span>, <span class="f">PublicKey</span> } <span class="k">from</span> <span class="s">'@keysat/licensing-client'</span>
@@ -797,6 +818,12 @@ verifier = <span class="f">Verifier</span>(<span class="f">PublicKey</span>.<spa
ok = verifier.<span class="f">verify</span>(license_key_from_user)
<span class="k">print</span>(<span class="s">"licensed for"</span>, ok.product_id)</pre>
<pre class="code" id="code-go" style="display:none"><span class="k">import</span> keysat <span class="s">"github.com/keysat-xyz/licensing-client-go"</span>
payload, err := keysat.<span class="f">ParseAndVerify</span>(licenseKey, ISSUER_PEM)
<span class="k">if</span> err != <span class="k">nil</span> { <span class="f">log</span>.<span class="f">Fatal</span>(err) }
fmt.<span class="f">Printf</span>(<span class="s">"licensed for %s, expires %s\n"</span>,
payload.ProductSlug, payload.ExpiresAt)</pre>
</div>
</div>
</div>
@@ -813,7 +840,7 @@ ok = verifier.<span class="f">verify</span>(license_key_from_user)
<div class="install-card">
<div class="cap">OpenAPI 3.1</div>
<h3>Discovery built in</h3>
<p><code>GET /v1/openapi.json</code> returns a curated, stable spec. Drop the URL into a Custom GPT, OpenAI Assistant, LangChain, or Claude Code &mdash; the agent learns the endpoints automatically.</p>
<p><code>GET /v1/openapi.json</code> returns a curated, stable spec. Drop the URL into Claude (Code or Computer Use), an OpenAI Custom GPT, or Perplexity&rsquo;s Comet agent browser &mdash; the agent learns the endpoints automatically.</p>
</div>
<div class="install-card">
<div class="cap">Scoped API keys</div>
@@ -865,6 +892,58 @@ ok = verifier.<span class="f">verify</span>(license_key_from_user)
</div>
</section>
<section class="block" id="tiers">
<div class="wrap">
<div class="section-head">
<span class="eyebrow">Pricing</span>
<h2>Three tiers. Free forever for solo creators.</h2>
<p>Keysat&rsquo;s gating happens at the operator&rsquo;s self-license, not at the buyer&rsquo;s. Every Keysat instance ships at Creator (free); pay only when you outgrow it.</p>
</div>
<div class="tier-grid">
<div class="tier-card">
<div class="tier-cap">Creator</div>
<div class="tier-price"><span class="price-num">Free</span><span class="price-sub">forever</span></div>
<p class="tier-pitch">Solo creator selling one-time or perpetual licenses for a focused catalog.</p>
<ul>
<li>Up to 5 products</li>
<li>Up to 5 tiers per product</li>
<li>Up to 10 active discount codes</li>
<li>BTCPay (Bitcoin / Lightning) payments</li>
<li>All 4 SDKs &middot; full wire format</li>
<li>Webhooks, audit log, recovery, analytics opt-in</li>
</ul>
</div>
<div class="tier-card featured">
<div class="tier-cap gold">Pro</div>
<div class="tier-price"><span class="price-num">250k sats</span><span class="price-sub">/ year</span></div>
<p class="tier-pitch">For creators monetizing seriously &mdash; multiple products, subscriptions, both Bitcoin and card buyers.</p>
<ul>
<li>Unlimited products, tiers, and codes</li>
<li>Recurring subscriptions &middot; trials, grace, auto-renew</li>
<li>Zaprite payment gateway &mdash; cards, Apple Pay, bank transfers, plus Bitcoin</li>
<li>In-place tier upgrades (proration handled)</li>
<li>Everything in Creator</li>
</ul>
</div>
<div class="tier-card">
<div class="tier-cap">Patron</div>
<div class="tier-price"><span class="price-num">500k sats</span><span class="price-sub">/ year</span></div>
<p class="tier-pitch">Honest supporter tier. Same features as Pro; you&rsquo;re funding Keysat&rsquo;s development.</p>
<ul>
<li>Everything in Pro</li>
<li>&ldquo;Patron&rdquo; badge in your admin dashboard</li>
<li>Listed on the Patrons page on keysat.xyz</li>
<li>Early access to release-candidate builds</li>
<li>Direct support line</li>
</ul>
</div>
</div>
<p style="margin-top:28px; text-align:center; font-size:13.5px; color:var(--ink-500);">
No fake feature gates: Patron is feature-identical to Pro. Pricing is a flat annual fee &mdash; we don&rsquo;t take a percentage of your sales.
</p>
</div>
</section>
<section class="block tinted" id="install">
<div class="wrap">
<div class="section-head">
@@ -915,8 +994,12 @@ ok = verifier.<span class="f">verify</span>(license_key_from_user)
<p>Yes. Define a discount code with type <code>free_license</code> and the buyer redeems it at checkout without paying. Useful for press, beta testers, partners, and giveaways.</p>
</div>
<div>
<h3>What about subscriptions?</h3>
<p>v0.1 issues fixed-duration licenses (e.g. 1 year) with offline expiry. True recurring billing &mdash; auto-renew without buyer interaction &mdash; lands in v0.3 alongside license-tier upgrades, volume packs, and Zaprite card payments.</p>
<h3>What&rsquo;s the difference between the three tiers?</h3>
<p>Creator is free forever, capped at 5 products / 5 policies per product / 10 active discount codes &mdash; 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). Patron is Pro with a public supporter badge; same features, you&rsquo;re funding development. See the tier comparison above for the full breakdown.</p>
</div>
<div>
<h3>Do I have to use Bitcoin?</h3>
<p>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 &mdash; with payments still landing in your wallet. Pick whichever your buyers prefer; you can switch the active provider at any time.</p>
</div>
</div>
</div>
@@ -966,12 +1049,13 @@ ok = verifier.<span class="f">verify</span>(license_key_from_user)
ts: 'npm install @keysat/licensing-client',
rs: 'cargo add licensing-client',
py: 'pip install keysat-licensing-client',
go: 'go get github.com/keysat-xyz/licensing-client-go',
};
document.querySelectorAll('.code-tabs button').forEach(btn => {
btn.addEventListener('click', () => {
const lang = btn.dataset.lang;
document.querySelectorAll('.code-tabs button').forEach(b => b.classList.toggle('active', b === btn));
['ts','rs','py'].forEach(l => {
['ts','rs','py','go'].forEach(l => {
document.getElementById('code-' + l).style.display = l === lang ? 'block' : 'none';
});
document.getElementById('install-cmd').textContent = installCmds[lang];