How Licensing Works
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
Section titled “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
Section titled “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
Section titled “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
Section titled “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
Section titled “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
Section titled “Related”- The license panel itself is documented in Settings.
- For the broader data-handling picture, see the Privacy Model.