Docs polish: active-pill sync, license-sidebar bug fix, pricing standardized, ~70 em-dashes removed
- docs.js (new): sync sidebar .active pill with location.hash on load, click, and hashchange so in-page anchor links (Architecture, Discount codes, Backups, etc.) update the pill instead of leaving it stuck on whatever was statically marked - Wire docs.js into every page just before </body> - license.html: sidebar Project/Operate order matches every other page (Project first) - pricing.html: rewritten to use the standard docs layout (full sidebar groups, prose main, breadcrumb) instead of a one-off shell that felt detached from the rest of the docs - Reference section: remove Admin API + SDKs anchor links (they masqueraded as separate pages but just scrolled within integrate.html); Wire format stands alone - Pricing copy: Zaprite reframed as "expanded payment options including card payment capabilities", "shipping in v0.3" removed (it shipped), Patron rephrased as perpetual (never expires or renews) - "Toggling inactive" cap-evasion language replaced — admin UI exposes delete only, no soft-disable affordance for products - ~70 em-dashes removed across 8 pages using a small pattern set (elaboration→period, list-intro→colon, tight clarification→comma, parentheticals→parens). Decorative stamp ornaments and references to actual third-party UI labels are kept verbatim.
This commit is contained in:
+134
-111
@@ -3,10 +3,11 @@
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Keysat Docs — Pricing</title>
|
||||
<title>Keysat Docs: Pricing</title>
|
||||
<link rel="icon" type="image/svg+xml" href="assets/favicon.svg">
|
||||
<link rel="stylesheet" href="docs.css">
|
||||
<style>
|
||||
/* Page-local: tier-card grid (only used here). */
|
||||
.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 {
|
||||
@@ -78,132 +79,154 @@
|
||||
|
||||
<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>
|
||||
<div class="group">
|
||||
<div class="glabel">Get started</div>
|
||||
<a href="index.html">Introduction</a>
|
||||
<a href="install.html">Install & setup</a>
|
||||
<a href="integrate.html">Integrate the SDK</a>
|
||||
<a href="agent.html">Agent integration</a>
|
||||
</div>
|
||||
<div class="group">
|
||||
<div class="glabel">Concepts</div>
|
||||
<a href="index.html#architecture">Architecture</a>
|
||||
<a href="index.html#products-policies">Products & policies</a>
|
||||
<a href="index.html#discounts">Discount codes</a>
|
||||
<a href="index.html#revocation">Revocation strategy</a>
|
||||
</div>
|
||||
<div class="group">
|
||||
<div class="glabel">Reference</div>
|
||||
<a href="wire-format.html">Wire format</a>
|
||||
</div>
|
||||
<div class="group">
|
||||
<div class="glabel">Project</div>
|
||||
<a href="pricing.html" class="active">Pricing</a>
|
||||
<a href="license.html">License</a>
|
||||
</div>
|
||||
<div class="group">
|
||||
<div class="glabel">Operate</div>
|
||||
<a href="operate.html#backups">Backups</a>
|
||||
<a href="operate.html#migrate">Migrate hardware</a>
|
||||
<a href="operate.html#troubleshooting">Troubleshooting</a>
|
||||
</div>
|
||||
</aside>
|
||||
|
||||
<main class="main">
|
||||
<main class="prose">
|
||||
<div class="crumb">Project · Pricing</div>
|
||||
<h1 id="overview">Pricing.</h1>
|
||||
<p class="lead">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>
|
||||
|
||||
<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>
|
||||
<h2 id="tiers">The three tiers</h2>
|
||||
|
||||
<div id="tiers" class="tier-grid">
|
||||
<div class="tier-grid">
|
||||
|
||||
<div class="tier-card">
|
||||
<h3>Creator</h3>
|
||||
<div class="price">Free<span class="unit">forever</span></div>
|
||||
<div class="frequency">no payment required</div>
|
||||
<ul>
|
||||
<li>Up to 5 products</li>
|
||||
<li>Up to 5 policies per product</li>
|
||||
<li>Up to 10 active discount codes</li>
|
||||
<li>BTCPay payments (Bitcoin / Lightning)</li>
|
||||
<li>All four SDKs · full wire format</li>
|
||||
<li>Webhooks, audit log, recovery, analytics opt-in</li>
|
||||
<li>Self-host on Start9 (always)</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">100,000<span class="unit">sats</span></div>
|
||||
<div class="frequency">per year (recurring)</div>
|
||||
<ul>
|
||||
<li>Unlimited products / policies / codes</li>
|
||||
<li>Recurring subscriptions: trials, grace, auto-renew</li>
|
||||
<li>Zaprite payments (expanded payment options including card payment capabilities)</li>
|
||||
<li>In-place tier upgrades (proration handled)</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">250,000<span class="unit">sats</span></div>
|
||||
<div class="frequency">one-time, perpetual</div>
|
||||
<ul>
|
||||
<li>Everything in Pro</li>
|
||||
<li>Perpetual license: one-time, never renews</li>
|
||||
<li>Direct one-on-one support</li>
|
||||
<li>"Patron" badge in your admin UI</li>
|
||||
<li>Listed on the Patrons page at keysat.xyz</li>
|
||||
<li>Early access to release-candidate builds</li>
|
||||
</ul>
|
||||
<a class="cta secondary" href="https://licensing.keysat.xyz/buy/keysat?policy=patron">Become a Patron</a>
|
||||
</div>
|
||||
|
||||
<div class="tier-card">
|
||||
<h3>Creator</h3>
|
||||
<div class="price">Free<span class="unit">forever</span></div>
|
||||
<div class="frequency">no payment required</div>
|
||||
<ul>
|
||||
<li>Up to 5 products</li>
|
||||
<li>Up to 5 policies per product</li>
|
||||
<li>Up to 10 active discount codes</li>
|
||||
<li>BTCPay payments (Bitcoin / Lightning)</li>
|
||||
<li>All four SDKs · full wire format</li>
|
||||
<li>Webhooks, audit log, recovery, analytics opt-in</li>
|
||||
<li>Self-host on Start9 (always)</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">100,000<span class="unit">sats</span></div>
|
||||
<div class="frequency">per year (recurring)</div>
|
||||
<ul>
|
||||
<li>Unlimited products / policies / codes</li>
|
||||
<li>Recurring subscriptions — trials, grace, auto-renew</li>
|
||||
<li>Zaprite payments — accept BTC + cards <em>(shipping in v0.3)</em></li>
|
||||
<li>In-place tier upgrades (proration handled)</li>
|
||||
<li>Everything in Creator</li>
|
||||
</ul>
|
||||
<a class="cta" href="https://licensing.keysat.xyz/buy/keysat?policy=pro">Upgrade to Pro</a>
|
||||
<div class="note">
|
||||
<strong>Prices shown are a snapshot.</strong> The canonical source is the live
|
||||
tier cards at <a href="https://keysat.xyz#tiers">keysat.xyz</a> (rendered
|
||||
dynamically from the master Keysat instance) and
|
||||
<a href="https://licensing.keysat.xyz/buy/keysat">licensing.keysat.xyz/buy/keysat</a>.
|
||||
Launch-special discounts (when active) show on those pages with a "LAUNCH
|
||||
SPECIAL" ribbon and the discount auto-applied; they're not represented here.
|
||||
</div>
|
||||
|
||||
<div class="tier-card">
|
||||
<h3>Patron</h3>
|
||||
<div class="price">250,000<span class="unit">sats</span></div>
|
||||
<div class="frequency">one-time, perpetual</div>
|
||||
<ul>
|
||||
<li>Everything in Pro</li>
|
||||
<li>Perpetual license — one-time, never renews</li>
|
||||
<li>Direct one-on-one support</li>
|
||||
<li>"Patron" badge in your admin UI</li>
|
||||
<li>Listed on the Patrons page at keysat.xyz</li>
|
||||
<li>Early access to release-candidate builds</li>
|
||||
</ul>
|
||||
<a class="cta secondary" href="https://licensing.keysat.xyz/buy/keysat?policy=patron">Become a Patron</a>
|
||||
<div class="note">
|
||||
<strong>What's gated.</strong> Capacity caps (products / policies-per-product /
|
||||
active discount codes) are enforced at create-time on the Creator tier. Pro
|
||||
unlocks the <code>recurring_billing</code> entitlement (auto-renewing
|
||||
subscriptions) and the <code>zaprite_payments</code> entitlement
|
||||
(expanded payment options including card payment capabilities).
|
||||
Patron differs from Pro in that it is a perpetual license (never
|
||||
expires or renews), plus direct one-on-one support. It's not a feature
|
||||
gate, it's a different ownership model.
|
||||
</div>
|
||||
|
||||
</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 in the database. Free up a slot by deleting products you no longer offer (the admin UI exposes delete; there's no "soft-disable" affordance for products).</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>
|
||||
|
||||
<div class="note">
|
||||
<strong>Prices shown are a snapshot.</strong> The canonical source is the live
|
||||
tier cards at <a href="https://keysat.xyz#tiers">keysat.xyz</a> (rendered
|
||||
dynamically from the master Keysat instance) and
|
||||
<a href="https://licensing.keysat.xyz/buy/keysat">licensing.keysat.xyz/buy/keysat</a>.
|
||||
Launch-special discounts (when active) show on those pages with a "LAUNCH
|
||||
SPECIAL" ribbon and the discount auto-applied; they're not represented here.
|
||||
</div>
|
||||
<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>
|
||||
|
||||
<div class="note">
|
||||
<strong>What's gated.</strong> Capacity caps (products / policies-per-product /
|
||||
active discount codes) are enforced at create-time on the Creator tier. Pro
|
||||
unlocks the <code>recurring_billing</code> entitlement (auto-renewing
|
||||
subscriptions) and will unlock <code>zaprite_payments</code> (card payments
|
||||
via Zaprite) when that lands in v0.3. Patron differs from Pro by being a
|
||||
one-time perpetual license rather than an annual subscription, plus direct
|
||||
one-on-one support — not a feature gate, a different ownership model.
|
||||
</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 products / 5 policies per product / 10 active discount codes). The
|
||||
Creator tier is free either way; the self-license flow exists primarily so
|
||||
operators get a real "I bought it" experience for the paid tiers and so we
|
||||
can offer the upgrade path to Pro. Hobbyists can run Keysat indefinitely
|
||||
without paying us a sat.
|
||||
</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 products / 5 policies per product / 10 active discount codes). The
|
||||
Creator tier is free either way; the self-license flow exists primarily so
|
||||
operators get a real "I bought it" experience for the paid tiers and so we
|
||||
can offer the upgrade path to Pro. Hobbyists can run Keysat indefinitely
|
||||
without paying us a sat.
|
||||
</p>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
|
||||
<script src="docs.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Reference in New Issue
Block a user