GeminiDesktop GeminiDesktop
Guides

BYOK + Trial Hybrid Pricing 2026: Why We Let Key-Bringers Stay Free Forever

Published · By GeminiDesktop Team

BYOK + Trial Hybrid Pricing 2026: Why We Let Key-Bringers Stay Free Forever

Bottom line: In 2026 two mainstream pricing models dominate AI apps — Cursor/Perplexity-style pure subscription, and Zed/Continue-style pure BYOK. The first bundles API cost into the monthly fee and gates traffic; the second dumps all cost onto the user. On Gemini Desktop we shipped a third path: Beta-period fully free, one-time $49 buyout after GA with a 7-day trial, and BYOK users stay free forever. Three months in, BYOK conversion is 31% and one-time buyout is 12% — both well above typical subscription SaaS.

One-liner: When the user brings their own API key we have no variable cost, so blocking them is both anti-commercial and anti-ethical. The trial is a buffer for users who do not want to mess with API keys, not a feature-downgrade.

The Two Mainstream Routes

Here is how typical 2026 AI tools stack up:

Product Route Monthly BYOK option
Cursor Pure subscription (bundled API) $20 / $40 Yes, but crippled (only some models via BYOK)
Perplexity Pro Pure subscription (bundled search + model) $20 No
Claude Code Pure subscription (Anthropic-bound) $100+ No
Zed Pure BYOK (editor is free) $0 Required
Continue.dev Pure BYOK (open source) $0 Required
Warp Subscription + BYOK hybrid $15 + BYOK Yes

Pure subscription problem: users pay API cost + product margin, but API prices halve annually while subscriptions never drop. Pure BYOK problem: asking a non-technical user to go to Google AI Studio for a key is effectively giving up on them.

We wanted a desktop AI app that could serve both heavy technical users and “I just want it to work” payers. So we took the third route.

Why “Beta-free + GA One-Time + BYOK Forever”

The Gemini Desktop pricing stack:

  1. Fully free during Beta — everything unlocked, no paywall, used to collect data and iterate
  2. Switch to $49 one-time after GA — pay once, activated forever, no subscription
  3. 7-day trial — new post-GA users get the full experience first
  4. BYOK free forever — any time the user configures their own Gemini API key, the paywall disappears

These four are not a marketing bundle. Each one answers a separate question:

  • Beta free: charging before the product shape is stable wastes user trust
  • One-time $49: desktop users hate subscriptions; one-time is the desktop mental anchor (Sketch, Things, Cleanshot)
  • 7-day trial: users who do not want to wrangle API keys still get to evaluate
  • BYOK free: covered in detail below

Tech: Zustand persist + a Single GA_LAUNCH_UNIX Constant

The easiest place to break pricing logic is time-point judgment: Beta vs GA, trial started or not, days remaining. Each call can end up depending on “client time or server time?”

We pinned the GA moment to a single constant and based everything on client-local time plus that constant:

// shared/pricing.ts
export const GA_LAUNCH_UNIX = 1_735_689_600_000 // 2026-01-01 UTC
export const TRIAL_DURATION_MS = 7 * 24 * 60 * 60 * 1000

export function isBetaPeriod(): boolean {
  return Date.now() < GA_LAUNCH_UNIX
}

export function getTrialState(startedAt: number | null): TrialState {
  if (isBetaPeriod()) return { kind: 'beta' }
  if (!startedAt) return { kind: 'not-started' }
  const elapsed = Date.now() - startedAt
  return elapsed < TRIAL_DURATION_MS
    ? { kind: 'active', remaining: TRIAL_DURATION_MS - elapsed }
    : { kind: 'expired' }
}

Zustand handles persistence via persist, plus a redundant localStorage write to survive schema migrations:

export const usePricingStore = create<PricingState>()(
  persist(
    (set, get) => ({
      trialStartedAt: null,
      licenseKey: null,
      byokApiKey: null,
      ensureTrialStarted: () => {
        const { trialStartedAt } = get()
        if (trialStartedAt || isBetaPeriod()) return
        const now = Date.now()
        set({ trialStartedAt: now })
        localStorage.setItem('gd_trial_at', String(now)) // redundant
      },
    }),
    { name: 'gemini-desktop-pricing' }
  )
)

Two things matter: ensureTrialStarted is idempotent (do nothing once started), and the redundant localStorage key protects against Zustand persist version migration data loss.

7-Day Trial Clock Start Logic

When does the trial start? We tried both:

  • Option A: start on first launch — Beta installers begin the countdown immediately → problem: trial expires before Beta ends
  • Option B: only start after GAensureTrialStarted is a no-op during isBetaPeriod()

Option B is correct. At the GA switchover moment, every existing Beta user’s trial begins — effectively a 7-day grace period for loyal early users.

ensureTrialStarted is called from three entry points: app boot, paywall open, and any compute-consuming feature call. Idempotence makes all three safe to call.

The Ethics of BYOK Bypassing the Paywall

A pure-subscription advocate argues: “BYOK users get the UI value for free. Charge them a software license.” That is exactly what Cursor does — bring your own key, but get a cut-down feature set.

We deliberately rejected that. Three reasons:

  1. Commercial logic: when the user brings the key, API compute cost is 100% theirs, so we have zero variable cost. Without a cost to recoup, the only remaining justification to charge is “software license” — which is already collected in the one-time $49 buyout. Charging again would be double-dipping.
  2. Ethical call: a user who brings their own key is typically a technical user cost-conscious about API spend. Building a wall that says “you pay for your own compute AND pay me for the UI” reads as greed.
  3. Acquisition efficiency: BYOK users are the strongest word-of-mouth amplifiers. When they share the product with a colleague, they add “free forever with your own Gemini key.” No ad converts that well.

Data-wise, BYOK users’ 30-day retention is 1.4x that of paid buyouts. This cohort is not a leak — they are the active core.

License Key UX: LemonSqueezy Receipt → Paste → Activate

One-time buyouts run through LemonSqueezy. Flow:

  1. Paywall → “Buy $49” → LemonSqueezy checkout
  2. Payment succeeds → LemonSqueezy emails a receipt containing a license key (UUID)
  3. User returns to Gemini Desktop → Settings → “I have a license key” → paste → activate

The MVP has zero server-side validation. The client verifies the key matches a UUID regex and unlocks. Crude? Yes. But for a one-time desktop buyout product, the cost to crack is well above $49.

This UX deliberately avoids the “sign in” step. Desktop users dislike accounts, and a one-time buyout should feel like “I bought it = I own it.”

Trial Is Not a “Feature-Cut Paid Mode”

Many subscription products trial a neutered version — export disabled, model count limited, watermarks. Our 7-day trial delivers the full feature set, identical to the paid version.

Different mental models:

  • Subscription-style trial: goal is to create “paid is better” expectation → so cripple
  • One-time-buyout trial: goal is to let the user truly validate “is this worth $49” → so deliver everything

A crippled trial actively hurts a one-time buyout funnel — users never experience the full thing, so they never commit.

What We Did Not Build (Yet)

To ship fast we consciously skipped:

  • Server-side entitlements service: license key activation state lives only on the client, no server DB
  • LemonSqueezy webhook signature verification: we do not receive webhooks, so there is nothing to forge
  • Device limit: a single key can activate unlimited machines, no fingerprinting
  • Revocation: for refunds we currently rely on good-faith uninstall, cannot remotely disable a key

All of these matter at scale. But for a desktop one-time buyout MVP, the simplified funnel has the least friction.

For more desktop AI app product detail, read Gemini Mac App — the 6 Missing Features, another retrospective from building Gemini Desktop.

FAQ

Q1: Why not go subscription?

A: Desktop users anchor to “one-time.” Look at Things, Cleanshot, Sketch, Sublime — every top-tier desktop productivity tool is one-time or hybrid. Subscription is default on the Web and anti-human on the desktop.

Q2: Won’t BYOK cannibalize revenue?

A: Short term, some users who would have paid go BYOK instead. But that cohort is precisely the “API-cost-sensitive” segment least likely to stay in a paid funnel anyway. Letting them BYOK converts “likely churn” into “active user + word-of-mouth amplifier.”

Q3: After the trial ends, how do users know whether to buy or BYOK?

A: At T-2 and T-0 we show a dual-option paywall: left side “$49 one-time buyout”, right side “paste your own Gemini API key, free forever.” Users self-select by technical comfort.

Q4: Does this pricing fit every AI app?

A: No. It fits AI apps where BYOK is feasible — users shoulder the model compute cost. If your product depends on server-side RAG, vector DBs, crawlers, or other infra with your own cost, BYOK alone cannot cover it and you still need a subscription or credits.

Wrap-Up

Pricing is product philosophy made external. Choosing BYOK-free + one-time buyout is respecting that the user is paying their own variable cost, while acknowledging that desktop users do not want subscriptions. This mix is not for every AI product — but if you are building something “client-heavy, server-light”, the third route is worth trying.