Docs
Security and privacy
What octokan stores, and what protects it.
Messages are encrypted
Message text is encrypted in transit (TLS) and again before it is stored (AES-256-GCM, a separate key per app, applied by the server before the database write). The master key lives only in server settings. Someone with access to the database sees ciphertext. The text is decrypted for the visitor in their own chat and for the owner and teammates in the inbox. octokan's servers decrypt it briefly to deliver it, send alerts and run AI Reply, so this is encryption at rest and in transit, not zero-knowledge end-to-end encryption.
Visitors get a random token; only its hash is stored. Nothing is stored about a person until they open the chat. The chat widget sets no cookies, runs no analytics and no IP addresses are stored; page addresses are saved without query strings.
Every table uses row level security, so owners only ever see their own app's data. Each app has an allowed-sites list and durable rate limits.
What a browser or app can see
The chat script and the SDKs only ever hold your public app key and the backend address. The database service key, the identity secret, Telegram and AI keys exist only on the servers. The dashboard sends a strict Content-Security-Policy, and the production bundle ships without source maps.
Teammates
Teammates can read and answer conversations of the apps they were invited to, but never read the app's secrets, and only confirmed email addresses count. Only the owner changes settings, billing or access.
Reading your website and store listing
When octokan learns your app it fetches your public pages from the server, only over http(s) on public addresses, with the address checked at connect time, timeouts and size limits. Anything it learns is treated as reference text, never as instructions.
AI
AI is off by default, with separate switches for insights and replies. Chat text is redacted (emails, phone numbers, link parameters) and visitors are anonymised before it is sent to the AI provider.
You can export all data, delete a conversation, set automatic retention, or delete your account. Visitors can delete their own chat from the widget.