Each item below names a control, says what it actually does, and explains why it matters. These are not aspirational — every one of them is currently shipping. If you want to verify a specific claim, ask and we will walk you through the relevant code on a call.
AUTHcontrol 01
Sign-in protects every dashboard route
Every page under /dashboard and every management endpoint is guarded by Clerk session middleware. Before any server code runs, the middleware verifies the session cookie, decodes who the user is, and identifies which organization they're acting on behalf of. If verification fails the request is rejected with 401 Unauthorized before it ever touches the database. Sessions use HTTP-only, secure, SameSite cookies — they cannot be read by browser JavaScript and they cannot be sent on cross-site requests, which protects against the two most common session-theft techniques.
SCOPEcontrol 02
Your workspace is invisible to other workspaces
When you create an organization, that organization becomes your workspace and gets its own ID. Every record we create on your behalf — agents, prompts, conversations, contacts, knowledge items, offers, channel integrations — carries that workspace ID. Every database query the server makes filters on that ID before returning anything. If you don't use an organization, your user ID acts as the workspace ID; the rule is identical. There is no "super-admin" route in the codebase that can read across workspaces.
APIcontrol 03
Management routes require sign-in, no exceptions
Prompt generation, prompt history, agent CRUD, agent analytics, knowledge management, offers, conversations, channel connections, and CRM integrations all require a signed-in Clerk session. There is no API key escape hatch, no shared service account, and no "public mode" for management endpoints. Unauthenticated requests get 401 Unauthorized.
WIDGETcontrol 04
Public widget routes are deliberately walled off
Embeddable agent widgets cannot use sign-in because website visitors don't have accounts. Instead, the widget's eight public routes (chat, lead, handoff, csat, conversion, messages, transcript, widget bundle) accept only an agent's public token and resolve only that one specific agent. They cannot list other agents, read your dashboard, see another workspace, change settings, or access knowledge from a different agent — even if a malicious visitor inspects the network traffic.
SECRETScontrol 05
Credentials with database access live only on servers
Four credentials matter most: the OpenRouter API key (calls AI providers), the Supabase service role key (full database access), the Clerk secret key (issues sessions), and channel webhook secrets (verify inbound messages from WhatsApp, Telegram, Messenger, Instagram). All four exist only inside server code and environment variables — never in the browser bundle, never in the widget script, never in a public URL. Your browser receives only the Clerk publishable key (intended for client-side use), the Supabase anon key (which respects row-level security), and the public agent tokens (constrained to one agent each).
HISTORYcontrol 06
Conversation context is rebuilt from the database every turn
When a visitor sends a chat message, the server does not trust any prior conversation history the visitor's browser claims to have. It looks up the session, reads the last forty messages from the database in chronological order, and uses that as the source of truth. This makes prompt-injection-via-fake-history impossible — a visitor cannot fabricate a turn where "the agent agreed to give them 90% off" because the server doesn't read their version of the history.
RAGcontrol 07
Knowledge search is bounded to one agent at a time
Each chat message triggers a vector similarity search against the agent's knowledge base. The query is always parameterised by the agent's ID — the database is asked "find the most similar passages to this question, where agent_id equals THIS agent." Even if two of your agents share the same database (which they do, they're rows in the same table), neither can leak knowledge into the other's responses. Across workspaces the workspace-scoping rule applies on top: agents in different workspaces are completely isolated.
TLScontrol 08
HTTPS in transit, provider-managed encryption at rest
The dashboard and every API endpoint are served over HTTPS — the hosting platform enforces this; there is no plaintext fallback. Data at rest is encrypted by Supabase using their provider-managed disk encryption (EU region, Frankfurt). We deliberately do not add a custom application-layer encryption scheme on top — the security boundary is the workspace-scoping rule and the public-token boundary, not a custom crypto layer that would mostly add ways to lose data.