
Daneel AI uses a one-time payment model with no accounts, no subscriptions, and no phone-home checks during normal use. This page explains how the licensing system is designed, what stays local, and why features keep working when you're offline.

## Free by default, paid for extras

The core of the extension is free. Page Q&A, Site RAG, local inference with WebGPU or Ollama, MCP tool calling, agents, and vaults all work without paying or signing up. A handful of capabilities — the ones with meaningful infrastructure costs or aimed at power users — are gated behind a single payment.

Paid features are enforced by **feature flags** embedded in your license token, not by hardcoded product tiers. The current gates include vault limits (free: 1 vault with up to 5 documents; paid: unlimited vaults with up to 50 documents each) and a few premium model and backup destinations. The set evolves as Daneel grows; your license automatically picks up any new flags added to your tier.

## No account, just a key

There is no sign-up form, no password, no dashboard. When you click **Unlock** in **Settings > License**, you're taken to a standard Stripe checkout page. After payment, Stripe fires a webhook to the Daneel backend, which generates a key in the format `DAN-XXXX-XXXX-XXXX` and emails it to the address on your receipt.

The key is your identity. Copy it into your password manager, paste it into the license panel on any machine, and you're activated. The same key works across Chrome profiles and devices — it is not bound to a browser fingerprint, hardware ID, or account.

## The JWT token and offline caching

Pasting a license key does not unlock features directly. The extension sends the key to the backend once, which returns a signed **ES256 JWT** containing your plan tier, feature flags, and an expiry timestamp. The extension caches this token in Chrome's local storage.

Every feature check is local. A small `LicenseGate` reads the cached token, verifies its signature against an embedded public key, and checks whether the requested feature flag is present. There is no network call on normal use, which means:

- Feature checks add no latency.
- The extension works fully offline once the token is cached.
- The backend does not see which features you use or how often.

The token carries a **7-day TTL**. During that window everything continues to work without connectivity. In the background, Daneel refreshes the token before it expires. If you happen to be offline when the refresh window opens, the cached token continues to work until it runs out; the next time you come online, the refresh happens automatically and the clock resets.

If you add new flags to your tier on the backend — for instance, when a previously experimental feature ships to paid users — the next refresh pulls them in. Your key does not change, but what it unlocks can grow over time.

## Recovery

If you lose your key, open the recovery page and enter the email address you used at checkout. The backend looks up any keys associated with that address and emails them back to you. There is no support ticket, no identity verification beyond control of the email inbox, and no waiting.

## What the backend stores

Because there are no user accounts, the record of you on the backend is minimal: the license key itself and the Stripe receipt email. Stripe handles card details — Daneel never sees them. Refresh calls transmit only the license key; they do not carry any information about your browsing, your documents, your indexes, or your usage.

The backend runs on Vercel with a Supabase PostgreSQL database. The JWT is signed with an ES256 key held on the backend; the extension only ships the public half for verification.

## Related

- The license panel itself is documented in [Settings](/reference/settings/).
- For the broader data-handling picture, see the [Privacy Model](/concepts/privacy/).
