How Searchbop stores your workspace and encrypts API keys on disk
Unlike cloud SaaS SEO platforms that store your Google OAuth tokens, Search Console query tables, and repository tokens in a central multi-tenant database, Searchbop runs its database locally on your computer (for example, inside `~/Library/Application Support/TengrX SEO` on macOS).
When you paste an OpenAI, Anthropic Claude, Google Gemini, OpenRouter, GitHub, or Google Service Account credential into **Settings → Connections**, Searchbop protects that secret before writing it to SQLite:
- `AES-256-GCM` authenticated encryption: Every credential value is encrypted with a random 12-byte initialization vector (IV) and a 16-byte authentication tag, stored in the `enc:v1:<iv>:<tag>:<ciphertext>` format.
- OS-backed master key protection: Where operating-system protection is available, the local encryption secret is protected by **macOS Keychain** (or **Windows DPAPI** on Windows builds).
- In-memory decryption only on use: Credentials are decrypted in memory only at the moment your local worker makes a direct HTTPS request to that specific provider.
Exactly what leaves your device—and where it goes
Local storage does not mean every feature works offline. Reading saved reports and browsing past conversations work offline, but live checks and AI actions communicate directly with the external endpoints you configure:
| Destination Service | When a Request Is Sent | Exact Payload That Leaves Your Device |
|---|---|---|
| Searchbop / TengrX Cloud | Never for workspace data. | There is no Searchbop cloud account sync. We do not receive your sites, GSC data, chats, drafts, or API keys. |
| Your Chosen AI Provider (OpenAI, Claude, Gemini, DeepSeek, Qwen, Kimi, Z.ai, OpenRouter, or Custom URL) |
When you send a chat message, generate an article draft, propose a code/meta fix, or run an AI visibility probe. | Your prompt, relevant conversation history, and the specific website audit summary or repository file snippet needed to complete the task. |
| Google APIs (Search Console, GA4, PageSpeed Insights, URL Inspection) |
During manual or scheduled site scans and URL inspections. | Service-account OAuth token, your site property URL (`sc-domain:` or URL-prefix), date ranges, and inspected page URLs. |
| Bing, IndexNow, DataForSEO & SerpApi | Only if you add their API keys and run keyword research, Bing syncs, or URL submissions. | Your API key for that service, target domain/URLs, or seed keyword queries. |
| GitHub API | When reading repository files for context or opening a branch and pull request you approved. | Your GitHub Personal Access Token, target `owner/repo`, branch name, file diffs, and PR title/body. |
| Your Audited Websites | During a technical SEO crawl or `robots.txt` / `sitemap.xml` check. | Standard HTTP `GET`/`HEAD` requests from your computer’s IP address to the public URLs you inspect. |
| Polar (Licensing) | When activating or deactivating your app license on a device. | Your license key, product/organization ID, and a device label (such as your computer’s hostname). |
Why BYOK gives you direct control over AI data retention and model training
When you use a bundled AI SaaS tool, your prompts pass through the vendor’s corporate API account—meaning you inherit whatever data-sharing, logging, or model-training settings that vendor negotiated. With a BYOK desktop architecture, **your request authenticates with your own API key under your own provider account**:
- Commercial API traffic sent directly to the **OpenAI API**, **Anthropic API**, and **Google Gemini paid API** is governed by their commercial API terms (which, by default on paid commercial tiers, exclude API inputs/outputs from foundation model training—always verify your organization’s current settings in your provider console).
- If you route through **OpenRouter**, OpenRouter forwards your prompt to the underlying model host; you can configure OpenRouter’s privacy and zero-data-retention (ZDR) routing filters directly in your OpenRouter account settings.
- If you require strict internal network residency, you can select **Custom API** and point Searchbop at your own self-hosted or VPC-hosted OpenAI-compatible endpoint (as long as the model supports tool calling and streaming).
How local data pruning and complete deletion work
To keep your local SQLite database fast over months of daily checks, Searchbop’s local worker automatically prunes raw intermediate search and analytics rows associated with runs older than 14 days while preserving your high-level reports, conversations, and settings. If you ever want to wipe all workspace data from your computer, simply quit Searchbop and delete the local application data folder shown in **Settings → This device** (removing local files is separate from deactivating a Polar device seat or deleting logs held by an external API provider).
Honest security boundaries
What local credential encryption does and does not do: `AES-256-GCM` with Keychain/DPAPI protects your stored API keys at rest inside the SQLite `credentials` table. It does not encrypt every chat transcript or report table on disk, and keys must be decrypted in memory while making an API call. Always protect your macOS user account, enable full-disk encryption (FileVault), and secure your Time Machine or cloud backups. Read our complete Privacy Policy for full details.
Research context & search queries covered on this page BYOK & Privacy · P1
Cluster & intent: byok & ownership (Commercial / Informational · P1) · Target queries: bring your own API key SEO tool, BYOK SEO tool, local first SEO software.
Benchmark prompt addressed: P09 — What data leaves my device when I use a BYOK SEO app?