Skip to main content

BYOK Privacy Model

A technical explanation of how the Bring Your Own Key (BYOK) model works in Project Nexus and why it was chosen.

Philosophy

Project Nexus follows a Privacy-First philosophy. For free-tier users, all AI processing must happen directly in the user's browser using their own API keys. Nothing routes through our servers.

This means:

  • We never see your API keys.
  • We never see the content you capture.
  • Your knowledge base is stored in your own Supabase instance.

Where Keys Are Stored

Extension keys are stored in browser local storage via @plasmohq/storage (which wraps chrome.storage.local):

KeyValue
openai-keyOpenAI API key
anthropic-keyAnthropic API key
gemini-keyGoogle Gemini API key
active-providerWhich provider to use for the next capture

Memory Agent keys are stored in browser localStorage via Zustand with the key nexus-memory-settings.

API Call Flow

Extension (Browser)
↓ reads key from chrome.storage.local
↓ constructs LLM API request
→ LLM Provider (OpenAI / Anthropic / Gemini) directly
← Structured JSON response
→ Supabase (user's own database via session)

No data ever passes through our Next.js backend during AI processing.

Supabase Session Security

The extension uses a Supabase session (access & refresh tokens) to authenticate database writes. This session:

  • Is scoped to your Supabase project.
  • Automatically refreshes in the background.
  • Is transferred securely from the web dashboard via the one-click Connect Extension flow.
  • Grants only the permissions defined by your Supabase RLS policies (i.e., only your own data).

Tier Comparison

FeatureHacker (Free)Nexus CloudNexus Pro
AI processingClient-side (BYOK)Client-side (BYOK)Server-routed (our keys)
DatabaseSelf-hosted SupabaseManaged (we host it)Managed (we host it)
API keys requiredYes — your own keysYes — your own keysNo — we provide credits
PrivacyHighestHighStandard

Security Considerations

  • API keys stored in chrome.storage.local are isolated to the extension origin. Web pages cannot access them.
  • The Supabase session provides no more access than your RLS policies allow.
  • If you are on a shared computer, always clear your extension storage when done.
  • Do not paste your API keys anywhere other than the extension Options page.