1
Identity & purchase record
Recommended: Stripe Customer + email as the source of truth for who paid. For web-first checkout,
store customer_id, subscription tier, and entitlement flags in Neon (or your
DB) when the webhook fires. The desktop app can stay logged-out while still redeeming signed purchase
tokens you email after payment.
2
In-app “profile” (what users manage)
Inside the app, users effectively manage a local profile: workspace roots, models, MCP servers,
API keys in the OS keychain, billing preferences, and credit ledger. That is the day-to-day “account” experience even
without a website login—treat it as first-class UX copy in onboarding.
3
Subscription lifecycle
Expose upgrade / cancel / payment method via Stripe Customer Portal (hosted by Stripe) linked from
your marketing site or customer area. The app continues to enforce credits at runtime; portal
handles card failures and invoices.
4
Downloads & versions
Host installers on GitHub Releases, R2, or a signed URL API. Tie “latest build” to the customer’s plan in your
database so enterprise SKUs can lag or lead the public channel. Surface a simple Downloads table on
a logged-in page when you add auth to this site.
5
Security expectations
Offer a security@ alias, publish coordinated disclosure windows, and document that API keys never
leave the user machine except to providers the user configured. Optional future: SSO for Studio/Enterprise—delegate
to your IdP; the app remains a thick client.
6
What to build next on Vercel
A minimal customer hub: magic-link login (Clerk, Auth.js, or Supabase), read-only invoice list from
Stripe API, “Regenerate download link,” and “Copy redemption secret instructions” for your support team. Keep heavy
logic server-side; this marketing export stays static until you add those routes.