How your data is handled
FodyChat is a widget that answers from the project owner's knowledge base or their own APIs. Here is what is public, what is private, and how it is protected.
Public
- The widget and its look (colors, texts, position) — visible in the site's page source.
- The project ID and its public key (
pub_…) — in the embed code, so visible to anyone viewing the page source. They identify the project but are not a secret. - The AI's replies — shown to the visitor in the chat.
Only for the project owner
- The knowledge base (uploaded text / documents) — returned only via the admin API with a secret.
- Search strategies (the customer's API endpoints) — admin only.
- Project settings (mode, allowed domains) — admin only.
What the visitor sees
- Their own messages and the AI's replies in their own session.
- Nothing else — no other sessions, no other project's knowledge base.
How it's protected
- Isolation — every project's data is scoped by project / tenant id; no cross-project access.
- Origin allowlist — the widget only works from domains the owner allows (prevents cloning).
- Public key — the widget must send the correct project key.
- Admin auth — knowledge base and strategies are not returned without a secret.
- CORS — cross-origin calls are gated.
- Storage — D1 / Vectorize are encrypted at rest by Cloudflare; secrets live in Cloudflare Secrets, never in code or logs.
Important notes
- Neither the chat AI nor dictation (speech-to-text) run on-premise by default — both call the configured cloud provider (Cloudflare / OpenAI / Anthropic) over the network, with the message text, retrieved context, or the voice recording. On the self-host / BYOK plan the customer picks the provider and keeps this processing inside their own infrastructure.
- Relevant knowledge-base chunks are injected into the AI prompt — that is how RAG works, so the provider sees them.
- In tools mode, the visitor's query is passed to the customer's own API (the customer's responsibility).
- The chat is not end-to-end encrypted; messages pass through our backend.
- Dictation audio itself is never stored by FodyChat — only the resulting transcript, held in memory for the single request to the speech-to-text provider, and persisted as a message only once the visitor sends it.