Files
keysat-docs/pricing.html
T
Keysat 19a969f797 Topnav: brand logo links to keysat.xyz; drop redundant Marketing entry
Standard docs-site convention: top-left brand goes to the marketing
home, the 'Docs' badge next to it signals you're in the docs section.
The separate 'Marketing' nav item is no longer needed once the brand
itself handles that link.
2026-05-11 09:57:36 -05:00

217 lines
8.3 KiB
HTML

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Keysat Docs — Pricing</title>
<link rel="icon" type="image/svg+xml" href="assets/favicon.svg">
<link rel="stylesheet" href="docs.css">
<style>
.tier-grid { display:grid; grid-template-columns:repeat(3, 1fr); gap:18px; margin:24px 0; }
@media (max-width:760px) { .tier-grid { grid-template-columns:1fr; } }
.tier-card {
background:var(--cream-50);
border:1px solid var(--border-1);
border-radius:12px;
padding:24px 22px;
display:flex; flex-direction:column;
}
.tier-card.featured {
border-color:var(--gold-500);
box-shadow:0 0 0 3px rgba(191,160,104,0.10), 0 8px 16px rgba(14,31,51,0.10);
position:relative;
}
.tier-card .badge {
position:absolute; top:-10px; left:50%; transform:translateX(-50%);
background:var(--gold-500); color:var(--navy-950);
font-size:10px; font-weight:700; letter-spacing:0.16em; text-transform:uppercase;
padding:4px 10px; border-radius:999px;
}
.tier-card h3 {
font-family:var(--font-display); font-size:22px; font-weight:600;
color:var(--navy-950); margin:0 0 6px; letter-spacing:-0.01em;
}
.tier-card .price {
font-family:var(--font-display); font-size:28px; font-weight:700;
color:var(--navy-950); letter-spacing:-0.02em; line-height:1.1;
margin-bottom:4px;
}
.tier-card .price .unit {
font-family:var(--font-body); font-size:13px; font-weight:500; color:var(--ink-500);
margin-left:6px;
}
.tier-card .frequency { font-size:12px; color:var(--ink-500); margin-bottom:18px; }
.tier-card ul {
list-style:none; padding:0; margin:0 0 22px;
font-size:14px; line-height:1.55; color:var(--ink-700);
flex:1;
}
.tier-card li { padding:4px 0 4px 22px; position:relative; }
.tier-card li::before {
content:'\2713'; position:absolute; left:0; top:5px;
color:var(--gold-700); font-weight:700;
}
.tier-card .cta {
display:inline-block; text-align:center;
padding:10px 16px;
background:var(--navy-800); color:var(--cream-50);
font-weight:600; font-size:14px;
border-radius:8px; text-decoration:none;
}
.tier-card .cta.secondary {
background:transparent; color:var(--navy-800);
border:1px solid var(--border-2);
}
.note {
background:var(--cream-100); border:1px solid var(--border-1);
border-radius:10px; padding:16px 18px; margin:24px 0;
font-size:14px; line-height:1.55;
}
</style>
</head>
<body>
<div class="topnav">
<a href="https://keysat.xyz" class="brand" title="Back to keysat.xyz"><img src="assets/keysat-mark.svg" alt=""><span>Keysat</span></a>
<span class="docs-tag">Docs</span>
<nav>
<a href="install.html">Install</a>
<a href="integrate.html">Integrate</a>
<a href="wire-format.html">Wire format</a>
<a href="operate.html">Operate</a>
<a href="pricing.html" aria-current="page">Pricing</a> </nav>
</div>
<div class="layout">
<aside class="side">
<a href="#overview">Overview</a>
<a href="#tiers">The three tiers</a>
<a href="#what-counts">What the caps count</a>
<a href="#changing-tiers">Switching tiers</a>
<a href="#unlicensed">Running unlicensed</a>
<a href="#future">What's coming</a>
</aside>
<main class="main">
<h1 id="overview">Pricing</h1>
<p class="lede">
Keysat dogfoods its own licensing — the Keysat daemon is itself licensed by a Keysat
instance running at <a href="https://licensing.keysat.xyz">licensing.keysat.xyz</a>.
The same primitive operators use to gate features in their own software gates a few
Keysat features behind paid tiers. The <strong>free tier is genuinely useful</strong>
most hobbyist operators will never need to upgrade.
</p>
<div id="tiers" class="tier-grid">
<div class="tier-card">
<h3>Creator</h3>
<div class="price">21,000<span class="unit">sats</span></div>
<div class="frequency">one-time, perpetual</div>
<ul>
<li>Up to 5 products</li>
<li>Up to 5 policies per product</li>
<li>Up to 5 active discount codes</li>
<li>BTCPay payments (Bitcoin / Lightning)</li>
<li>One-time purchases</li>
<li>Self-host on Start9 (always)</li>
<li>Distributed via free codes — ask</li>
</ul>
<a class="cta secondary" href="https://licensing.keysat.xyz/buy/keysat?policy=creator">Get Creator</a>
</div>
<div class="tier-card featured">
<div class="badge">Most popular</div>
<h3>Pro</h3>
<div class="price">250,000<span class="unit">sats</span></div>
<div class="frequency">per year</div>
<ul>
<li>Unlimited products / policies / codes</li>
<li>Recurring subscriptions <em>(when shipped, v0.3)</em></li>
<li>Zaprite payments — accept BTC + cards <em>(when shipped, v0.3)</em></li>
<li>Multi-operator admin <em>(when shipped)</em></li>
<li>Everything in Creator</li>
</ul>
<a class="cta" href="https://licensing.keysat.xyz/buy/keysat?policy=pro">Upgrade to Pro</a>
</div>
<div class="tier-card">
<h3>Patron</h3>
<div class="price">500,000<span class="unit">sats</span></div>
<div class="frequency">per year</div>
<ul>
<li>Same features as Pro</li>
<li>"Patron" badge in your admin UI</li>
<li>Funds Keysat development</li>
<li>Honest upsell — no fake feature gate</li>
</ul>
<a class="cta secondary" href="https://licensing.keysat.xyz/buy/keysat?policy=patron">Become a Patron</a>
</div>
</div>
<div class="note">
<strong>Note on what's gated.</strong> 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.
</div>
<h2 id="what-counts">What the caps count</h2>
<p>
All caps fire at <strong>create-time only</strong>. 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.
</p>
<ul>
<li><strong>Products</strong>: counts every product row (active + inactive). Operators don't get to evade the cap by toggling old rows inactive.</li>
<li><strong>Policies per product</strong>: counts policies on a single product, regardless of public/active state.</li>
<li><strong>Active discount codes</strong>: counts only <code>active=true</code> codes. Disable old codes to free up slots without deleting them — disabled codes don't function but stay in the audit trail.</li>
</ul>
<h2 id="changing-tiers">Switching tiers</h2>
<p>
Buy a higher-tier license at <a href="https://licensing.keysat.xyz/buy/keysat">licensing.keysat.xyz/buy/keysat</a>,
then activate it via StartOS → Keysat → Actions → <em>Activate Keysat license</em>.
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.
</p>
<p>
<strong>Downgrading</strong>: drop your license file (or replace with a lower
tier). Existing rows stay; new ones are subject to the new caps. No data loss.
</p>
<h2 id="unlicensed">Running unlicensed</h2>
<p>
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.
</p>
<h2 id="future">What's coming</h2>
<p>
Two big v0.3 features will be Pro-only when they ship:
</p>
<ul>
<li><strong>Recurring subscriptions</strong> — auto-renewal, customer-managed cancellation.</li>
<li><strong>Zaprite payments</strong> — accept Bitcoin <em>and</em> credit cards. Massively expands your addressable buyers.</li>
</ul>
<p>
Both will gate on the <code>recurring_billing</code> and <code>card_payments</code> entitlements
respectively. Free-tier operators will see a "Pro feature" banner and a one-click
upgrade flow when they try to use these.
</p>
</main>
</div>
</body>
</html>