From 490eafc088ce82e953aad025472d20c9fa3a9a6c Mon Sep 17 00:00:00 2001 From: Sam Date: Wed, 6 May 2026 05:44:20 +1000 Subject: [PATCH 1/6] docs(audit): add TODO provider inventory for next audit batch 136 providers remain with unverified data-policy metadata. Structured as JSON with provider_id, display_name, base_url, is_aggregator, is_self_hosted_chat, current_metadata, todo_url, and category for each entry. Generated from current providers.ts state (2026-05-06). Co-Authored-By: Claude Sonnet 4.6 --- docs/audit-todo-inventory.json | 2182 ++++++++++++++++++++++++++++++++ 1 file changed, 2182 insertions(+) create mode 100644 docs/audit-todo-inventory.json diff --git a/docs/audit-todo-inventory.json b/docs/audit-todo-inventory.json new file mode 100644 index 00000000..64654852 --- /dev/null +++ b/docs/audit-todo-inventory.json @@ -0,0 +1,2182 @@ +{ + "generated_at": "2026-05-05T19:43:46.836Z", + "total_todo_providers": 136, + "rows": [ + { + "provider_id": "assemblyai", + "display_name": "AssemblyAI", + "base_url": null, + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://assemblyai.com", + "category": "audio" + }, + { + "provider_id": "aws-polly", + "display_name": "AWS Polly", + "base_url": null, + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://aws.amazon.com/polly/", + "category": "audio" + }, + { + "provider_id": "cartesia", + "display_name": "Cartesia", + "base_url": null, + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://cartesia.ai", + "category": "audio" + }, + { + "provider_id": "deepgram", + "display_name": "Deepgram", + "base_url": null, + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://deepgram.com", + "category": "audio" + }, + { + "provider_id": "elevenlabs", + "display_name": "ElevenLabs", + "base_url": null, + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://elevenlabs.io", + "category": "audio" + }, + { + "provider_id": "inworld", + "display_name": "Inworld", + "base_url": null, + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://inworld.ai", + "category": "audio" + }, + { + "provider_id": "playht", + "display_name": "PlayHT", + "base_url": null, + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://play.ht", + "category": "audio" + }, + { + "provider_id": "agentrouter", + "display_name": "AgentRouter", + "base_url": "https://agentrouter.org/v1/chat/completions", + "is_aggregator": true, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://agentrouter.org", + "category": "chat" + }, + { + "provider_id": "ai21", + "display_name": "AI21 Labs", + "base_url": "https://api.ai21.com/studio/v1/chat/completions", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://www.ai21.com", + "category": "chat" + }, + { + "provider_id": "aimlapi", + "display_name": "AI/ML API", + "base_url": "https://api.aimlapi.com/v1/chat/completions", + "is_aggregator": true, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://aimlapi.com", + "category": "chat" + }, + { + "provider_id": "alibaba", + "display_name": "Alibaba Cloud (DashScope)", + "base_url": "https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://dashscope-intl.aliyuncs.com", + "category": "chat" + }, + { + "provider_id": "alicode", + "display_name": "Alibaba", + "base_url": "https://coding.dashscope.aliyuncs.com/v1/chat/completions", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://bailian.console.aliyun.com", + "category": "chat" + }, + { + "provider_id": "alicode-intl", + "display_name": "Alibaba Intl", + "base_url": "https://coding-intl.dashscope.aliyuncs.com/v1/chat/completions", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://modelstudio.console.alibabacloud.com", + "category": "chat" + }, + { + "provider_id": "amazon-q", + "display_name": "Amazon Q", + "base_url": null, + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://aws.amazon.com/q/developer/", + "category": "chat" + }, + { + "provider_id": "antigravity", + "display_name": "Antigravity", + "base_url": null, + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": null, + "category": "chat" + }, + { + "provider_id": "bailian-coding-plan", + "display_name": "Alibaba Coding Plan", + "base_url": "https://coding-intl.dashscope.aliyuncs.com/apps/anthropic/v1/messages", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://www.alibabacloud.com/help/en/model-studio/coding-plan", + "category": "chat" + }, + { + "provider_id": "baseten", + "display_name": "Baseten", + "base_url": "https://inference.baseten.co/v1/chat/completions", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://baseten.co", + "category": "chat" + }, + { + "provider_id": "blackbox", + "display_name": "Blackbox AI", + "base_url": "https://api.blackbox.ai/v1/chat/completions", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://blackbox.ai", + "category": "chat" + }, + { + "provider_id": "blackbox-web", + "display_name": "Blackbox Web (Subscription)", + "base_url": null, + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://app.blackbox.ai", + "category": "chat" + }, + { + "provider_id": "bytez", + "display_name": "Bytez", + "base_url": "https://api.bytez.com/models/v2", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://bytez.com", + "category": "chat" + }, + { + "provider_id": "cablyai", + "display_name": "CablyAI", + "base_url": null, + "is_aggregator": true, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://cablyai.com", + "category": "chat" + }, + { + "provider_id": "cerebras", + "display_name": "Cerebras", + "base_url": "https://api.cerebras.ai/v1/chat/completions", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://inference.cerebras.ai", + "category": "chat" + }, + { + "provider_id": "chatgpt-web", + "display_name": "ChatGPT Web (Plus/Pro)", + "base_url": "https://chatgpt.com/backend-api/conversation", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://chatgpt.com", + "category": "chat" + }, + { + "provider_id": "chutes", + "display_name": "Chutes.ai", + "base_url": null, + "is_aggregator": true, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://chutes.ai", + "category": "chat" + }, + { + "provider_id": "clarifai", + "display_name": "Clarifai", + "base_url": null, + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://docs.clarifai.com", + "category": "chat" + }, + { + "provider_id": "claude", + "display_name": "Claude Code", + "base_url": "https://api.anthropic.com/v1/messages", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": null, + "category": "chat" + }, + { + "provider_id": "cline", + "display_name": "Cline", + "base_url": "https://api.cline.bot/api/v1/chat/completions", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": null, + "category": "chat" + }, + { + "provider_id": "cloudflare-ai", + "display_name": "Cloudflare Workers AI", + "base_url": "https://api.cloudflare.com/client/v4/accounts", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://developers.cloudflare.com/workers-ai/", + "category": "chat" + }, + { + "provider_id": "codestral", + "display_name": "Codestral", + "base_url": "https://codestral.mistral.ai/v1/chat/completions", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://mistral.ai", + "category": "chat" + }, + { + "provider_id": "cohere", + "display_name": "Cohere", + "base_url": "https://api.cohere.com/v2/chat", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://cohere.com", + "category": "chat" + }, + { + "provider_id": "crof", + "display_name": "CrofAI", + "base_url": "https://crof.ai/v1/chat/completions", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://crof.ai", + "category": "chat" + }, + { + "provider_id": "cursor", + "display_name": "Cursor IDE", + "base_url": "https://api2.cursor.sh", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": null, + "category": "chat" + }, + { + "provider_id": "databricks", + "display_name": "Databricks", + "base_url": "https://adb-0000000000000000.0.azuredatabricks.net/serving-endpoints", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://www.databricks.com", + "category": "chat" + }, + { + "provider_id": "datarobot", + "display_name": "DataRobot", + "base_url": null, + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://docs.datarobot.com", + "category": "chat" + }, + { + "provider_id": "deepinfra", + "display_name": "DeepInfra", + "base_url": "https://api.deepinfra.com/v1/openai/chat/completions", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://deepinfra.com", + "category": "chat" + }, + { + "provider_id": "deepseek", + "display_name": "DeepSeek", + "base_url": "https://api.deepseek.com/v1/chat/completions", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://deepseek.com", + "category": "chat" + }, + { + "provider_id": "empower", + "display_name": "Empower", + "base_url": null, + "is_aggregator": true, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://docs.empower.dev", + "category": "chat" + }, + { + "provider_id": "featherless-ai", + "display_name": "Featherless AI", + "base_url": "https://api.featherless.ai/v1/chat/completions", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://featherless.ai", + "category": "chat" + }, + { + "provider_id": "fenayai", + "display_name": "FenayAI", + "base_url": null, + "is_aggregator": true, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://fenayai.com", + "category": "chat" + }, + { + "provider_id": "fireworks", + "display_name": "Fireworks AI", + "base_url": "https://api.fireworks.ai/inference/v1/chat/completions", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://fireworks.ai", + "category": "chat" + }, + { + "provider_id": "friendliai", + "display_name": "FriendliAI", + "base_url": "https://api.friendli.ai/dedicated/v1/chat/completions", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://friendli.ai", + "category": "chat" + }, + { + "provider_id": "galadriel", + "display_name": "Galadriel", + "base_url": "https://api.galadriel.ai/v1/chat/completions", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://galadriel.com", + "category": "chat" + }, + { + "provider_id": "gemini-cli", + "display_name": "Gemini CLI", + "base_url": "https://cloudcode-pa.googleapis.com/v1internal", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": null, + "category": "chat" + }, + { + "provider_id": "getgoapi", + "display_name": "GoAPI", + "base_url": null, + "is_aggregator": true, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://api.getgoapi.com", + "category": "chat" + }, + { + "provider_id": "gigachat", + "display_name": "GigaChat (Sber)", + "base_url": "https://gigachat.devices.sberbank.ru/api/v1", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://developers.sber.ru", + "category": "chat" + }, + { + "provider_id": "gitlab", + "display_name": "GitLab Duo PAT", + "base_url": null, + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://docs.gitlab.com/user/duo_agent_platform/code_suggestions/", + "category": "chat" + }, + { + "provider_id": "gitlab-duo", + "display_name": "GitLab Duo", + "base_url": null, + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://docs.gitlab.com/user/duo_agent_platform/code_suggestions/", + "category": "chat" + }, + { + "provider_id": "glhf", + "display_name": "GLHF Chat", + "base_url": null, + "is_aggregator": true, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://glhf.chat", + "category": "chat" + }, + { + "provider_id": "grok-web", + "display_name": "Grok Web (Subscription)", + "base_url": "https://grok.com/rest/app-chat/conversations/new", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://grok.com", + "category": "chat" + }, + { + "provider_id": "groq", + "display_name": "Groq", + "base_url": "https://api.groq.com/openai/v1/chat/completions", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://groq.com", + "category": "chat" + }, + { + "provider_id": "heroku", + "display_name": "Heroku AI", + "base_url": "https://us.inference.heroku.com/v1/chat/completions", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://www.heroku.com", + "category": "chat" + }, + { + "provider_id": "huggingface", + "display_name": "HuggingFace", + "base_url": null, + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://huggingface.co", + "category": "chat" + }, + { + "provider_id": "hyperbolic", + "display_name": "Hyperbolic", + "base_url": "https://api.hyperbolic.xyz/v1/chat/completions", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://hyperbolic.xyz", + "category": "chat" + }, + { + "provider_id": "inference-net", + "display_name": "Inference.net", + "base_url": "https://api.inference.net/v1/chat/completions", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://inference.net", + "category": "chat" + }, + { + "provider_id": "kilo-gateway", + "display_name": "Kilo Gateway", + "base_url": "https://api.kilo.ai/api/gateway/chat/completions", + "is_aggregator": true, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://kilo.ai", + "category": "chat" + }, + { + "provider_id": "kilocode", + "display_name": "Kilo Code", + "base_url": "https://api.kilo.ai/api/openrouter/chat/completions", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": null, + "category": "chat" + }, + { + "provider_id": "kimi", + "display_name": "Kimi", + "base_url": "https://api.moonshot.ai/v1/chat/completions", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://kimi.moonshot.cn", + "category": "chat" + }, + { + "provider_id": "kimi-coding", + "display_name": "Kimi Coding", + "base_url": null, + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": null, + "category": "chat" + }, + { + "provider_id": "kimi-coding-apikey", + "display_name": "Kimi Coding (API Key)", + "base_url": null, + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://kimi.com", + "category": "chat" + }, + { + "provider_id": "kiro", + "display_name": "Kiro AI", + "base_url": "https://codewhisperer.us-east-1.amazonaws.com/generateAssistantResponse", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": null, + "category": "chat" + }, + { + "provider_id": "lambda-ai", + "display_name": "Lambda AI", + "base_url": "https://api.lambda.ai/v1/chat/completions", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://lambda.ai", + "category": "chat" + }, + { + "provider_id": "laozhang", + "display_name": "LaoZhang AI", + "base_url": null, + "is_aggregator": true, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://api.laozhang.ai", + "category": "chat" + }, + { + "provider_id": "llamagate", + "display_name": "LlamaGate", + "base_url": "https://llamagate.ai/v1/chat/completions", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://llamagate.ai", + "category": "chat" + }, + { + "provider_id": "longcat", + "display_name": "LongCat AI", + "base_url": "https://api.longcat.chat/openai/v1/chat/completions", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://longcat.chat", + "category": "chat" + }, + { + "provider_id": "maritalk", + "display_name": "Maritalk", + "base_url": null, + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://www.maritaca.ai", + "category": "chat" + }, + { + "provider_id": "meta-llama", + "display_name": "Meta Llama API", + "base_url": "https://api.llama.com/compat/v1/chat/completions", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://llama.developer.meta.com", + "category": "chat" + }, + { + "provider_id": "minimax", + "display_name": "Minimax Coding", + "base_url": "https://api.minimax.io/anthropic/v1/messages", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://www.minimaxi.com", + "category": "chat" + }, + { + "provider_id": "minimax-cn", + "display_name": "Minimax (China)", + "base_url": "https://api.minimaxi.com/anthropic/v1/messages", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://www.minimaxi.com", + "category": "chat" + }, + { + "provider_id": "mistral", + "display_name": "Mistral", + "base_url": "https://api.mistral.ai/v1/chat/completions", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://mistral.ai", + "category": "chat" + }, + { + "provider_id": "modal", + "display_name": "Modal", + "base_url": null, + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://modal.com/docs", + "category": "chat" + }, + { + "provider_id": "moonshot", + "display_name": "Moonshot AI", + "base_url": "https://api.moonshot.ai/v1/chat/completions", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://platform.moonshot.ai", + "category": "chat" + }, + { + "provider_id": "morph", + "display_name": "Morph", + "base_url": "https://api.morphllm.com/v1/chat/completions", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://morphllm.com", + "category": "chat" + }, + { + "provider_id": "muse-spark-web", + "display_name": "Muse Spark Web (Meta AI)", + "base_url": "https://www.meta.ai/api/graphql", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://www.meta.ai", + "category": "chat" + }, + { + "provider_id": "nanogpt", + "display_name": "NanoGPT", + "base_url": "https://nano-gpt.com/api/v1/chat/completions", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://nano-gpt.com", + "category": "chat" + }, + { + "provider_id": "nebius", + "display_name": "Nebius AI", + "base_url": "https://api.tokenfactory.nebius.com/v1/chat/completions", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://nebius.com", + "category": "chat" + }, + { + "provider_id": "nlpcloud", + "display_name": "NLP Cloud", + "base_url": null, + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://docs.nlpcloud.com", + "category": "chat" + }, + { + "provider_id": "nous-research", + "display_name": "Nous Research", + "base_url": "https://inference-api.nousresearch.com/v1", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://portal.nousresearch.com/help", + "category": "chat" + }, + { + "provider_id": "novita", + "display_name": "Novita AI", + "base_url": null, + "is_aggregator": true, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://novita.ai", + "category": "chat" + }, + { + "provider_id": "nscale", + "display_name": "nScale", + "base_url": "https://inference.api.nscale.com/v1/chat/completions", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://nscale.com", + "category": "chat" + }, + { + "provider_id": "nvidia", + "display_name": "NVIDIA NIM", + "base_url": "https://integrate.api.nvidia.com/v1/chat/completions", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://build.nvidia.com", + "category": "chat" + }, + { + "provider_id": "oci", + "display_name": "OCI Generative AI", + "base_url": null, + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://www.oracle.com/artificial-intelligence/generative-ai/", + "category": "chat" + }, + { + "provider_id": "ollama-cloud", + "display_name": "Ollama Cloud", + "base_url": "https://ollama.com/v1/chat/completions", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://ollama.com/settings/api-keys", + "category": "chat" + }, + { + "provider_id": "opencode-go", + "display_name": "OpenCode Go", + "base_url": "https://opencode.ai/zen/go/v1", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://opencode.ai/zen/go", + "category": "chat" + }, + { + "provider_id": "opencode-zen", + "display_name": "OpenCode Zen", + "base_url": "https://opencode.ai/zen/v1", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://opencode.ai/zen", + "category": "chat" + }, + { + "provider_id": "openrouter", + "display_name": "OpenRouter", + "base_url": "https://openrouter.ai/api/v1/chat/completions", + "is_aggregator": true, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://openrouter.ai", + "category": "chat" + }, + { + "provider_id": "ovhcloud", + "display_name": "OVHcloud AI", + "base_url": "https://oai.endpoints.kepler.ai.cloud.ovh.net/v1/chat/completions", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://www.ovhcloud.com", + "category": "chat" + }, + { + "provider_id": "perplexity", + "display_name": "Perplexity", + "base_url": "https://api.perplexity.ai/chat/completions", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://www.perplexity.ai", + "category": "chat" + }, + { + "provider_id": "perplexity-web", + "display_name": "Perplexity Web (Pro/Max)", + "base_url": "https://www.perplexity.ai/rest/sse/perplexity_ask", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://www.perplexity.ai", + "category": "chat" + }, + { + "provider_id": "petals", + "display_name": "Petals", + "base_url": null, + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://chat.petals.dev", + "category": "chat" + }, + { + "provider_id": "piapi", + "display_name": "PiAPI", + "base_url": null, + "is_aggregator": true, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://piapi.ai", + "category": "chat" + }, + { + "provider_id": "poe", + "display_name": "Poe", + "base_url": null, + "is_aggregator": true, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://creator.poe.com/api-reference", + "category": "chat" + }, + { + "provider_id": "pollinations", + "display_name": "Pollinations AI", + "base_url": "https://text.pollinations.ai/openai/chat/completions", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://pollinations.ai", + "category": "chat" + }, + { + "provider_id": "predibase", + "display_name": "Predibase", + "base_url": "https://serving.app.predibase.com/v1/chat/completions", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://predibase.com", + "category": "chat" + }, + { + "provider_id": "publicai", + "display_name": "PublicAI", + "base_url": "https://api.publicai.co/v1/chat/completions", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://publicai.co", + "category": "chat" + }, + { + "provider_id": "puter", + "display_name": "Puter AI", + "base_url": "https://api.puter.com/puterai/openai/v1/chat/completions", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://puter.com", + "category": "chat" + }, + { + "provider_id": "qianfan", + "display_name": "Baidu Qianfan", + "base_url": "https://qianfan.baidubce.com/v2/chat/completions", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://cloud.baidu.com/product/wenxinworkshop", + "category": "chat" + }, + { + "provider_id": "qoder", + "display_name": "Qoder AI", + "base_url": "https://api.qoder.com/v1/chat/completions", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": null, + "category": "chat" + }, + { + "provider_id": "qwen", + "display_name": "Qwen Code", + "base_url": "https://chat.qwen.ai/api/v1/services/aigc/text-generation/generation", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": null, + "category": "chat" + }, + { + "provider_id": "reka", + "display_name": "Reka", + "base_url": null, + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://docs.reka.ai/chat/overview", + "category": "chat" + }, + { + "provider_id": "sambanova", + "display_name": "SambaNova", + "base_url": "https://api.sambanova.ai/v1/chat/completions", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://sambanova.ai", + "category": "chat" + }, + { + "provider_id": "sap", + "display_name": "SAP Generative AI Hub", + "base_url": null, + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://help.sap.com/docs/sap-ai-core/sap-ai-core-service-guide/generative-ai-hub-in-sap-ai-core", + "category": "chat" + }, + { + "provider_id": "scaleway", + "display_name": "Scaleway AI", + "base_url": "https://api.scaleway.ai/v1/chat/completions", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://www.scaleway.com/en/ai/generative-apis/", + "category": "chat" + }, + { + "provider_id": "siliconflow", + "display_name": "SiliconFlow", + "base_url": "https://api.siliconflow.com/v1/chat/completions", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://cloud.siliconflow.com", + "category": "chat" + }, + { + "provider_id": "snowflake", + "display_name": "Snowflake Cortex", + "base_url": "https://example-account.snowflakecomputing.com/api/v2", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://www.snowflake.com", + "category": "chat" + }, + { + "provider_id": "synthetic", + "display_name": "Synthetic", + "base_url": "https://api.synthetic.new/openai/v1/chat/completions", + "is_aggregator": true, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://synthetic.new", + "category": "chat" + }, + { + "provider_id": "thebai", + "display_name": "TheB.AI", + "base_url": null, + "is_aggregator": true, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://theb.ai", + "category": "chat" + }, + { + "provider_id": "together", + "display_name": "Together AI", + "base_url": "https://api.together.xyz/v1/chat/completions", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://www.together.ai", + "category": "chat" + }, + { + "provider_id": "upstage", + "display_name": "Upstage", + "base_url": "https://api.upstage.ai/v1/chat/completions", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://www.upstage.ai", + "category": "chat" + }, + { + "provider_id": "v0-vercel", + "display_name": "v0 (Vercel)", + "base_url": "https://api.v0.dev/v1/chat/completions", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://v0.dev", + "category": "chat" + }, + { + "provider_id": "venice", + "display_name": "Venice.ai", + "base_url": "https://api.venice.ai/api/v1/chat/completions", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://venice.ai", + "category": "chat" + }, + { + "provider_id": "vercel-ai-gateway", + "display_name": "Vercel AI Gateway", + "base_url": "https://ai-gateway.vercel.sh/v1/chat/completions", + "is_aggregator": true, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://vercel.com/docs/ai-gateway", + "category": "chat" + }, + { + "provider_id": "volcengine", + "display_name": "Volcengine", + "base_url": "https://ark.cn-beijing.volces.com/api/v3/chat/completions", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://www.volcengine.com", + "category": "chat" + }, + { + "provider_id": "wandb", + "display_name": "Weights & Biases Inference", + "base_url": "https://api.inference.wandb.ai/v1/chat/completions", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://wandb.ai", + "category": "chat" + }, + { + "provider_id": "watsonx", + "display_name": "IBM watsonx.ai Gateway", + "base_url": null, + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://www.ibm.com/products/watsonx-ai", + "category": "chat" + }, + { + "provider_id": "xai", + "display_name": "xAI (Grok)", + "base_url": "https://api.x.ai/v1/chat/completions", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://x.ai", + "category": "chat" + }, + { + "provider_id": "xiaomi-mimo", + "display_name": "Xiaomi MiMo", + "base_url": "https://api.xiaomimimo.com/v1", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://mimo.mi.com", + "category": "chat" + }, + { + "provider_id": "zai", + "display_name": "Z.AI", + "base_url": "https://api.z.ai/api/anthropic/v1/messages", + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://open.bigmodel.cn", + "category": "chat" + }, + { + "provider_id": "jina-ai", + "display_name": "Jina AI", + "base_url": null, + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://jina.ai", + "category": "embeddings+rerank" + }, + { + "provider_id": "voyage-ai", + "display_name": "Voyage AI", + "base_url": null, + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://www.voyageai.com", + "category": "embeddings+rerank" + }, + { + "provider_id": "black-forest-labs", + "display_name": "Black Forest Labs", + "base_url": null, + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://blackforestlabs.ai", + "category": "image" + }, + { + "provider_id": "fal-ai", + "display_name": "Fal.ai", + "base_url": null, + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://fal.ai", + "category": "image" + }, + { + "provider_id": "nanobanana", + "display_name": "NanoBanana", + "base_url": null, + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://nanobananaapi.ai", + "category": "image" + }, + { + "provider_id": "recraft", + "display_name": "Recraft", + "base_url": null, + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://recraft.ai", + "category": "image" + }, + { + "provider_id": "stability-ai", + "display_name": "Stability AI", + "base_url": null, + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://stability.ai", + "category": "image" + }, + { + "provider_id": "topaz", + "display_name": "Topaz", + "base_url": null, + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://topazlabs.com", + "category": "image" + }, + { + "provider_id": "cliproxyapi", + "display_name": "CLIProxyAPI", + "base_url": null, + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://github.com/router-for-me/CLIProxyAPI", + "category": "proxy" + }, + { + "provider_id": "brave-search", + "display_name": "Brave Search", + "base_url": null, + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://brave.com/search/api", + "category": "search" + }, + { + "provider_id": "exa-search", + "display_name": "Exa Search", + "base_url": null, + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://exa.ai", + "category": "search" + }, + { + "provider_id": "google-pse-search", + "display_name": "Google Programmable Search", + "base_url": null, + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://developers.google.com/custom-search/v1/overview", + "category": "search" + }, + { + "provider_id": "linkup-search", + "display_name": "Linkup Search", + "base_url": null, + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://docs.linkup.so", + "category": "search" + }, + { + "provider_id": "perplexity-search", + "display_name": "Perplexity Search", + "base_url": null, + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://docs.perplexity.ai/guides/search-quickstart", + "category": "search" + }, + { + "provider_id": "searchapi-search", + "display_name": "SearchAPI", + "base_url": null, + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://www.searchapi.io/docs", + "category": "search" + }, + { + "provider_id": "serper-search", + "display_name": "Serper Search", + "base_url": null, + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://serper.dev", + "category": "search" + }, + { + "provider_id": "tavily-search", + "display_name": "Tavily Search", + "base_url": null, + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://tavily.com", + "category": "search" + }, + { + "provider_id": "youcom-search", + "display_name": "You.com Search", + "base_url": null, + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://you.com/docs/search/overview", + "category": "search" + }, + { + "provider_id": "runwayml", + "display_name": "Runway", + "base_url": null, + "is_aggregator": false, + "is_self_hosted_chat": false, + "current_metadata": { + "trains_on_data": true, + "data_residency": "unknown", + "retention_days": null, + "local": false, + "e2ee": false + }, + "todo_url": "https://docs.dev.runwayml.com", + "category": "video" + } + ] +} From 2b6e5597daede9b25c3187ffeaf0ea236a700e2b Mon Sep 17 00:00:00 2001 From: Sam Date: Wed, 6 May 2026 05:45:51 +1000 Subject: [PATCH 2/6] docs(audit): recategorize cliproxyapi as chat Co-Authored-By: Claude Sonnet 4.6 --- docs/audit-todo-inventory.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/audit-todo-inventory.json b/docs/audit-todo-inventory.json index 64654852..c2825279 100644 --- a/docs/audit-todo-inventory.json +++ b/docs/audit-todo-inventory.json @@ -2016,7 +2016,7 @@ "e2ee": false }, "todo_url": "https://github.com/router-for-me/CLIProxyAPI", - "category": "proxy" + "category": "chat" }, { "provider_id": "brave-search", From e4b75d0c1bad40dff61f1eb9b88dbeddd881d691 Mon Sep 17 00:00:00 2001 From: Sam Date: Wed, 6 May 2026 05:46:49 +1000 Subject: [PATCH 3/6] Revert "docs(audit): recategorize cliproxyapi as chat" This reverts commit 2b6e5597daede9b25c3187ffeaf0ea236a700e2b. --- docs/audit-todo-inventory.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/audit-todo-inventory.json b/docs/audit-todo-inventory.json index c2825279..64654852 100644 --- a/docs/audit-todo-inventory.json +++ b/docs/audit-todo-inventory.json @@ -2016,7 +2016,7 @@ "e2ee": false }, "todo_url": "https://github.com/router-for-me/CLIProxyAPI", - "category": "chat" + "category": "proxy" }, { "provider_id": "brave-search", From fe6a82f201044070f6192391ff1894dac1e34f7a Mon Sep 17 00:00:00 2001 From: Sam Date: Wed, 6 May 2026 15:02:00 +1000 Subject: [PATCH 4/6] feat(db): apply full provider data-policy audit to providers.ts MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 136 providers updated with verified trains_on_data, data_residency, retention_days, local, and e2ee values from docs/provider-audit-results.json. - 90 providers got // Verified 2026-05-06 comments (high/medium confidence) - 46 providers retain // TODO(sam) with updated citation URLs (low confidence) - Notable: chutes + lambda-ai → e2ee=true (TEE/confidential compute) - Notable: kilocode + topaz → local=true (IDE extension / desktop app) - Notable: cliproxyapi already local=true (self-hosted proxy) - Source data: docs/provider-audit-results.json (136-provider research pass) Co-Authored-By: Claude Sonnet 4.6 --- docs/provider-audit-results.json | 142 ++++++ src/shared/constants/providers.ts | 806 +++++++++++++++--------------- 2 files changed, 545 insertions(+), 403 deletions(-) create mode 100644 docs/provider-audit-results.json diff --git a/docs/provider-audit-results.json b/docs/provider-audit-results.json new file mode 100644 index 00000000..3b905824 --- /dev/null +++ b/docs/provider-audit-results.json @@ -0,0 +1,142 @@ +{ + "generated_at": "2026-05-06T00:00:00Z", + "total_providers": 136, + "audit": { + "assemblyai": {"trains_on_data": true, "data_residency": "US", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://www.assemblyai.com/legal/terms-of-service", "basis": "ToS Section 4.3 grants AssemblyAI license to use Customer Data to train models; opt-out via model improvement program; ZDR available for streaming when opted out.", "confidence": "high", "tier_dependent": true, "notes": "Default trains on customer audio per ToS; opt-out and ZDR available. EU processing optional.", "retrieved": "2026-05-06"}, + "aws-polly": {"trains_on_data": true, "data_residency": "multi", "retention_days": 30, "local": false, "e2ee": false, "citation_url": "https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_ai-opt-out.html", "basis": "AWS lists Amazon Polly among AI services that may store and use customer content for service improvement by default unless an AI services opt-out policy is applied.", "confidence": "high", "tier_dependent": false, "notes": "Default opt-in; opt-out via AWS Organizations.", "retrieved": "2026-05-06"}, + "cartesia": {"trains_on_data": true, "data_residency": "US", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://cartesia.ai/legal/privacy.html", "basis": "Cartesia uses Content to train and enhance models by default; user can request opt-out via form; enterprise tier offers custom retention and EU residency.", "confidence": "medium", "tier_dependent": true, "notes": "Sonic deployable on-device for enterprise.", "retrieved": "2026-05-06"}, + "deepgram": {"trains_on_data": false, "data_residency": "multi", "retention_days": 0, "local": false, "e2ee": false, "citation_url": "https://developers.deepgram.com/docs/the-deepgram-model-improvement-partnership-program", "basis": "Training only via opt-in Model Improvement Partnership Program; voice data not stored by default; EU endpoint at api.eu.deepgram.com available.", "confidence": "high", "tier_dependent": false, "notes": "Self-hosted/on-prem available. SOC 2 Type II, HIPAA, GDPR.", "retrieved": "2026-05-06"}, + "elevenlabs": {"trains_on_data": true, "data_residency": "US", "retention_days": 1095, "local": false, "e2ee": false, "citation_url": "https://elevenlabs.io/privacy-policy", "basis": "Free/Growth tiers train by default with manual opt-out; Enterprise does not train by default; voice data retained up to 3 years.", "confidence": "high", "tier_dependent": true, "notes": "Zero Retention Mode is Enterprise-only and excludes voice cloning.", "retrieved": "2026-05-06"}, + "inworld": {"trains_on_data": true, "data_residency": "US", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://inworld.ai/privacy", "basis": "Privacy Notice R&D section: information used to develop products and train AI models; enterprise customer data governed by separate agreements.", "confidence": "medium", "tier_dependent": true, "notes": "On-prem available for enterprise; trust center advertises ZDR for enterprise.", "retrieved": "2026-05-06"}, + "playht": {"trains_on_data": false, "data_residency": "US", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://play.ht/terms/", "basis": "ToS: 'No Training of AI Models on Your Submitted Content'; aggregated/de-identified usage metrics may be used.", "confidence": "high", "tier_dependent": false, "notes": "On-prem deployment available.", "retrieved": "2026-05-06"}, + "agentrouter": {"trains_on_data": true, "data_residency": "unknown", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://agentrouter.org/", "basis": "Free Chinese 'public welfare' aggregator for Claude Code, Codex, Gemini CLI; no locatable English privacy/data-handling commitments.", "confidence": "low", "tier_dependent": false, "notes": "Could not locate authoritative policy.", "retrieved": "2026-05-06"}, + "ai21": {"trains_on_data": false, "data_residency": "unknown", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://www.ai21.com/terms-policies/terms-of-use/", "basis": "AI21 ToU: AI21 will not train its Models on Customer Content unless agreed otherwise; may use to improve technology.", "confidence": "high", "tier_dependent": false, "notes": "Israel-based; SOC 2 / ISO 27001. No explicit retention period.", "retrieved": "2026-05-06"}, + "aimlapi": {"trains_on_data": true, "data_residency": "multi", "retention_days": 365, "local": false, "e2ee": false, "citation_url": "https://aimlapi.com/privacy-policy", "basis": "AIMLAPI privacy policy is silent on whether prompts/completions are used for upstream training and silent on per-upstream guarantees.", "confidence": "low", "tier_dependent": true, "notes": "Conservative aggregator default; Estonia entity AIMLAPI OÜ.", "retrieved": "2026-05-06"}, + "alibaba": {"trains_on_data": false, "data_residency": "multi", "retention_days": 30, "local": false, "e2ee": false, "citation_url": "https://www.alibabacloud.com/help/en/model-studio/faq-about-alibaba-cloud-model-studio", "basis": "Model Studio FAQ: Alibaba Cloud will never use your data for model training; direct API calls do not save conversation data, only desensitized call status logs.", "confidence": "high", "tier_dependent": true, "notes": "International alibabacloud.com Model Studio. Mainland aliyun.com variant would be CN-resident.", "retrieved": "2026-05-06"}, + "alicode": {"trains_on_data": false, "data_residency": "CN", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://help.aliyun.com/zh/pai/user-guide/tongyi-lingma", "basis": "Aliyun docs (zh): Tongyi Lingma observes privacy protection principles and will not store code data.", "confidence": "medium", "tier_dependent": false, "notes": "Mainland Tongyi Lingma. Cloud completion still sends code for inference.", "retrieved": "2026-05-06"}, + "alicode-intl": {"trains_on_data": false, "data_residency": "multi", "retention_days": 30, "local": false, "e2ee": false, "citation_url": "https://qwenlm.github.io/qwen-code-docs/en/users/support/tos-privacy/", "basis": "Qwen Code (international Lingma) docs reference Alibaba Cloud Model Studio backbone, which states no training on customer data.", "confidence": "low", "tier_dependent": true, "notes": "Auth method (OAuth vs Coding Plan vs API Key) affects governing policy.", "retrieved": "2026-05-06"}, + "amazon-q": {"trains_on_data": true, "data_residency": "multi", "retention_days": 30, "local": false, "e2ee": false, "citation_url": "https://aws.amazon.com/q/developer/faqs/", "basis": "Q Developer Pro and Q Business do not use customer content for training; Q Developer Free Tier may use content for service improvement unless opted out.", "confidence": "high", "tier_dependent": true, "notes": "Conservative reflects Free Tier; Pro/Business opt out by default.", "retrieved": "2026-05-06"}, + "antigravity": {"trains_on_data": true, "data_residency": "US", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://discuss.ai.google.dev/t/data-privacy-for-commercial-use-how-to-access-antigravity-with-full-protections/132828", "basis": "Antigravity Additional Terms: Free/Pro/Ultra (personal Gmail) interactions used for training by default; opt-out only via Workspace/GCP enterprise paths.", "confidence": "medium", "tier_dependent": true, "notes": "FLAG: Antigravity is a GOOGLE product (antigravity.google), not Chinese. Inventory category may be wrong.", "retrieved": "2026-05-06"}, + "bailian-coding-plan": {"trains_on_data": false, "data_residency": "SG", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://www.alibabacloud.com/help/en/model-studio/token-plan-overview", "basis": "Bailian Token Plan Team Edition: conversation data not used for model training; supports only Singapore region with global deployment.", "confidence": "high", "tier_dependent": true, "notes": "Cross-border inference disclosed.", "retrieved": "2026-05-06"}, + "baseten": {"trains_on_data": false, "data_residency": "multi", "retention_days": 0, "local": false, "e2ee": false, "citation_url": "https://www.baseten.co/trust/", "basis": "Trust Center: by default never stores model inputs, outputs, or weights; multi-region with region-locked, single-tenant, self-hosted options.", "confidence": "high", "tier_dependent": true, "notes": "Enterprise can choose region-locked / single-tenant / self-hosted.", "retrieved": "2026-05-06"}, + "blackbox": {"trains_on_data": false, "data_residency": "US", "retention_days": 0, "local": false, "e2ee": false, "citation_url": "https://www.blackbox.ai/security", "basis": "Enterprise Security: training opt-out is the default on every plan; Pro+ workspaces run ZDR by default; per-request ZDR via zdr=true.", "confidence": "medium", "tier_dependent": true, "notes": "Free tier may retain/train.", "retrieved": "2026-05-06"}, + "blackbox-web": {"trains_on_data": true, "data_residency": "US", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://www.blackbox.ai/privacy-policy", "basis": "Consumer privacy policy implies Free tier code is stored and may be trained on; Pro consumer tier flips to ZDR/no-training. Toggle exists in account settings.", "confidence": "medium", "tier_dependent": true, "notes": "Retention not explicitly stated for free tier.", "retrieved": "2026-05-06"}, + "bytez": {"trains_on_data": true, "data_residency": "US", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://bytez.com/", "basis": "Bytez is a US-based model gateway/aggregator; no prominent public privacy or no-train commitment located.", "confidence": "low", "tier_dependent": false, "notes": "FLAG: Bytez is US-based, not Chinese. Routes to underlying providers.", "retrieved": "2026-05-06"}, + "cablyai": {"trains_on_data": true, "data_residency": "unknown", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://github.com/CablyAI", "basis": "Free aggregator with no published privacy policy or terms locatable.", "confidence": "low", "tier_dependent": false, "notes": "Could not locate authoritative policy.", "retrieved": "2026-05-06"}, + "cerebras": {"trains_on_data": false, "data_residency": "US", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://www.cerebras.ai/cloud", "basis": "Cerebras Cloud: data, models, outputs never stored, logged, or reused; processed only during training/inference; no access without authorization.", "confidence": "high", "tier_dependent": false, "notes": "Six North American data centers.", "retrieved": "2026-05-06"}, + "chatgpt-web": {"trains_on_data": true, "data_residency": "multi", "retention_days": 30, "local": false, "e2ee": false, "citation_url": "https://help.openai.com/en/articles/8983130-what-if-i-want-to-keep-my-history-on-but-disable-model-training", "basis": "ChatGPT consumer (Free/Plus/Pro) trains by default; users must toggle off 'Improve the model for everyone' under Settings > Data Controls; temporary/deleted chats retained ~30 days for abuse monitoring.", "confidence": "high", "tier_dependent": true, "notes": "Override mechanism: Settings > Data Controls > 'Improve the model for everyone'.", "retrieved": "2026-05-06"}, + "chutes": {"trains_on_data": false, "data_residency": "multi", "retention_days": 0, "local": false, "e2ee": true, "citation_url": "https://chutes.ai/news/confidential-compute-for-ai-inference-how-chutes-delivers-verifiable-privacy-with-trusted-execution-environments", "basis": "Bittensor Subnet 64 decentralized compute with TEE (Intel TDX + NVIDIA confidential compute), hardware attestation, encrypted CPU-GPU channel; privacy policy says no logging of API request/response content.", "confidence": "high", "tier_dependent": true, "notes": "FLAG: Chutes is decentralized (Bittensor), founded by Jon Durbin (US). Not all chutes have TEE.", "retrieved": "2026-05-06"}, + "clarifai": {"trains_on_data": false, "data_residency": "US", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://docs.clarifai.com/resources/privacy-security/", "basis": "Clarifai docs: 'Your Data is Not Used for Training' unless explicit opt-in; SOC 2 Type 2; customer-controlled retention.", "confidence": "high", "tier_dependent": false, "notes": "FLAG: Clarifai is US-based, not Chinese.", "retrieved": "2026-05-06"}, + "claude": {"trains_on_data": false, "data_residency": "multi", "retention_days": 30, "local": false, "e2ee": false, "citation_url": "https://platform.claude.com/docs/en/build-with-claude/api-and-data-retention", "basis": "Anthropic Commercial Terms and API data-retention docs: customer prompts/responses are not used for model training without express permission; default API log retention reduced to 7 days in Sep 2025; ZDR available for qualifying enterprise.", "confidence": "high", "tier_dependent": true, "notes": "ZDR enterprise; HIPAA BAA; EU residency available via contract.", "retrieved": "2026-05-06"}, + "cline": {"trains_on_data": false, "data_residency": "multi", "retention_days": 0, "local": false, "e2ee": false, "citation_url": "https://docs.cline.bot/more-info/telemetry", "basis": "Cline is BYOK VS Code extension; prompts/code go to user-configured provider; Cline's anonymous telemetry captures no token content, no code, no prompts; can be disabled.", "confidence": "medium", "tier_dependent": false, "notes": "Effective residency/retention/training depend on user's chosen upstream provider.", "retrieved": "2026-05-06"}, + "cloudflare-ai": {"trains_on_data": false, "data_residency": "multi", "retention_days": 0, "local": false, "e2ee": false, "citation_url": "https://developers.cloudflare.com/workers-ai/platform/data-usage/", "basis": "Cloudflare does not use customer inputs, outputs, embeddings, or training data on Workers AI to train any models without explicit consent.", "confidence": "high", "tier_dependent": false, "notes": "Inference is stateless.", "retrieved": "2026-05-06"}, + "codestral": {"trains_on_data": false, "data_residency": "FR", "retention_days": 30, "local": false, "e2ee": false, "citation_url": "https://legal.mistral.ai/terms/privacy-policy", "basis": "Mistral Privacy Policy: API inputs/outputs retained 30 rolling days for abuse monitoring; not used for training on paid plans by default; ZDR available on request.", "confidence": "high", "tier_dependent": true, "notes": "Free Experiment plan and free Le Chat opted-in to training; paid API opted-out.", "retrieved": "2026-05-06"}, + "cohere": {"trains_on_data": true, "data_residency": "multi", "retention_days": 30, "local": false, "e2ee": false, "citation_url": "https://cohere.com/data-usage-policy", "basis": "SaaS logs auto-deleted after 30 days; 'Allow prompt and generation use for training' toggle is ON by default; private/third-party-cloud deployments are not accessed by Cohere.", "confidence": "high", "tier_dependent": true, "notes": "Conservative: SaaS default toggle is ON. ZDR/private deployments available.", "retrieved": "2026-05-06"}, + "crof": {"trains_on_data": false, "data_residency": "US", "retention_days": 0, "local": false, "e2ee": false, "citation_url": "https://ai.nahcrof.com/privacy", "basis": "CrofAI explicitly: ZDR; prompts/responses not stored, logged, or retained; not used for AI training.", "confidence": "high", "tier_dependent": false, "notes": "Account info purged within 30 days of deletion.", "retrieved": "2026-05-06"}, + "cursor": {"trains_on_data": true, "data_residency": "US", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://cursor.com/data-use", "basis": "With Privacy Mode OFF (default for Free/Pro), Cursor may store and train on prompts, code snippets, telemetry, editor actions; Privacy Mode toggle (Settings > General) enables ZDR.", "confidence": "high", "tier_dependent": true, "notes": "Privacy Mode enforced for Business/Team. Override mechanism exists in settings.", "retrieved": "2026-05-06"}, + "databricks": {"trains_on_data": false, "data_residency": "multi", "retention_days": 30, "local": false, "e2ee": false, "citation_url": "https://docs.databricks.com/aws/en/machine-learning/model-serving/", "basis": "Mosaic AI Model Serving and Foundation Model APIs do not use customer inputs/outputs for training; up to 30 days retention in workspace region for abuse detection.", "confidence": "high", "tier_dependent": false, "notes": "Designated Service governed by Databricks Geos.", "retrieved": "2026-05-06"}, + "datarobot": {"trains_on_data": false, "data_residency": "multi", "retention_days": 30, "local": false, "e2ee": false, "citation_url": "https://www.datarobot.com/privacy/personal-data/", "basis": "SaaS hosted in AWS US and Ireland; only accessed with permission; customer data not used to train shared models.", "confidence": "medium", "tier_dependent": false, "notes": "Self-managed/on-prem available.", "retrieved": "2026-05-06"}, + "deepinfra": {"trains_on_data": false, "data_residency": "US", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://deepinfra.com/terms", "basis": "DeepInfra ToS: 'We will not store, sell or train on your Submissions, unless you explicitly requested a model to be trained or fine-tuned.' Metadata only logged.", "confidence": "high", "tier_dependent": false, "notes": "Submissions may be stored briefly for debugging.", "retrieved": "2026-05-06"}, + "deepseek": {"trains_on_data": true, "data_residency": "CN", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://cdn.deepseek.com/policies/en-US/deepseek-privacy-policy.html", "basis": "DeepSeek Privacy Policy: data used to improve services and train ML models; stored on servers in PRC; retained as long as account exists.", "confidence": "high", "tier_dependent": false, "notes": "Consumer chat opt-out toggle exists; API training stance unclear.", "retrieved": "2026-05-06"}, + "empower": {"trains_on_data": true, "data_residency": "unknown", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://empower.dev/", "basis": "Empower Functions / empower.dev: no locatable authoritative privacy or data-handling policy.", "confidence": "low", "tier_dependent": false, "notes": "Could not locate authoritative policy.", "retrieved": "2026-05-06"}, + "featherless-ai": {"trains_on_data": false, "data_residency": "US", "retention_days": 0, "local": false, "e2ee": false, "citation_url": "https://featherless.ai/privacy", "basis": "Featherless: 'We do not collect or store prompts or completions'; does not log chats, prompts, or completions; no international data transfer.", "confidence": "high", "tier_dependent": false, "notes": "Only account email, payment data, aggregate usage metadata stored.", "retrieved": "2026-05-06"}, + "fenayai": {"trains_on_data": true, "data_residency": "unknown", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://fenayai.com/", "basis": "Could not locate authoritative privacy policy for fenayai.", "confidence": "low", "tier_dependent": true, "notes": "Could not locate authoritative policy.", "retrieved": "2026-05-06"}, + "fireworks": {"trains_on_data": false, "data_residency": "US", "retention_days": 0, "local": false, "e2ee": false, "citation_url": "https://docs.fireworks.ai/guides/security_compliance/data_security", "basis": "Fireworks: ZDR - does not log or store prompt/generation data without explicit user opt-in; does not use prompts/training data/API inputs to train AI models without opt-in.", "confidence": "high", "tier_dependent": true, "notes": "Enterprise tier offers data residency controls and airgapped EKS.", "retrieved": "2026-05-06"}, + "friendliai": {"trains_on_data": true, "data_residency": "unknown", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://friendli.ai/privacypolicy", "basis": "FriendliAI Privacy Policy describes general personal-data handling but does not contain an explicit no-training clause for inference inputs.", "confidence": "low", "tier_dependent": false, "notes": "Could not locate authoritative inference-data clause.", "retrieved": "2026-05-06"}, + "galadriel": {"trains_on_data": false, "data_residency": "multi", "retention_days": 0, "local": false, "e2ee": false, "citation_url": "https://docs.galadriel.com/overview", "basis": "Sentience SDK / Proof of Sentience: verifiable LLM inference inside TEEs on a decentralized network; architecture designed for ephemeral, attested processing rather than central retention.", "confidence": "low", "tier_dependent": false, "notes": "No formal privacy policy located; assessment based on architecture.", "retrieved": "2026-05-06"}, + "gemini-cli": {"trains_on_data": true, "data_residency": "multi", "retention_days": 30, "local": false, "e2ee": false, "citation_url": "https://ai.google.dev/gemini-api/docs/pricing", "basis": "Free tier (Gemini CLI personal/free auth) permits Google to use prompts/responses for product improvement and training; only paid tier excludes training.", "confidence": "medium", "tier_dependent": true, "notes": "Conservative for free auth. Upgrading to paid API key, AI Pro/Ultra, or Vertex removes training.", "retrieved": "2026-05-06"}, + "getgoapi": {"trains_on_data": true, "data_residency": "multi", "retention_days": 365, "local": false, "e2ee": false, "citation_url": "https://getgoapi.com/en/terms", "basis": "GetGoAPI ToS mentions GDPR/CCPA and anonymized logs but is silent on training and upstream contractual restrictions.", "confidence": "low", "tier_dependent": true, "notes": "Chinese aggregator; conservative aggregator default.", "retrieved": "2026-05-06"}, + "gigachat": {"trains_on_data": false, "data_residency": "RU", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://developers.sber.ru/portal/products/gigachat-api", "basis": "Sber GigaChat FAQ (ru): by default we do not store or use queries/responses for fine-tuning; all data stored on servers in RU per 152-FZ.", "confidence": "medium", "tier_dependent": false, "notes": "Russian residency mandatory under 152-FZ.", "retrieved": "2026-05-06"}, + "gitlab": {"trains_on_data": false, "data_residency": "multi", "retention_days": 0, "local": false, "e2ee": false, "citation_url": "https://docs.gitlab.com/user/gitlab_duo/data_usage/", "basis": "GitLab does not train generative AI models; zero-day retention with all sub-processors (Anthropic, Fireworks, AWS Bedrock, Google Vertex); sub-processors contractually prohibited from using customer content.", "confidence": "high", "tier_dependent": false, "notes": "Self-hosted AI gateway available.", "retrieved": "2026-05-06"}, + "gitlab-duo": {"trains_on_data": false, "data_residency": "multi", "retention_days": 0, "local": false, "e2ee": false, "citation_url": "https://docs.gitlab.com/user/gitlab_duo/data_usage/", "basis": "Same as gitlab: zero-day retention with model vendors; sub-processors restricted from training; CEO publicly reiterated no training at any tier.", "confidence": "high", "tier_dependent": false, "notes": "Likely duplicate of gitlab entry.", "retrieved": "2026-05-06"}, + "glhf": {"trains_on_data": true, "data_residency": "multi", "retention_days": 365, "local": false, "e2ee": false, "citation_url": "https://glhf.chat/policies/privacy", "basis": "Synthetic Lab Co. ToS reserves right to use User Content to provide, maintain, develop, and improve Services; no explicit no-training guarantee.", "confidence": "low", "tier_dependent": true, "notes": "Conservative aggregator default.", "retrieved": "2026-05-06"}, + "grok-web": {"trains_on_data": true, "data_residency": "US", "retention_days": 30, "local": false, "e2ee": false, "citation_url": "https://x.ai/legal/privacy-policy", "basis": "xAI consumer ToS/Privacy: user data may be used to train models; opt out via Settings > Data Controls > 'Improve the Model'; private chats/deletions removed within 30 days.", "confidence": "high", "tier_dependent": false, "notes": "X-platform Grok integration uses tweets as training data by default.", "retrieved": "2026-05-06"}, + "groq": {"trains_on_data": false, "data_residency": "US", "retention_days": 30, "local": false, "e2ee": false, "citation_url": "https://console.groq.com/docs/your-data", "basis": "Groq Services Agreement: not permitted to use Inputs/Outputs for training; inference requests not retained by default; abuse/debug logs up to 30 days; ZDR available.", "confidence": "high", "tier_dependent": false, "notes": "ZDR opt-in available in Data Controls.", "retrieved": "2026-05-06"}, + "heroku": {"trains_on_data": false, "data_residency": "US", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://devcenter.heroku.com/categories/heroku-inference", "basis": "Heroku Managed Inference (Salesforce); Salesforce SPARC governs Customer Data; contractually does not use Customer Data for model training; AWS-hosted (US).", "confidence": "medium", "tier_dependent": false, "notes": "Proxies foundation models via Bedrock and direct partners.", "retrieved": "2026-05-06"}, + "huggingface": {"trains_on_data": false, "data_residency": "multi", "retention_days": 30, "local": false, "e2ee": false, "citation_url": "https://huggingface.co/docs/inference-providers/en/security", "basis": "HF: does not store user data for training; does not store request body or response when routing; logs kept for debugging up to 30 days.", "confidence": "high", "tier_dependent": true, "notes": "Inference Providers is an aggregator/router - upstream providers each have their own policies.", "retrieved": "2026-05-06"}, + "hyperbolic": {"trains_on_data": false, "data_residency": "US", "retention_days": 0, "local": false, "e2ee": false, "citation_url": "https://www.hyperbolic.ai/privacy/faq", "basis": "Hyperbolic Privacy: data not stored; immediately discarded after inference; no use, retention, or training of models on user data.", "confidence": "high", "tier_dependent": false, "notes": "Decentralized GPU network.", "retrieved": "2026-05-06"}, + "inference-net": {"trains_on_data": true, "data_residency": "unknown", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://inference.net/privacy", "basis": "Could not locate authoritative statement on inference data training/retention; published policy primarily addresses marketing/contact data.", "confidence": "low", "tier_dependent": false, "notes": "Could not locate authoritative policy on API prompt retention.", "retrieved": "2026-05-06"}, + "kilo-gateway": {"trains_on_data": false, "data_residency": "multi", "retention_days": 30, "local": false, "e2ee": false, "citation_url": "https://kilo.ai/privacy", "basis": "Kilo's hosted gateway proxies to upstream providers each with their own policies; Kilo states it does not retain prompt data.", "confidence": "low", "tier_dependent": true, "notes": "No explicit gateway-level retention/training contract published.", "retrieved": "2026-05-06"}, + "kilocode": {"trains_on_data": false, "data_residency": "unknown", "retention_days": null, "local": true, "e2ee": false, "citation_url": "https://github.com/Kilo-Org/kilocode/blob/main/PRIVACY.md", "basis": "Kilo Code IDE extension runs locally; API keys stored locally; prompts/code sent only to user's chosen AI provider; Kilo does not store or process that data.", "confidence": "high", "tier_dependent": false, "notes": "Local-first IDE extension; data residency depends on configured upstream.", "retrieved": "2026-05-06"}, + "kimi": {"trains_on_data": true, "data_residency": "CN", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://www.kimi.com/user/agreement/userprivacy?version=v2", "basis": "Kimi (Moonshot AI) Privacy Policy: usage information used to improve and develop services, including training and refining ML models.", "confidence": "high", "tier_dependent": false, "notes": "Mainland kimi.com consumer service.", "retrieved": "2026-05-06"}, + "kimi-coding": {"trains_on_data": true, "data_residency": "SG", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://platform.moonshot.ai/docs/agreement/modeluse", "basis": "Moonshot AI Kimi OpenPlatform Terms: may use content to provide, maintain, develop, and improve services; no documented training opt-out for paid API.", "confidence": "medium", "tier_dependent": true, "notes": "MOONSHOT AI PTE. LTD. Singapore controller; data may transit to CN parent infrastructure.", "retrieved": "2026-05-06"}, + "kimi-coding-apikey": {"trains_on_data": true, "data_residency": "SG", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://platform.kimi.ai/docs/agreement/userprivacy", "basis": "Same Moonshot OpenPlatform terms; API key access uses same governing policy; training/improving listed as data use.", "confidence": "medium", "tier_dependent": true, "notes": "Likely overlaps with kimi-coding entry.", "retrieved": "2026-05-06"}, + "kiro": {"trains_on_data": true, "data_residency": "multi", "retention_days": 30, "local": false, "e2ee": false, "citation_url": "https://kiro.dev/docs/privacy-and-security/data-protection/", "basis": "Kiro: may use Free Tier and individual subscriber content for service improvement including model training; enterprise users automatically opted out.", "confidence": "high", "tier_dependent": true, "notes": "Free/individual tier in us-east-1 by default.", "retrieved": "2026-05-06"}, + "lambda-ai": {"trains_on_data": false, "data_residency": "US", "retention_days": 0, "local": false, "e2ee": true, "citation_url": "https://deeptalk.lambda.ai/t/inference-api-privacy/4553", "basis": "Lambda engineers (official forum): does not log or store input prompts or completion results; no use for training; messages encrypted end-to-end and deleted after request completes.", "confidence": "medium", "tier_dependent": false, "notes": "Statement from Lambda staff in developer forum rather than formal ToS.", "retrieved": "2026-05-06"}, + "laozhang": {"trains_on_data": true, "data_residency": "multi", "retention_days": 365, "local": false, "e2ee": false, "citation_url": "https://laozhang.ai/privacyPolicy", "basis": "Self-claim of no model training/no storage in marketing copy, but no contractual binding across upstream providers; privacy policy in Chinese without upstream specifics.", "confidence": "low", "tier_dependent": true, "notes": "Chinese API reseller; conservative aggregator default.", "retrieved": "2026-05-06"}, + "llamagate": {"trains_on_data": true, "data_residency": "unknown", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://llamagate.dev/", "basis": "Landing page exists; no public privacy policy, terms of service, DPA, or data-handling statement located.", "confidence": "low", "tier_dependent": false, "notes": "Could not locate authoritative policy.", "retrieved": "2026-05-06"}, + "longcat": {"trains_on_data": true, "data_residency": "CN", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://longcat.chat/platform/private/", "basis": "Meituan LongCat.AI Platform Service Agreement and Privacy Policy; mainland Meituan service governed by PIPL; specific training/retention terms not enumerated publicly.", "confidence": "low", "tier_dependent": false, "notes": "Conservative default applied for hosted platform.", "retrieved": "2026-05-06"}, + "maritalk": {"trains_on_data": false, "data_residency": "BR", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://www.maritaca.ai/en/termos-e-condi%C3%A7%C3%B5es", "basis": "Maritaca AI ToS: paid API/Local does not use Inputs or data except for billing metrics; user data not used to train models. Free Chat tier inputs may be used for training.", "confidence": "high", "tier_dependent": true, "notes": "Brazilian (Unicamp spin-out).", "retrieved": "2026-05-06"}, + "meta-llama": {"trains_on_data": false, "data_residency": "unknown", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://llama.developer.meta.com/docs/trust/data-commitments", "basis": "Llama API Data Commitments: API inputs/outputs are not used to train or improve models; not used for ads; data stored separately from other Meta product data.", "confidence": "high", "tier_dependent": false, "notes": "Distinct from Meta AI consumer assistant.", "retrieved": "2026-05-06"}, + "minimax": {"trains_on_data": true, "data_residency": "SG", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://platform.minimax.io/protocol/privacy-policy", "basis": "MiniMax international (Nanonoble Pte. Ltd., Singapore); privacy policy permits use of inputs for service operation/improvement; ZDR and disable-training are opt-in settings.", "confidence": "medium", "tier_dependent": true, "notes": "Default trains; enterprise supports VPC and regional residency.", "retrieved": "2026-05-06"}, + "minimax-cn": {"trains_on_data": true, "data_residency": "CN", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://platform.minimaxi.com/audio/doc/privacy-policy.html", "basis": "Mainland minimaxi.com under PRC entity; PIPL applies; Chinese GenAI regs contemplate training on user data with consent provisions.", "confidence": "low", "tier_dependent": true, "notes": "Mainland endpoint; data accessible to Chinese authorities.", "retrieved": "2026-05-06"}, + "mistral": {"trains_on_data": false, "data_residency": "FR", "retention_days": 30, "local": false, "e2ee": false, "citation_url": "https://legal.mistral.ai/terms/privacy-policy", "basis": "Mistral Privacy: Inputs/Outputs kept 30 rolling days for abuse monitoring; paid API users opted-out of training by default; ZDR available.", "confidence": "high", "tier_dependent": true, "notes": "EU/France-hosted by default. Free Experiment plan opted-in to training.", "retrieved": "2026-05-06"}, + "modal": {"trains_on_data": false, "data_residency": "US", "retention_days": 7, "local": false, "e2ee": false, "citation_url": "https://modal.com/docs/guide/security", "basis": "Modal: Inputs/outputs deleted after max 7-day TTL; Modal does not access customer data without permission; not a model provider.", "confidence": "high", "tier_dependent": false, "notes": "Modal is GPU/serverless infra.", "retrieved": "2026-05-06"}, + "moonshot": {"trains_on_data": true, "data_residency": "SG", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://platform.moonshot.ai/docs/agreement/modeluse", "basis": "Moonshot AI Kimi OpenPlatform Terms section 4 (Content): may use content to provide, maintain, develop, and improve services.", "confidence": "medium", "tier_dependent": false, "notes": ".ai is Singapore controller; .cn endpoint would be CN-resident under PIPL.", "retrieved": "2026-05-06"}, + "morph": {"trains_on_data": false, "data_residency": "US", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://www.morphllm.com/privacy", "basis": "Morph: code not used to train models by default except for support/debugging; ZDR tier never stores or trains.", "confidence": "medium", "tier_dependent": true, "notes": "Self-hosted deployment available.", "retrieved": "2026-05-06"}, + "muse-spark-web": {"trains_on_data": true, "data_residency": "US", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://about.fb.com/news/2023/09/privacy-matters-metas-generative-ai-features/", "basis": "Meta AI consumer (best-match interpretation): interactions used to train and improve generative AI models and personalize content/ads (effective Dec 16, 2025); no consumer opt-out for US users.", "confidence": "medium", "tier_dependent": false, "notes": "Provider identity ambiguous - flag for Sam to confirm muse-spark-web mapping.", "retrieved": "2026-05-06"}, + "nanogpt": {"trains_on_data": true, "data_residency": "multi", "retention_days": 0, "local": false, "e2ee": false, "citation_url": "https://nano-gpt.com/privacy", "basis": "Aggregator routing prompts to many providers (OpenAI, Anthropic, Google, DeepSeek, Meta); upstream providers may collect/store under their own retention; NanoGPT itself does not centrally retain content.", "confidence": "medium", "tier_dependent": true, "notes": "Optional E2EE for sync; some models offered via TEE.", "retrieved": "2026-05-06"}, + "nebius": {"trains_on_data": false, "data_residency": "multi", "retention_days": 0, "local": false, "e2ee": false, "citation_url": "https://nebius.com/ai-studio", "basis": "Nebius AI Studio: zero-retention mode where requests/outputs are never stored or reused for training; data centers in Finland, France, US.", "confidence": "high", "tier_dependent": false, "notes": "SOC2 Type II, HIPAA, ISO 27001. HQ Amsterdam.", "retrieved": "2026-05-06"}, + "nlpcloud": {"trains_on_data": false, "data_residency": "multi", "retention_days": 0, "local": false, "e2ee": false, "citation_url": "https://nlpcloud.com/privacy.html", "basis": "NLPCloud: 'we DO NOT keep any data sent to our API'; cannot see your data; do not store it; do not use it to train models. HIPAA/GDPR/CCPA compliant.", "confidence": "high", "tier_dependent": false, "notes": "On-premise/edge deployment available. French HQ; servers globally.", "retrieved": "2026-05-06"}, + "nous-research": {"trains_on_data": true, "data_residency": "unknown", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://portal.nousresearch.com/terms", "basis": "Nous Portal Terms reference privacy policy but do not publicly state a no-training commitment for Forge/Hermes API prompts.", "confidence": "low", "tier_dependent": false, "notes": "Nous is also a model trainer (Hermes/Psyche), increasing risk.", "retrieved": "2026-05-06"}, + "novita": {"trains_on_data": false, "data_residency": "multi", "retention_days": 365, "local": false, "e2ee": false, "citation_url": "https://novita.ai/legal/privacy-policy", "basis": "Novita: 'The Personal Information will not be used for model training'; API/customer-content terms governed by separate customer agreement.", "confidence": "medium", "tier_dependent": true, "notes": "Cannot verify guarantee binds across all routed upstreams.", "retrieved": "2026-05-06"}, + "nscale": {"trains_on_data": false, "data_residency": "multi", "retention_days": 0, "local": false, "e2ee": false, "citation_url": "https://www.nscale.com/blog/introducing-nscale-serverless-inference-scalable-ai-without-infrastructure-hassles", "basis": "Nscale: serverless inference does not log or train on request or response content.", "confidence": "high", "tier_dependent": false, "notes": "Sovereign EU cloud; UK/Norway-domiciled.", "retrieved": "2026-05-06"}, + "nvidia": {"trains_on_data": false, "data_residency": "US", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://www.nvidia.com/en-us/ai-data-science/products/nim-microservices/", "basis": "NVIDIA NIM hosted endpoints: 'Ensure your data isn't used for model training'; hosted on DGX Cloud (US).", "confidence": "high", "tier_dependent": false, "notes": "Self-hosted NIM containers give customer full residency control.", "retrieved": "2026-05-06"}, + "oci": {"trains_on_data": false, "data_residency": "multi", "retention_days": 0, "local": false, "e2ee": false, "citation_url": "https://docs.oracle.com/en-us/iaas/Content/generative-ai/data-handling.htm", "basis": "OCI Generative AI: does not retain customer prompts or inputs used for inference; fine-tuning data not retained beyond job; not used to improve general models.", "confidence": "high", "tier_dependent": false, "notes": "Dedicated AI clusters per tenancy.", "retrieved": "2026-05-06"}, + "ollama-cloud": {"trains_on_data": false, "data_residency": "US", "retention_days": 0, "local": false, "e2ee": false, "citation_url": "https://ollama.com/privacy", "basis": "Ollama Cloud: cloud-hosted models processed transiently; content not stored beyond fulfilling the request; inputs/outputs not used to train AI models.", "confidence": "high", "tier_dependent": false, "notes": "Self-hostable; the local Ollama variant is covered by a separate provider entry.", "retrieved": "2026-05-06"}, + "opencode-go": {"trains_on_data": false, "data_residency": "multi", "retention_days": 30, "local": false, "e2ee": false, "citation_url": "https://opencode.ai/docs/go/", "basis": "OpenCode Go: $10/mo subscription gateway by Anomaly/SST team for open-source coding models; hosted across US/EU/Singapore; inherits Zen's zero-retention/no-training stance.", "confidence": "medium", "tier_dependent": false, "notes": "Same operator as OpenCode Zen.", "retrieved": "2026-05-06"}, + "opencode-zen": {"trains_on_data": false, "data_residency": "US", "retention_days": 30, "local": false, "e2ee": false, "citation_url": "https://opencode.ai/docs/zen/", "basis": "OpenCode Zen: US-hosted; providers follow zero-retention policy and do not use data for training; limited exceptions for free/beta models.", "confidence": "high", "tier_dependent": true, "notes": "Free/beta models may collect data for improvement.", "retrieved": "2026-05-06"}, + "openrouter": {"trains_on_data": false, "data_residency": "multi", "retention_days": 0, "local": false, "e2ee": false, "citation_url": "https://openrouter.ai/docs/features/privacy-and-logging", "basis": "OpenRouter: zero logging of prompts/completions by default; opt-in only training (1% discount); ZDR routing toggle restricts to non-training, non-retaining providers.", "confidence": "high", "tier_dependent": true, "notes": "ZDR endpoint list at /api/v1/endpoints/zdr. Enabling logging grants OpenRouter broad commercial-use rights.", "retrieved": "2026-05-06"}, + "ovhcloud": {"trains_on_data": false, "data_residency": "FR", "retention_days": 0, "local": false, "e2ee": false, "citation_url": "https://www.ovhcloud.com/en/public-cloud/ai-endpoints/", "basis": "OVHcloud AI Endpoints: 'Your data will never be used to train or improve our AI models'; zero data retention; data only kept for billing.", "confidence": "high", "tier_dependent": false, "notes": "GDPR-aligned EU sovereign cloud.", "retrieved": "2026-05-06"}, + "perplexity": {"trains_on_data": false, "data_residency": "US", "retention_days": 0, "local": false, "e2ee": false, "citation_url": "https://www.perplexity.ai/hub/legal/perplexity-api-terms-of-service", "basis": "Perplexity API ToS Section 2.3.3: shall not use Customer Content to train, retrain, fine-tune, or improve any generative AI models; ZDR documented for Sonar API.", "confidence": "high", "tier_dependent": false, "notes": "Search Services Addendum carves out search-product data.", "retrieved": "2026-05-06"}, + "perplexity-web": {"trains_on_data": true, "data_residency": "US", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://www.perplexity.ai/help-center/en/articles/11564572-data-collection-at-perplexity", "basis": "Free/Pro/Max consumer users: AI Data Retention enabled by default; queries may be used to train models unless 'AI Data Usage' toggle disabled in Account Settings > Preferences.", "confidence": "high", "tier_dependent": true, "notes": "Override: Settings > AI Data Usage. Enterprise plans never train.", "retrieved": "2026-05-06"}, + "petals": {"trains_on_data": true, "data_residency": "multi", "retention_days": 0, "local": false, "e2ee": false, "citation_url": "https://github.com/bigscience-workshop/petals", "basis": "Petals public swarm: 'Please do not use the public swarm to process sensitive data... peers serving model layers can recover input data and model outputs or modify them.'", "confidence": "low", "tier_dependent": false, "notes": "Decentralized BitTorrent-style swarm; volunteer GPU nodes globally.", "retrieved": "2026-05-06"}, + "piapi": {"trains_on_data": true, "data_residency": "unknown", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://piapi.ai/", "basis": "Could not locate authoritative privacy policy detailing training/retention.", "confidence": "low", "tier_dependent": true, "notes": "Image-model aggregator; conservative default.", "retrieved": "2026-05-06"}, + "poe": {"trains_on_data": true, "data_residency": "multi", "retention_days": 365, "local": false, "e2ee": false, "citation_url": "https://poe.com/privacy", "basis": "Poe: chats shared with AI providers and third-party developer bots; 'Developers that create bots... may view and store your chats on their servers to train their models.'", "confidence": "medium", "tier_dependent": true, "notes": "Per-bot privacy-shield model; aggregator-level guarantee does NOT extend across all bots.", "retrieved": "2026-05-06"}, + "pollinations": {"trains_on_data": true, "data_residency": "DE", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://pollinations.ai/", "basis": "Free public open-source generative AI platform; image API has 'private' boolean defaulting to false; no formal privacy policy page returns content. Berlin-based operator.", "confidence": "low", "tier_dependent": false, "notes": "Public-by-default; no authoritative formal policy.", "retrieved": "2026-05-06"}, + "predibase": {"trains_on_data": false, "data_residency": "US", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://docs.predibase.com/resources/faq", "basis": "Predibase FAQ: 'Your data will never be used to train models, unless you explicitly grant us permission'; VPC deployment available.", "confidence": "medium", "tier_dependent": true, "notes": "Default SaaS US-hosted; VPC tier gives full control.", "retrieved": "2026-05-06"}, + "publicai": {"trains_on_data": false, "data_residency": "multi", "retention_days": 0, "local": false, "e2ee": false, "citation_url": "https://publicai.network/libraries", "basis": "Public AI Network: 'Public AI does not store patrons' conversations or generated content on its own platform; each linked AI service handles data according to its own privacy policy.'", "confidence": "low", "tier_dependent": false, "notes": "Nonprofit inference utility; no formal privacy policy URL beyond library/FAQ.", "retrieved": "2026-05-06"}, + "puter": {"trains_on_data": true, "data_residency": "unknown", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://puter.com/", "basis": "Puter markets 'privacy-first personal cloud' but ToS/Privacy pages were not retrievable; no authoritative statement on AI input training, retention, or residency for hosted services.", "confidence": "low", "tier_dependent": false, "notes": "Brokers AI calls through underlying providers (OpenAI, Anthropic, etc.).", "retrieved": "2026-05-06"}, + "qianfan": {"trains_on_data": true, "data_residency": "CN", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://cloud.baidu.com/doc/WENXINWORKSHOP/", "basis": "Baidu Qianfan/ERNIE platform; no clear English-language data privacy/compliance documentation; PIPL applies.", "confidence": "low", "tier_dependent": false, "notes": "Conservative default. Mainland China residency.", "retrieved": "2026-05-06"}, + "qoder": {"trains_on_data": true, "data_residency": "unknown", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://qoder.com/privacy-policy", "basis": "BRIGHT ZENITH PRIVATE LIMITED (Singapore); stores feedback including thumbs-up/down conversations; Privacy Mode available; with custom models, Qoder's privacy mode does not apply.", "confidence": "low", "tier_dependent": true, "notes": "Singapore entity; widely associated with Alibaba.", "retrieved": "2026-05-06"}, + "qwen": {"trains_on_data": true, "data_residency": "CN", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://chat.qwen.ai/legal-agreement/privacy-policy", "basis": "Qwen Studio (chat.qwen.ai) consumer chat product; operated by Alibaba; mainland-tied service subject to PIPL; no explicit no-train commitment for consumer chat.", "confidence": "low", "tier_dependent": false, "notes": "Distinct from Alibaba Cloud DashScope/Model Studio API.", "retrieved": "2026-05-06"}, + "reka": {"trains_on_data": false, "data_residency": "US", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://reka.ai/legal/privacy-policy", "basis": "Reka: free tier (Reka Hub or promotional credits) content may be used to train; paid API requests NOT used for training unless user opts in.", "confidence": "high", "tier_dependent": true, "notes": "Free tier trains. Conservative reading for paid API: trains_on_data=false.", "retrieved": "2026-05-06"}, + "sambanova": {"trains_on_data": false, "data_residency": "multi", "retention_days": 30, "local": false, "e2ee": false, "citation_url": "https://sambanova.ai/cloud-end-user-license-agreement", "basis": "SambaCloud: 'never sees or collects any of your data or user prompts'; sovereign AI partners deploy in multiple regions.", "confidence": "medium", "tier_dependent": false, "notes": "Free/developer-tier policy ambiguous in places.", "retrieved": "2026-05-06"}, + "sap": {"trains_on_data": false, "data_residency": "multi", "retention_days": 0, "local": false, "e2ee": false, "citation_url": "https://pages.community.sap.com/topics/generative-ai-hub", "basis": "SAP generative AI hub: customer data not shared with partner FM providers for training; data isolated per tenant; enterprise LLMs do not store API input or output.", "confidence": "high", "tier_dependent": false, "notes": "BTP/AI Core with EU and other regional deployments.", "retrieved": "2026-05-06"}, + "scaleway": {"trains_on_data": false, "data_residency": "FR", "retention_days": 0, "local": false, "e2ee": false, "citation_url": "https://www.scaleway.com/en/docs/generative-apis/reference-content/data-privacy/", "basis": "Scaleway Generative APIs: 'By default we apply a Zero Data Retention Policy'; do not collect, read, reuse, or analyze content of inputs/outputs.", "confidence": "high", "tier_dependent": false, "notes": "Models hosted in Paris; aggregated/anonymized usage stats up to 6 months.", "retrieved": "2026-05-06"}, + "siliconflow": {"trains_on_data": false, "data_residency": "CN", "retention_days": 0, "local": false, "e2ee": false, "citation_url": "https://docs.siliconflow.cn/en/legals/privacy-policy", "basis": "SiliconFlow: 'We do not collect or store the interaction data between you and the open-source models...' Mainland CN entity for .cn; Singapore PTE LTD for .com.", "confidence": "medium", "tier_dependent": false, "notes": "Two entities (.cn mainland, .com Singapore); same no-store posture.", "retrieved": "2026-05-06"}, + "snowflake": {"trains_on_data": false, "data_residency": "multi", "retention_days": 0, "local": false, "e2ee": false, "citation_url": "https://www.snowflake.com/en/legal/compliance/snowflake-ai-trust-and-safety/", "basis": "Snowflake: does not use Customer Data (including inputs/outputs of AI Features) to train any model made available to other customers; isolated per customer.", "confidence": "high", "tier_dependent": false, "notes": "Cortex respects account region/data residency.", "retrieved": "2026-05-06"}, + "synthetic": {"trains_on_data": false, "data_residency": "multi", "retention_days": 14, "local": false, "e2ee": false, "citation_url": "https://docs.litellm.ai/docs/providers/synthetic", "basis": "Synthetic.new: 'Privacy-First: Data never used for training'; secure datacenters in US and EU; automatic deletion of API data within 14 days.", "confidence": "high", "tier_dependent": false, "notes": "Independent platform offering open-source models (Llama, DeepSeek, Kimi, Qwen, GLM).", "retrieved": "2026-05-06"}, + "thebai": {"trains_on_data": true, "data_residency": "unknown", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://security-profiles.nudgesecurity.com/app/theb-ai", "basis": "TheB.AI: all-in-one aggregator; long-term memory features; no explicit no-training/ZDR contractual guarantee in publicly accessible documentation.", "confidence": "low", "tier_dependent": false, "notes": "Long-term memory implies retention by default.", "retrieved": "2026-05-06"}, + "together": {"trains_on_data": false, "data_residency": "US", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://www.together.ai/terms-of-service", "basis": "Together: users can enable ZDR in Privacy & Security settings; default account behavior may include training/retention until ZDR enabled.", "confidence": "medium", "tier_dependent": true, "notes": "Conservative reading: training possible by default until user toggles ZDR.", "retrieved": "2026-05-06"}, + "upstage": {"trains_on_data": false, "data_residency": "KR", "retention_days": 90, "local": false, "e2ee": false, "citation_url": "https://www.upstage.ai/terms-policie/update-august-1-2024", "basis": "Upstage: API input/output not stored, not used for AI model training; Console Playground data may be used for R&D.", "confidence": "high", "tier_dependent": true, "notes": "Korean PIPA; access logs retained 3 months under Korean law.", "retrieved": "2026-05-06"}, + "v0-vercel": {"trains_on_data": true, "data_residency": "US", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://v0.app/policy", "basis": "Vercel AI Product Terms: Hobby and Pro plans default to allowing inputs/outputs for Model Training and AI business partners (de-identified) unless user opts out via Team Settings.", "confidence": "high", "tier_dependent": true, "notes": "Enterprise contractually no training. Public chats/templates may be visible.", "retrieved": "2026-05-06"}, + "venice": {"trains_on_data": false, "data_residency": "multi", "retention_days": 0, "local": false, "e2ee": false, "citation_url": "https://venice.ai/privacy", "basis": "Venice: all inference private by default; no training, no logging; conversation history stored only in user's local browser.", "confidence": "high", "tier_dependent": true, "notes": "TEE and E2EE modes are Venice Pro-only. For Anonymous mode, upstream may store under its own policy.", "retrieved": "2026-05-06"}, + "vercel-ai-gateway": {"trains_on_data": false, "data_residency": "multi", "retention_days": 0, "local": false, "e2ee": false, "citation_url": "https://vercel.com/docs/ai-gateway/capabilities/zdr", "basis": "Vercel AI Gateway: gateway uses ZDR by default; provider-level ZDR/no-training enforcement opt-in for Pro/Enterprise.", "confidence": "high", "tier_dependent": true, "notes": "Without enterprise ZDR, requests may route to providers that retain or train. BYOK not covered by Vercel-negotiated ZDR.", "retrieved": "2026-05-06"}, + "volcengine": {"trains_on_data": true, "data_residency": "CN", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://www.volcengine.com/docs/82379", "basis": "Volcano Engine Ark mainland service (ByteDance); endpoint indicates Beijing residency; PIPL applies; no public global no-train commitment found.", "confidence": "low", "tier_dependent": true, "notes": "Data return / 数据回流 is opt-in. Enterprise/HYOK options may differ.", "retrieved": "2026-05-06"}, + "wandb": {"trains_on_data": false, "data_residency": "US", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://wandb.ai/site/privacy/", "basis": "W&B Inference powered by CoreWeave hosting open-source models; W&B MSA prohibits use of Customer Data outside service provision; W&B does not train foundation models on customer data.", "confidence": "medium", "tier_dependent": false, "notes": "No explicit Inference data-handling policy stating retention period.", "retrieved": "2026-05-06"}, + "watsonx": {"trains_on_data": false, "data_residency": "multi", "retention_days": 30, "local": false, "e2ee": false, "citation_url": "https://dataplatform.cloud.ibm.com/docs/content/wsj/getting-started/overview-wx.html", "basis": "IBM watsonx.ai: customer data and models are private to the customer account, accessible only to the customer, and are not used by IBM or any other party.", "confidence": "high", "tier_dependent": false, "notes": "Available across multiple IBM Cloud regions with data residency controls.", "retrieved": "2026-05-06"}, + "xai": {"trains_on_data": false, "data_residency": "US", "retention_days": 30, "local": false, "e2ee": false, "citation_url": "https://x.ai/legal/terms-of-service-enterprise", "basis": "xAI Enterprise Terms: shall not use User Content (API inputs/outputs) for training; User Content auto-deleted within 30 days unless legally required or flagged; ZDR for enterprise.", "confidence": "high", "tier_dependent": true, "notes": "Free credits in exchange for training-permission may be offered.", "retrieved": "2026-05-06"}, + "xiaomi-mimo": {"trains_on_data": false, "data_residency": "CN", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://www.aibase.com/news/25997", "basis": "Xiaomi public commitment (Nov 2025): 'never using user data to train the AI system' for MiMo-based mobile-agent product; real-time commands used only for execution.", "confidence": "medium", "tier_dependent": false, "notes": "MiMo open-weights MIT - local self-hosted variant covered separately. PIPL applies for Xiaomi cloud services.", "retrieved": "2026-05-06"}, + "zai": {"trains_on_data": true, "data_residency": "multi", "retention_days": 30, "local": false, "e2ee": false, "citation_url": "https://docs.z.ai/legal-agreement/privacy-policy", "basis": "Z.ai (Zhipu) Privacy: 'We may obtain publicly available information via the Internet sources in order to train our models'; retains data while account active and to improve services; ChinaTalk: inference abroad, training in China.", "confidence": "medium", "tier_dependent": false, "notes": "Dual residency: Z.ai inference overseas; training in China. zhipuai.cn is mainland CN.", "retrieved": "2026-05-06"}, + "jina-ai": {"trains_on_data": false, "data_residency": "DE", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://jina.ai/embeddings/", "basis": "Jina AI: 'We never use your API requests, inputs, or outputs to train our embedding, reranker, or any other models.' All infrastructure within EU jurisdiction.", "confidence": "high", "tier_dependent": false, "notes": "Berlin HQ; Jina AI by Elastic. Self-deployable models also available.", "retrieved": "2026-05-06"}, + "voyage-ai": {"trains_on_data": true, "data_residency": "US", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://www.voyageai.com/tos", "basis": "ToS Section 3: customer grants Voyage AI license to use Customer Content to train, improve, and develop Service unless opted out; opt-out via dashboard yields zero-day retention.", "confidence": "high", "tier_dependent": false, "notes": "Default ToS grants training license; opt-out path available. Acquired by MongoDB Feb 2024.", "retrieved": "2026-05-06"}, + "black-forest-labs": {"trains_on_data": true, "data_residency": "DE", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://blackforestlabs.ai/terms-of-service/", "basis": "BFL ToS grants nonexclusive perpetual license to use Inputs/Outputs to train and improve technologies; no documented opt-out for hosted API/Playground.", "confidence": "high", "tier_dependent": false, "notes": "Open-weight FLUX [dev] models can be self-hosted (separate audit).", "retrieved": "2026-05-06"}, + "fal-ai": {"trains_on_data": true, "data_residency": "US", "retention_days": 7, "local": false, "e2ee": false, "citation_url": "https://fal.ai/privacy", "basis": "fal.ai grants rights to Usage Data to design, develop, and offer products and AI models; enterprise marketing: 'We never train our LLMs on our enterprise customers' data' implying training may occur on non-enterprise data.", "confidence": "medium", "tier_dependent": true, "notes": "Default media retention ~7 days on CDN, configurable via header.", "retrieved": "2026-05-06"}, + "nanobanana": {"trains_on_data": true, "data_residency": "unknown", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://googlenanobanana.com/privacy", "basis": "'nano-banana' is Google Gemini 2.5 Flash Image accessed via many third-party wrappers with conflicting policies; no canonical single Nanobanana provider exists.", "confidence": "low", "tier_dependent": false, "notes": "FLAG: provider entry is genuinely ambiguous - multiple wrappers. Direct Google API governed by Google AI/Gemini API terms.", "retrieved": "2026-05-06"}, + "recraft": {"trains_on_data": true, "data_residency": "US", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://www.recraft.ai/terms", "basis": "Recraft Terms grant perpetual license to use Inputs/Assets to provide and improve Services; Free tier assets are public and Recraft-owned; Paid tier private; API explicit no-training.", "confidence": "high", "tier_dependent": true, "notes": "Strong tier dependence: Free=public+trainable; Paid=private; API=no-training.", "retrieved": "2026-05-06"}, + "stability-ai": {"trains_on_data": true, "data_residency": "US", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://stability.ai/privacypolicy", "basis": "Stability: 'When we use your Inputs and Outputs to train our models, you can opt-out'; per-product opt-out toggles documented (DreamStudio, Stable Assistant, Platform API).", "confidence": "high", "tier_dependent": false, "notes": "Trains by default; explicit opt-out path.", "retrieved": "2026-05-06"}, + "topaz": {"trains_on_data": false, "data_residency": "US", "retention_days": null, "local": true, "e2ee": false, "citation_url": "https://www.topazlabs.com/privacy-policy", "basis": "Topaz Photo/Video AI / Gigapixel are primarily desktop applications processing media locally; privacy policy describes account/usage telemetry; no claimed license to train on user images/video.", "confidence": "medium", "tier_dependent": false, "notes": "Cloud features (Bloom, Astra, Project Starlight) introduce server processing - policy silent on training for cloud features.", "retrieved": "2026-05-06"}, + "runwayml": {"trains_on_data": true, "data_residency": "US", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://runwayml.com/privacy-policy", "basis": "Runway ToS/Privacy: inputs/outputs may be used to train and improve AI models; applies to Free, Standard, Pro, Unlimited with no documented opt-out; Enterprise excluded from training.", "confidence": "high", "tier_dependent": true, "notes": "Strong tier dependence: only Enterprise excluded.", "retrieved": "2026-05-06"}, + "cliproxyapi": {"trains_on_data": false, "data_residency": "unknown", "retention_days": null, "local": true, "e2ee": false, "citation_url": "https://github.com/router-for-me/CLIProxyAPI", "basis": "CLIProxyAPI is open-source MIT-licensed self-hosted proxy server (Go) wrapping Gemini CLI, ChatGPT Codex, Claude Code, Antigravity, Qwen Code as compatible APIs; runs on user's own machine.", "confidence": "high", "tier_dependent": false, "notes": "Self-hosted local proxy; operator is the user.", "retrieved": "2026-05-06"}, + "brave-search": {"trains_on_data": false, "data_residency": "multi", "retention_days": 90, "local": false, "e2ee": false, "citation_url": "https://api-dashboard.search.brave.com/documentation/resources/privacy-notice", "basis": "Brave Search API Privacy Notice and DPA (2025-09-09): query logs retained max 90 days for billing/troubleshooting; not used for training or profiling; Enterprise ZDR option.", "confidence": "high", "tier_dependent": true, "notes": "Independent index; only major search API offering true ZDR.", "retrieved": "2026-05-06"}, + "exa-search": {"trains_on_data": true, "data_residency": "US", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://exa.ai/privacy-policy", "basis": "Exa Privacy Policy: 'Query Data is used to improve our products and technology, including by training and fine-tuning models that power our Services.' Enterprise ZDR available.", "confidence": "high", "tier_dependent": true, "notes": "SOC 2 Type II. Independent search index.", "retrieved": "2026-05-06"}, + "google-pse-search": {"trains_on_data": true, "data_residency": "multi", "retention_days": 365, "local": false, "e2ee": false, "citation_url": "https://developers.google.com/custom-search/v1/overview", "basis": "Custom Search JSON API governed by GCP Terms and Google Privacy Policy; no search-API-specific privacy carveout located.", "confidence": "low", "tier_dependent": false, "notes": "Service closed to new customers; being discontinued Jan 1, 2027.", "retrieved": "2026-05-06"}, + "linkup-search": {"trains_on_data": false, "data_residency": "FR", "retention_days": 30, "local": false, "e2ee": false, "citation_url": "https://docs.linkup.so/pages/security-and-privacy/data-privacy", "basis": "Linkup Technologies (French SAS); GDPR baseline; ZDR option processes queries in RAM-only ephemeral environments; no statement that queries train models.", "confidence": "medium", "tier_dependent": true, "notes": "Default (non-ZDR) retention period not publicly specified.", "retrieved": "2026-05-06"}, + "perplexity-search": {"trains_on_data": false, "data_residency": "US", "retention_days": 0, "local": false, "e2ee": false, "citation_url": "https://www.perplexity.ai/help-center/en/articles/11187416-which-perplexity-subscription-plan-is-right-for-you", "basis": "Perplexity Help Center: 'Sonar (API): Your data is never logged or used for training.' ZDR by default for all API tiers.", "confidence": "high", "tier_dependent": false, "notes": "Distinct from consumer Perplexity Pro/Max.", "retrieved": "2026-05-06"}, + "searchapi-search": {"trains_on_data": false, "data_residency": "US", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://www.searchapi.io/legal/privacy", "basis": "SearchAPI.io: CCPA service provider - 'do not retain, use, disclose, or sell any of that information for any other commercial purposes'; option to mask query parameter.", "confidence": "medium", "tier_dependent": false, "notes": "SERP scraper proxying Google/Bing - underlying engine still sees queries.", "retrieved": "2026-05-06"}, + "serper-search": {"trains_on_data": false, "data_residency": "US", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://serper.dev/privacy", "basis": "Serper Privacy: data processing limited to operating service; data retained 'only as long as necessary'; query parameter can be masked; international transfers under SCCs.", "confidence": "medium", "tier_dependent": false, "notes": "Google SERP proxy - underlying queries sent to Google in real-time.", "retrieved": "2026-05-06"}, + "tavily-search": {"trains_on_data": true, "data_residency": "US", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://www.tavily.com/privacy", "basis": "Tavily Privacy: 'we may use certain portions of your query data to improve our responses to future queries' (legitimate interest); Enterprise ZDR available per AWS partnership.", "confidence": "high", "tier_dependent": true, "notes": "Acquired by Nebius Feb 2026. Queries also shared with third-party search index providers when needed.", "retrieved": "2026-05-06"}, + "youcom-search": {"trains_on_data": true, "data_residency": "US", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://you.com/privacy", "basis": "You.com (SuSea, Inc.): default collects queries/inputs; ZDR and No-Model-Training are opt-in admin features only on Team/Enterprise (off by default for new Team plans); ZDR-by-default at Enterprise tier.", "confidence": "high", "tier_dependent": true, "notes": "Underlying third-party LLM/search subprocessors may retain data per their own policies.", "retrieved": "2026-05-06"} + } +} diff --git a/src/shared/constants/providers.ts b/src/shared/constants/providers.ts index 1ac93bbd..029f73ab 100644 --- a/src/shared/constants/providers.ts +++ b/src/shared/constants/providers.ts @@ -8,7 +8,7 @@ export const FREE_PROVIDERS = { name: "Qoder AI", icon: "water_drop", color: "#6366F1", - // TODO(sam): verify policy at unknown + // TODO(sam): verify policy at https://qoder.com/privacy-policy trains_on_data: true, data_residency: "unknown", retention_days: null, @@ -24,9 +24,9 @@ export const FREE_PROVIDERS = { deprecated: true, deprecationReason: "Qwen OAuth free tier was discontinued on 2026-04-15. Use 'alicode', 'alicode-intl', or 'openrouter' provider with API key instead.", - // TODO(sam): verify policy at unknown + // TODO(sam): verify policy at https://chat.qwen.ai/legal-agreement/privacy-policy trains_on_data: true, - data_residency: "unknown", + data_residency: "CN", retention_days: null, local: false, e2ee: false, @@ -39,10 +39,10 @@ export const FREE_PROVIDERS = { color: "#4285F4", authHint: "Uses Gemini CLI OAuth / Cloud Code credentials. Pro models require an eligible Google account or paid plan.", - // TODO(sam): verify policy at unknown + // Verified 2026-05-06: https://ai.google.dev/gemini-api/docs/pricing trains_on_data: true, - data_residency: "unknown", - retention_days: null, + data_residency: "multi", + retention_days: 30, local: false, e2ee: false, }, @@ -52,10 +52,10 @@ export const FREE_PROVIDERS = { name: "Kiro AI", icon: "psychology_alt", color: "#FF6B35", - // TODO(sam): verify policy at unknown + // Verified 2026-05-06: https://kiro.dev/docs/privacy-and-security/data-protection/ trains_on_data: true, - data_residency: "unknown", - retention_days: null, + data_residency: "multi", + retention_days: 30, local: false, e2ee: false, }, @@ -69,10 +69,10 @@ export const FREE_PROVIDERS = { website: "https://aws.amazon.com/q/developer/", authHint: "Uses the same AWS Builder ID or imported refresh-token flow as Kiro, but keeps Amazon Q connections separate.", - // TODO(sam): verify policy at https://aws.amazon.com/q/developer/ + // Verified 2026-05-06: https://aws.amazon.com/q/developer/faqs/ trains_on_data: true, - data_residency: "unknown", - retention_days: null, + data_residency: "multi", + retention_days: 30, local: false, e2ee: false, }, @@ -92,10 +92,10 @@ export const OAUTH_PROVIDERS = { name: "Claude Code", icon: "smart_toy", color: "#D97757", - // TODO(sam): verify policy at unknown - trains_on_data: true, - data_residency: "unknown", - retention_days: null, + // Verified 2026-05-06: https://platform.claude.com/docs/en/build-with-claude/api-and-data-retention + trains_on_data: false, + data_residency: "multi", + retention_days: 30, local: false, e2ee: false, }, @@ -105,9 +105,9 @@ export const OAUTH_PROVIDERS = { name: "Antigravity", icon: "rocket_launch", color: "#F59E0B", - // TODO(sam): verify policy at unknown + // Verified 2026-05-06: https://discuss.ai.google.dev/t/data-privacy-for-commercial-use-how-to-access-antigravity-with-full-protections/132828 trains_on_data: true, - data_residency: "unknown", + data_residency: "US", retention_days: null, local: false, e2ee: false, @@ -152,10 +152,10 @@ export const OAUTH_PROVIDERS = { website: "https://docs.gitlab.com/user/duo_agent_platform/code_suggestions/", authHint: "OAuth application with ai_features + read_user scopes. Configure GITLAB_DUO_OAUTH_CLIENT_ID and optionally GITLAB_DUO_OAUTH_CLIENT_SECRET on this Graze instance.", - // TODO(sam): verify policy at https://docs.gitlab.com/user/duo_agent_platform/code_suggestions/ - trains_on_data: true, - data_residency: "unknown", - retention_days: null, + // Verified 2026-05-06: https://docs.gitlab.com/user/gitlab_duo/data_usage/ + trains_on_data: false, + data_residency: "multi", + retention_days: 0, local: false, e2ee: false, }, @@ -165,9 +165,9 @@ export const OAUTH_PROVIDERS = { name: "Cursor IDE", icon: "edit_note", color: "#00D4AA", - // TODO(sam): verify policy at unknown + // Verified 2026-05-06: https://cursor.com/data-use trains_on_data: true, - data_residency: "unknown", + data_residency: "US", retention_days: null, local: false, e2ee: false, @@ -179,9 +179,9 @@ export const OAUTH_PROVIDERS = { icon: "psychology", color: "#1E40AF", textIcon: "KC", - // TODO(sam): verify policy at unknown + // Verified 2026-05-06: https://platform.moonshot.ai/docs/agreement/modeluse trains_on_data: true, - data_residency: "unknown", + data_residency: "SG", retention_days: null, local: false, e2ee: false, @@ -193,11 +193,11 @@ export const OAUTH_PROVIDERS = { icon: "code", color: "#FF6B35", textIcon: "KC", - // TODO(sam): verify policy at unknown - trains_on_data: true, + // Verified 2026-05-06: https://github.com/Kilo-Org/kilocode/blob/main/PRIVACY.md + trains_on_data: false, data_residency: "unknown", retention_days: null, - local: false, + local: true, e2ee: false, }, cline: { @@ -207,10 +207,10 @@ export const OAUTH_PROVIDERS = { icon: "smart_toy", color: "#5B9BD5", textIcon: "CL", - // TODO(sam): verify policy at unknown - trains_on_data: true, - data_residency: "unknown", - retention_days: null, + // Verified 2026-05-06: https://docs.cline.bot/more-info/telemetry + trains_on_data: false, + data_residency: "multi", + retention_days: 0, local: false, e2ee: false, }, @@ -227,10 +227,10 @@ export const WEB_COOKIE_PROVIDERS = { textIcon: "CG", website: "https://chatgpt.com", authHint: "Paste your __Secure-next-auth.session-token cookie value from chatgpt.com", - // TODO(sam): verify policy at https://chatgpt.com + // Verified 2026-05-06: https://help.openai.com/en/articles/8983130-what-if-i-want-to-keep-my-history-on-but-disable-model-training trains_on_data: true, - data_residency: "unknown", - retention_days: null, + data_residency: "multi", + retention_days: 30, local: false, e2ee: false, }, @@ -243,10 +243,10 @@ export const WEB_COOKIE_PROVIDERS = { textIcon: "GW", website: "https://grok.com", authHint: "Paste your sso= cookie value from grok.com", - // TODO(sam): verify policy at https://grok.com + // Verified 2026-05-06: https://x.ai/legal/privacy-policy trains_on_data: true, - data_residency: "unknown", - retention_days: null, + data_residency: "US", + retention_days: 30, local: false, e2ee: false, }, @@ -259,9 +259,9 @@ export const WEB_COOKIE_PROVIDERS = { textIcon: "PW", website: "https://www.perplexity.ai", authHint: "Paste your __Secure-next-auth.session-token cookie value from perplexity.ai", - // TODO(sam): verify policy at https://www.perplexity.ai + // Verified 2026-05-06: https://www.perplexity.ai/help-center/en/articles/11564572-data-collection-at-perplexity trains_on_data: true, - data_residency: "unknown", + data_residency: "US", retention_days: null, local: false, e2ee: false, @@ -276,9 +276,9 @@ export const WEB_COOKIE_PROVIDERS = { website: "https://app.blackbox.ai", authHint: "Paste your __Secure-authjs.session-token value or full cookie header from app.blackbox.ai", - // TODO(sam): verify policy at https://app.blackbox.ai + // Verified 2026-05-06: https://www.blackbox.ai/privacy-policy trains_on_data: true, - data_residency: "unknown", + data_residency: "US", retention_days: null, local: false, e2ee: false, @@ -292,9 +292,9 @@ export const WEB_COOKIE_PROVIDERS = { textIcon: "MS", website: "https://www.meta.ai", authHint: "Paste your abra_sess value or full cookie header from meta.ai", - // TODO(sam): verify policy at https://www.meta.ai + // Verified 2026-05-06: https://about.fb.com/news/2023/09/privacy-matters-metas-generative-ai-features/ trains_on_data: true, - data_residency: "unknown", + data_residency: "US", retention_days: null, local: false, e2ee: false, @@ -315,7 +315,7 @@ export const APIKEY_PROVIDERS = { hasFree: true, freeNote: "$200 free credits on signup - multi-model routing gateway", apiHint: "Get $200 free credits at https://agentrouter.org/register — no credit card required.", - // TODO(sam): verify policy at https://agentrouter.org + // TODO(sam): verify policy at https://agentrouter.org/ trains_on_data: true, data_residency: "unknown", retention_days: null, @@ -333,10 +333,10 @@ export const APIKEY_PROVIDERS = { website: "https://openrouter.ai", hasFree: true, freeNote: "Free models at $0/token with :free suffix - 20 RPM / 200 RPD", - // TODO(sam): verify policy at https://openrouter.ai - trains_on_data: true, - data_residency: "unknown", - retention_days: null, + // Verified 2026-05-06: https://openrouter.ai/docs/features/privacy-and-logging + trains_on_data: false, + data_residency: "multi", + retention_days: 0, local: false, e2ee: false, }, @@ -351,9 +351,9 @@ export const APIKEY_PROVIDERS = { passthroughModels: true, apiHint: "Use a Qianfan API key from Baidu AI Cloud. The default endpoint is OpenAI-compatible v2.", - // TODO(sam): verify policy at https://cloud.baidu.com/product/wenxinworkshop + // TODO(sam): verify policy at https://cloud.baidu.com/doc/WENXINWORKSHOP/ trains_on_data: true, - data_residency: "unknown", + data_residency: "CN", retention_days: null, local: false, e2ee: false, @@ -416,9 +416,9 @@ export const APIKEY_PROVIDERS = { color: "#FF6A00", textIcon: "BCP", website: "https://www.alibabacloud.com/help/en/model-studio/coding-plan", - // TODO(sam): verify policy at https://www.alibabacloud.com/help/en/model-studio/coding-plan - trains_on_data: true, - data_residency: "unknown", + // Verified 2026-05-06: https://www.alibabacloud.com/help/en/model-studio/token-plan-overview + trains_on_data: false, + data_residency: "SG", retention_days: null, local: false, e2ee: false, @@ -431,9 +431,9 @@ export const APIKEY_PROVIDERS = { color: "#1E3A8A", textIcon: "KM", website: "https://kimi.moonshot.cn", - // TODO(sam): verify policy at https://kimi.moonshot.cn + // Verified 2026-05-06: https://www.kimi.com/user/agreement/userprivacy?version=v2 trains_on_data: true, - data_residency: "unknown", + data_residency: "CN", retention_days: null, local: false, e2ee: false, @@ -446,9 +446,9 @@ export const APIKEY_PROVIDERS = { color: "#1E40AF", textIcon: "KC", website: "https://kimi.com", - // TODO(sam): verify policy at https://kimi.com + // Verified 2026-05-06: https://platform.kimi.ai/docs/agreement/userprivacy trains_on_data: true, - data_residency: "unknown", + data_residency: "SG", retention_days: null, local: false, e2ee: false, @@ -461,9 +461,9 @@ export const APIKEY_PROVIDERS = { color: "#7C3AED", textIcon: "MM", website: "https://www.minimaxi.com", - // TODO(sam): verify policy at https://www.minimaxi.com + // Verified 2026-05-06: https://platform.minimax.io/protocol/privacy-policy trains_on_data: true, - data_residency: "unknown", + data_residency: "SG", retention_days: null, local: false, e2ee: false, @@ -476,9 +476,9 @@ export const APIKEY_PROVIDERS = { color: "#DC2626", textIcon: "MC", website: "https://www.minimaxi.com", - // TODO(sam): verify policy at https://www.minimaxi.com + // TODO(sam): verify policy at https://platform.minimaxi.com/audio/doc/privacy-policy.html trains_on_data: true, - data_residency: "unknown", + data_residency: "CN", retention_days: null, local: false, e2ee: false, @@ -491,10 +491,10 @@ export const APIKEY_PROVIDERS = { color: "#0EA5E9", textIcon: "CR", website: "https://crof.ai", - // TODO(sam): verify policy at https://crof.ai - trains_on_data: true, - data_residency: "unknown", - retention_days: null, + // Verified 2026-05-06: https://ai.nahcrof.com/privacy + trains_on_data: false, + data_residency: "US", + retention_days: 0, local: false, e2ee: false, }, @@ -506,9 +506,9 @@ export const APIKEY_PROVIDERS = { color: "#FF6A00", textIcon: "ALi", website: "https://bailian.console.aliyun.com", - // TODO(sam): verify policy at https://bailian.console.aliyun.com - trains_on_data: true, - data_residency: "unknown", + // Verified 2026-05-06: https://help.aliyun.com/zh/pai/user-guide/tongyi-lingma + trains_on_data: false, + data_residency: "CN", retention_days: null, local: false, e2ee: false, @@ -521,10 +521,10 @@ export const APIKEY_PROVIDERS = { color: "#FF6A00", textIcon: "ALi", website: "https://modelstudio.console.alibabacloud.com", - // TODO(sam): verify policy at https://modelstudio.console.alibabacloud.com - trains_on_data: true, - data_residency: "unknown", - retention_days: null, + // TODO(sam): verify policy at https://qwenlm.github.io/qwen-code-docs/en/users/support/tos-privacy/ + trains_on_data: false, + data_residency: "multi", + retention_days: 30, local: false, e2ee: false, }, @@ -617,10 +617,10 @@ export const APIKEY_PROVIDERS = { apiHint: "The watsonx model gateway exposes OpenAI-compatible /chat/completions and /models under /ml/gateway/v1.", passthroughModels: true, - // TODO(sam): verify policy at https://www.ibm.com/products/watsonx-ai - trains_on_data: true, - data_residency: "unknown", - retention_days: null, + // Verified 2026-05-06: https://dataplatform.cloud.ibm.com/docs/content/wsj/getting-started/overview-wx.html + trains_on_data: false, + data_residency: "multi", + retention_days: 30, local: false, e2ee: false, }, @@ -637,10 +637,10 @@ export const APIKEY_PROVIDERS = { apiHint: "OCI exposes OpenAI-compatible chat and responses endpoints. Project ID is optional in Graze but may be required for Responses and agentic workflows.", passthroughModels: true, - // TODO(sam): verify policy at https://www.oracle.com/artificial-intelligence/generative-ai/ - trains_on_data: true, - data_residency: "unknown", - retention_days: null, + // Verified 2026-05-06: https://docs.oracle.com/en-us/iaas/Content/generative-ai/data-handling.htm + trains_on_data: false, + data_residency: "multi", + retention_days: 0, local: false, e2ee: false, }, @@ -658,10 +658,10 @@ export const APIKEY_PROVIDERS = { apiHint: "Model discovery uses /v2/lm/scenarios/foundation-models/models on AI_API_URL. Chat requests use deploymentUrl/chat/completions and require AI-Resource-Group.", passthroughModels: true, - // TODO(sam): verify policy at https://help.sap.com/docs/sap-ai-core/sap-ai-core-service-guide/generative-ai-hub-in-sap-ai-core - trains_on_data: true, - data_residency: "unknown", - retention_days: null, + // Verified 2026-05-06: https://pages.community.sap.com/topics/generative-ai-hub + trains_on_data: false, + data_residency: "multi", + retention_days: 0, local: false, e2ee: false, }, @@ -680,10 +680,10 @@ export const APIKEY_PROVIDERS = { hasFree: true, freeNote: "$30/month free credits for new accounts", passthroughModels: true, - // TODO(sam): verify policy at https://modal.com/docs - trains_on_data: true, - data_residency: "unknown", - retention_days: null, + // Verified 2026-05-06: https://modal.com/docs/guide/security + trains_on_data: false, + data_residency: "US", + retention_days: 7, local: false, e2ee: false, }, @@ -702,9 +702,9 @@ export const APIKEY_PROVIDERS = { hasFree: true, freeNote: "$10/month recurring free API credits", passthroughModels: true, - // TODO(sam): verify policy at https://docs.reka.ai/chat/overview - trains_on_data: true, - data_residency: "unknown", + // Verified 2026-05-06: https://reka.ai/legal/privacy-policy + trains_on_data: false, + data_residency: "US", retention_days: null, local: false, e2ee: false, @@ -723,10 +723,10 @@ export const APIKEY_PROVIDERS = { "NLP Cloud uses a proprietary chatbot API instead of OpenAI chat/completions. Graze adapts OpenAI messages to input/context/history and exposes a local catalog of supported chatbot models.", hasFree: true, freeNote: "Trial credits for new accounts", - // TODO(sam): verify policy at https://docs.nlpcloud.com - trains_on_data: true, - data_residency: "unknown", - retention_days: null, + // Verified 2026-05-06: https://nlpcloud.com/privacy.html + trains_on_data: false, + data_residency: "multi", + retention_days: 0, local: false, e2ee: false, }, @@ -742,9 +742,9 @@ export const APIKEY_PROVIDERS = { "Use your Runway API key in Authorization: Bearer . Graze targets the current Runway API at https://api.dev.runwayml.com/v1 and sends the required X-Runway-Version header automatically.", apiHint: "Runway video generation is task-based. Graze submits text-to-video or image-to-video jobs, polls /v1/tasks/{id}, and normalizes the finished video outputs back into the OpenAI-like /v1/videos/generations response.", - // TODO(sam): verify policy at https://docs.dev.runwayml.com + // Verified 2026-05-06: https://runwayml.com/privacy-policy trains_on_data: true, - data_residency: "unknown", + data_residency: "US", retention_days: null, local: false, e2ee: false, @@ -795,9 +795,9 @@ export const APIKEY_PROVIDERS = { website: "https://deepseek.com", hasFree: true, freeNote: "5M free tokens on signup - no credit card required", - // TODO(sam): verify policy at https://deepseek.com + // Verified 2026-05-06: https://cdn.deepseek.com/policies/en-US/deepseek-privacy-policy.html trains_on_data: true, - data_residency: "unknown", + data_residency: "CN", retention_days: null, local: false, e2ee: false, @@ -812,10 +812,10 @@ export const APIKEY_PROVIDERS = { website: "https://groq.com", hasFree: true, freeNote: "Free tier: 30 RPM / 14.4K RPD — no credit card", - // TODO(sam): verify policy at https://groq.com - trains_on_data: true, - data_residency: "unknown", - retention_days: null, + // Verified 2026-05-06: https://console.groq.com/docs/your-data + trains_on_data: false, + data_residency: "US", + retention_days: 30, local: false, e2ee: false, }, @@ -829,10 +829,10 @@ export const APIKEY_PROVIDERS = { website: "https://blackbox.ai", hasFree: true, freeNote: "Free tier: unlimited basic chat plus Minimax-M2.5, no credit card required", - // TODO(sam): verify policy at https://blackbox.ai - trains_on_data: true, - data_residency: "unknown", - retention_days: null, + // Verified 2026-05-06: https://www.blackbox.ai/security + trains_on_data: false, + data_residency: "US", + retention_days: 0, local: false, e2ee: false, }, @@ -844,10 +844,10 @@ export const APIKEY_PROVIDERS = { color: "#1DA1F2", textIcon: "XA", website: "https://x.ai", - // TODO(sam): verify policy at https://x.ai - trains_on_data: true, - data_residency: "unknown", - retention_days: null, + // Verified 2026-05-06: https://x.ai/legal/terms-of-service-enterprise + trains_on_data: false, + data_residency: "US", + retention_days: 30, local: false, e2ee: false, }, @@ -861,10 +861,10 @@ export const APIKEY_PROVIDERS = { website: "https://mistral.ai", hasFree: true, freeNote: "Free Experiment tier: rate-limited access to all models, no credit card required", - // TODO(sam): verify policy at https://mistral.ai - trains_on_data: true, - data_residency: "unknown", - retention_days: null, + // Verified 2026-05-06: https://legal.mistral.ai/terms/privacy-policy + trains_on_data: false, + data_residency: "FR", + retention_days: 30, local: false, e2ee: false, }, @@ -876,10 +876,10 @@ export const APIKEY_PROVIDERS = { color: "#20808D", textIcon: "PP", website: "https://www.perplexity.ai", - // TODO(sam): verify policy at https://www.perplexity.ai - trains_on_data: true, - data_residency: "unknown", - retention_days: null, + // Verified 2026-05-06: https://www.perplexity.ai/hub/legal/perplexity-api-terms-of-service + trains_on_data: false, + data_residency: "US", + retention_days: 0, local: false, e2ee: false, }, @@ -894,9 +894,9 @@ export const APIKEY_PROVIDERS = { hasFree: true, freeNote: "$25 signup credits + 3 permanently free models: Llama 3.3 70B, Vision, DeepSeek-R1 distill", - // TODO(sam): verify policy at https://www.together.ai - trains_on_data: true, - data_residency: "unknown", + // Verified 2026-05-06: https://www.together.ai/terms-of-service + trains_on_data: false, + data_residency: "US", retention_days: null, local: false, e2ee: false, @@ -911,10 +911,10 @@ export const APIKEY_PROVIDERS = { website: "https://fireworks.ai", hasFree: true, freeNote: "$1 free starter credits on signup for API testing", - // TODO(sam): verify policy at https://fireworks.ai - trains_on_data: true, - data_residency: "unknown", - retention_days: null, + // Verified 2026-05-06: https://docs.fireworks.ai/guides/security_compliance/data_security + trains_on_data: false, + data_residency: "US", + retention_days: 0, local: false, e2ee: false, }, @@ -928,9 +928,9 @@ export const APIKEY_PROVIDERS = { website: "https://inference.cerebras.ai", hasFree: true, freeNote: "Free: 1M tokens/day, 60K TPM — world's fastest inference", - // TODO(sam): verify policy at https://inference.cerebras.ai - trains_on_data: true, - data_residency: "unknown", + // Verified 2026-05-06: https://www.cerebras.ai/cloud + trains_on_data: false, + data_residency: "US", retention_days: null, local: false, e2ee: false, @@ -945,10 +945,10 @@ export const APIKEY_PROVIDERS = { website: "https://cohere.com", hasFree: true, freeNote: "Free Trial: 1,000 API calls/month for testing, no credit card required", - // TODO(sam): verify policy at https://cohere.com + // Verified 2026-05-06: https://cohere.com/data-usage-policy trains_on_data: true, - data_residency: "unknown", - retention_days: null, + data_residency: "multi", + retention_days: 30, local: false, e2ee: false, }, @@ -962,9 +962,9 @@ export const APIKEY_PROVIDERS = { website: "https://build.nvidia.com", hasFree: true, freeNote: "Free dev access: ~40 RPM, 70+ models (Kimi K2.5, GLM 4.7, DeepSeek V3.2...)", - // TODO(sam): verify policy at https://build.nvidia.com - trains_on_data: true, - data_residency: "unknown", + // Verified 2026-05-06: https://www.nvidia.com/en-us/ai-data-science/products/nim-microservices/ + trains_on_data: false, + data_residency: "US", retention_days: null, local: false, e2ee: false, @@ -979,10 +979,10 @@ export const APIKEY_PROVIDERS = { website: "https://nebius.com", hasFree: true, freeNote: "~$1 trial credits on signup for API testing", - // TODO(sam): verify policy at https://nebius.com - trains_on_data: true, - data_residency: "unknown", - retention_days: null, + // Verified 2026-05-06: https://nebius.com/ai-studio + trains_on_data: false, + data_residency: "multi", + retention_days: 0, local: false, e2ee: false, }, @@ -996,10 +996,10 @@ export const APIKEY_PROVIDERS = { website: "https://cloud.siliconflow.com", hasFree: true, freeNote: "$1 free credits plus permanently free models after identity verification", - // TODO(sam): verify policy at https://cloud.siliconflow.com - trains_on_data: true, - data_residency: "unknown", - retention_days: null, + // Verified 2026-05-06: https://docs.siliconflow.cn/en/legals/privacy-policy + trains_on_data: false, + data_residency: "CN", + retention_days: 0, local: false, e2ee: false, }, @@ -1013,10 +1013,10 @@ export const APIKEY_PROVIDERS = { website: "https://hyperbolic.xyz", hasFree: true, freeNote: "$1-5 trial credits on signup for serverless inference", - // TODO(sam): verify policy at https://hyperbolic.xyz - trains_on_data: true, - data_residency: "unknown", - retention_days: null, + // Verified 2026-05-06: https://www.hyperbolic.ai/privacy/faq + trains_on_data: false, + data_residency: "US", + retention_days: 0, local: false, e2ee: false, }, @@ -1028,7 +1028,7 @@ export const APIKEY_PROVIDERS = { color: "#FFD700", textIcon: "NB", website: "https://nanobananaapi.ai", - // TODO(sam): verify policy at https://nanobananaapi.ai + // TODO(sam): verify policy at https://googlenanobanana.com/privacy trains_on_data: true, data_residency: "unknown", retention_days: null, @@ -1043,10 +1043,10 @@ export const APIKEY_PROVIDERS = { color: "#58A6FF", textIcon: "OC", website: "https://ollama.com/settings/api-keys", - // TODO(sam): verify policy at https://ollama.com/settings/api-keys - trains_on_data: true, - data_residency: "unknown", - retention_days: null, + // Verified 2026-05-06: https://ollama.com/privacy + trains_on_data: false, + data_residency: "US", + retention_days: 0, local: false, e2ee: false, }, @@ -1060,10 +1060,10 @@ export const APIKEY_PROVIDERS = { website: "https://huggingface.co", hasFree: true, freeNote: "Free Inference API for thousands of models (Whisper, VITS, SDXL…)", - // TODO(sam): verify policy at https://huggingface.co - trains_on_data: true, - data_residency: "unknown", - retention_days: null, + // Verified 2026-05-06: https://huggingface.co/docs/inference-providers/en/security + trains_on_data: false, + data_residency: "multi", + retention_days: 30, local: false, e2ee: false, }, @@ -1076,10 +1076,10 @@ export const APIKEY_PROVIDERS = { textIcon: "SY", website: "https://synthetic.new", passthroughModels: true, - // TODO(sam): verify policy at https://synthetic.new - trains_on_data: true, - data_residency: "unknown", - retention_days: null, + // Verified 2026-05-06: https://docs.litellm.ai/docs/providers/synthetic + trains_on_data: false, + data_residency: "multi", + retention_days: 14, local: false, e2ee: false, }, @@ -1092,10 +1092,10 @@ export const APIKEY_PROVIDERS = { textIcon: "KG", website: "https://kilo.ai", passthroughModels: true, - // TODO(sam): verify policy at https://kilo.ai - trains_on_data: true, - data_residency: "unknown", - retention_days: null, + // TODO(sam): verify policy at https://kilo.ai/privacy + trains_on_data: false, + data_residency: "multi", + retention_days: 30, local: false, e2ee: false, }, @@ -1142,10 +1142,10 @@ export const APIKEY_PROVIDERS = { textIcon: "ZA", website: "https://open.bigmodel.cn", apiHint: "API key from https://open.bigmodel.cn/usercenter/apikeys", - // TODO(sam): verify policy at https://open.bigmodel.cn + // Verified 2026-05-06: https://docs.z.ai/legal-agreement/privacy-policy trains_on_data: true, - data_residency: "unknown", - retention_days: null, + data_residency: "multi", + retention_days: 30, local: false, e2ee: false, }, @@ -1156,10 +1156,10 @@ export const APIKEY_PROVIDERS = { icon: "opencode", color: "#6366f1", website: "https://opencode.ai/zen", - // TODO(sam): verify policy at https://opencode.ai/zen - trains_on_data: true, - data_residency: "unknown", - retention_days: null, + // Verified 2026-05-06: https://opencode.ai/docs/zen/ + trains_on_data: false, + data_residency: "US", + retention_days: 30, local: false, e2ee: false, }, @@ -1170,10 +1170,10 @@ export const APIKEY_PROVIDERS = { icon: "opencode", color: "#6366f1", website: "https://opencode.ai/zen/go", - // TODO(sam): verify policy at https://opencode.ai/zen/go - trains_on_data: true, - data_residency: "unknown", - retention_days: null, + // Verified 2026-05-06: https://opencode.ai/docs/go/ + trains_on_data: false, + data_residency: "multi", + retention_days: 30, local: false, e2ee: false, }, @@ -1186,10 +1186,10 @@ export const APIKEY_PROVIDERS = { textIcon: "AL", website: "https://dashscope-intl.aliyuncs.com", hasFree: false, - // TODO(sam): verify policy at https://dashscope-intl.aliyuncs.com - trains_on_data: true, - data_residency: "unknown", - retention_days: null, + // Verified 2026-05-06: https://www.alibabacloud.com/help/en/model-studio/faq-about-alibaba-cloud-model-studio + trains_on_data: false, + data_residency: "multi", + retention_days: 30, local: false, e2ee: false, }, @@ -1204,9 +1204,9 @@ export const APIKEY_PROVIDERS = { hasFree: true, freeNote: "50M tokens/day (Flash-Lite) + 500K/day (Chat/Thinking) — 100% free while public beta", - // TODO(sam): verify policy at https://longcat.chat + // TODO(sam): verify policy at https://longcat.chat/platform/private/ trains_on_data: true, - data_residency: "unknown", + data_residency: "CN", retention_days: null, local: false, e2ee: false, @@ -1221,9 +1221,9 @@ export const APIKEY_PROVIDERS = { website: "https://pollinations.ai", hasFree: false, freeNote: "API key required. Spore tier: ~0.01 pollen/hour ($0.01/hr).", - // TODO(sam): verify policy at https://pollinations.ai + // TODO(sam): verify policy at https://pollinations.ai/ trains_on_data: true, - data_residency: "unknown", + data_residency: "DE", retention_days: null, local: false, e2ee: false, @@ -1241,7 +1241,7 @@ export const APIKEY_PROVIDERS = { "500+ models (GPT-5, Claude Opus 4, Gemini 3 Pro, Grok 4, DeepSeek V3...) — Users pay via free Puter account", passthroughModels: true, authHint: "Get token at puter.com/dashboard → Copy Auth Token", - // TODO(sam): verify policy at https://puter.com + // TODO(sam): verify policy at https://puter.com/ trains_on_data: true, data_residency: "unknown", retention_days: null, @@ -1260,10 +1260,10 @@ export const APIKEY_PROVIDERS = { freeNote: "Free 10K Neurons/day: ~150 LLM responses or 500s Whisper audio — edge inference globally", authHint: "Requires API Token AND Account ID (found at dash.cloudflare.com)", - // TODO(sam): verify policy at https://developers.cloudflare.com/workers-ai/ - trains_on_data: true, - data_residency: "unknown", - retention_days: null, + // Verified 2026-05-06: https://developers.cloudflare.com/workers-ai/platform/data-usage/ + trains_on_data: false, + data_residency: "multi", + retention_days: 0, local: false, e2ee: false, }, @@ -1277,10 +1277,10 @@ export const APIKEY_PROVIDERS = { website: "https://www.scaleway.com/en/ai/generative-apis/", hasFree: true, freeNote: "1M free tokens for new accounts — EU/GDPR compliant (Paris), Qwen3 235B & Llama 70B", - // TODO(sam): verify policy at https://www.scaleway.com/en/ai/generative-apis/ - trains_on_data: true, - data_residency: "unknown", - retention_days: null, + // Verified 2026-05-06: https://www.scaleway.com/en/docs/generative-apis/reference-content/data-privacy/ + trains_on_data: false, + data_residency: "FR", + retention_days: 0, local: false, e2ee: false, }, @@ -1294,9 +1294,9 @@ export const APIKEY_PROVIDERS = { website: "https://deepinfra.com", hasFree: true, freeNote: "Free signup credits for API testing and model exploration", - // TODO(sam): verify policy at https://deepinfra.com - trains_on_data: true, - data_residency: "unknown", + // Verified 2026-05-06: https://deepinfra.com/terms + trains_on_data: false, + data_residency: "US", retention_days: null, local: false, e2ee: false, @@ -1309,10 +1309,10 @@ export const APIKEY_PROVIDERS = { color: "#111827", textIcon: "VAI", website: "https://vercel.com/docs/ai-gateway", - // TODO(sam): verify policy at https://vercel.com/docs/ai-gateway - trains_on_data: true, - data_residency: "unknown", - retention_days: null, + // Verified 2026-05-06: https://vercel.com/docs/ai-gateway/capabilities/zdr + trains_on_data: false, + data_residency: "multi", + retention_days: 0, local: false, e2ee: false, }, @@ -1324,12 +1324,12 @@ export const APIKEY_PROVIDERS = { color: "#7C3AED", textIcon: "LA", website: "https://lambda.ai", - // TODO(sam): verify policy at https://lambda.ai - trains_on_data: true, - data_residency: "unknown", - retention_days: null, + // Verified 2026-05-06: https://deeptalk.lambda.ai/t/inference-api-privacy/4553 + trains_on_data: false, + data_residency: "US", + retention_days: 0, local: false, - e2ee: false, + e2ee: true, }, sambanova: { id: "sambanova", @@ -1341,10 +1341,10 @@ export const APIKEY_PROVIDERS = { website: "https://sambanova.ai", hasFree: true, freeNote: "$5 free credits on signup (30-day validity), no credit card required", - // TODO(sam): verify policy at https://sambanova.ai - trains_on_data: true, - data_residency: "unknown", - retention_days: null, + // Verified 2026-05-06: https://sambanova.ai/cloud-end-user-license-agreement + trains_on_data: false, + data_residency: "multi", + retention_days: 30, local: false, e2ee: false, }, @@ -1358,10 +1358,10 @@ export const APIKEY_PROVIDERS = { website: "https://nscale.com", hasFree: true, freeNote: "$5 free credits on signup for inference testing", - // TODO(sam): verify policy at https://nscale.com - trains_on_data: true, - data_residency: "unknown", - retention_days: null, + // Verified 2026-05-06: https://www.nscale.com/blog/introducing-nscale-serverless-inference-scalable-ai-without-infrastructure-hassles + trains_on_data: false, + data_residency: "multi", + retention_days: 0, local: false, e2ee: false, }, @@ -1373,10 +1373,10 @@ export const APIKEY_PROVIDERS = { color: "#2563EB", textIcon: "OVH", website: "https://www.ovhcloud.com", - // TODO(sam): verify policy at https://www.ovhcloud.com - trains_on_data: true, - data_residency: "unknown", - retention_days: null, + // Verified 2026-05-06: https://www.ovhcloud.com/en/public-cloud/ai-endpoints/ + trains_on_data: false, + data_residency: "FR", + retention_days: 0, local: false, e2ee: false, }, @@ -1390,10 +1390,10 @@ export const APIKEY_PROVIDERS = { website: "https://baseten.co", hasFree: true, freeNote: "$30 free trial credits for GPU inference", - // TODO(sam): verify policy at https://baseten.co - trains_on_data: true, - data_residency: "unknown", - retention_days: null, + // Verified 2026-05-06: https://www.baseten.co/trust/ + trains_on_data: false, + data_residency: "multi", + retention_days: 0, local: false, e2ee: false, }, @@ -1407,10 +1407,10 @@ export const APIKEY_PROVIDERS = { website: "https://publicai.co", hasFree: true, freeNote: "Free community inference tier for testing", - // TODO(sam): verify policy at https://publicai.co - trains_on_data: true, - data_residency: "unknown", - retention_days: null, + // TODO(sam): verify policy at https://publicai.network/libraries + trains_on_data: false, + data_residency: "multi", + retention_days: 0, local: false, e2ee: false, }, @@ -1422,9 +1422,9 @@ export const APIKEY_PROVIDERS = { color: "#1E40AF", textIcon: "MS", website: "https://platform.moonshot.ai", - // TODO(sam): verify policy at https://platform.moonshot.ai + // Verified 2026-05-06: https://platform.moonshot.ai/docs/agreement/modeluse trains_on_data: true, - data_residency: "unknown", + data_residency: "SG", retention_days: null, local: false, e2ee: false, @@ -1437,8 +1437,8 @@ export const APIKEY_PROVIDERS = { color: "#0F766E", textIcon: "ML", website: "https://llama.developer.meta.com", - // TODO(sam): verify policy at https://llama.developer.meta.com - trains_on_data: true, + // Verified 2026-05-06: https://llama.developer.meta.com/docs/trust/data-commitments + trains_on_data: false, data_residency: "unknown", retention_days: null, local: false, @@ -1452,9 +1452,9 @@ export const APIKEY_PROVIDERS = { color: "#111827", textIcon: "V0", website: "https://v0.dev", - // TODO(sam): verify policy at https://v0.dev + // Verified 2026-05-06: https://v0.app/policy trains_on_data: true, - data_residency: "unknown", + data_residency: "US", retention_days: null, local: false, e2ee: false, @@ -1469,9 +1469,9 @@ export const APIKEY_PROVIDERS = { website: "https://morphllm.com", hasFree: true, freeNote: "Free tier: 250K credits/month, $0", - // TODO(sam): verify policy at https://morphllm.com - trains_on_data: true, - data_residency: "unknown", + // Verified 2026-05-06: https://www.morphllm.com/privacy + trains_on_data: false, + data_residency: "US", retention_days: null, local: false, e2ee: false, @@ -1484,10 +1484,10 @@ export const APIKEY_PROVIDERS = { color: "#EA580C", textIcon: "FL", website: "https://featherless.ai", - // TODO(sam): verify policy at https://featherless.ai - trains_on_data: true, - data_residency: "unknown", - retention_days: null, + // Verified 2026-05-06: https://featherless.ai/privacy + trains_on_data: false, + data_residency: "US", + retention_days: 0, local: false, e2ee: false, }, @@ -1499,7 +1499,7 @@ export const APIKEY_PROVIDERS = { color: "#EC4899", textIcon: "FR", website: "https://friendli.ai", - // TODO(sam): verify policy at https://friendli.ai + // TODO(sam): verify policy at https://friendli.ai/privacypolicy trains_on_data: true, data_residency: "unknown", retention_days: null, @@ -1514,7 +1514,7 @@ export const APIKEY_PROVIDERS = { color: "#16A34A", textIcon: "LG", website: "https://llamagate.ai", - // TODO(sam): verify policy at https://llamagate.ai + // TODO(sam): verify policy at https://llamagate.dev/ trains_on_data: true, data_residency: "unknown", retention_days: null, @@ -1529,9 +1529,9 @@ export const APIKEY_PROVIDERS = { color: "#7C3AED", textIcon: "HK", website: "https://www.heroku.com", - // TODO(sam): verify policy at https://www.heroku.com - trains_on_data: true, - data_residency: "unknown", + // Verified 2026-05-06: https://devcenter.heroku.com/categories/heroku-inference + trains_on_data: false, + data_residency: "US", retention_days: null, local: false, e2ee: false, @@ -1544,10 +1544,10 @@ export const APIKEY_PROVIDERS = { color: "#F59E0B", textIcon: "GA", website: "https://galadriel.com", - // TODO(sam): verify policy at https://galadriel.com - trains_on_data: true, - data_residency: "unknown", - retention_days: null, + // TODO(sam): verify policy at https://docs.galadriel.com/overview + trains_on_data: false, + data_residency: "multi", + retention_days: 0, local: false, e2ee: false, }, @@ -1559,10 +1559,10 @@ export const APIKEY_PROVIDERS = { color: "#F97316", textIcon: "DB", website: "https://www.databricks.com", - // TODO(sam): verify policy at https://www.databricks.com - trains_on_data: true, - data_residency: "unknown", - retention_days: null, + // Verified 2026-05-06: https://docs.databricks.com/aws/en/machine-learning/model-serving/ + trains_on_data: false, + data_residency: "multi", + retention_days: 30, local: false, e2ee: false, }, @@ -1579,10 +1579,10 @@ export const APIKEY_PROVIDERS = { apiHint: "The default gateway catalogs active models from /genai/llmgw/catalog/. Deployment URLs are also supported for direct OpenAI-compatible chat requests.", passthroughModels: true, - // TODO(sam): verify policy at https://docs.datarobot.com - trains_on_data: true, - data_residency: "unknown", - retention_days: null, + // Verified 2026-05-06: https://www.datarobot.com/privacy/personal-data/ + trains_on_data: false, + data_residency: "multi", + retention_days: 30, local: false, e2ee: false, }, @@ -1599,9 +1599,9 @@ export const APIKEY_PROVIDERS = { apiHint: "Clarifai exposes OpenAI-compatible chat, responses and /models on /v2/ext/openai/v1. Public/community models typically require a PAT; app-scoped keys only work for resources inside that app.", passthroughModels: true, - // TODO(sam): verify policy at https://docs.clarifai.com - trains_on_data: true, - data_residency: "unknown", + // Verified 2026-05-06: https://docs.clarifai.com/resources/privacy-security/ + trains_on_data: false, + data_residency: "US", retention_days: null, local: false, e2ee: false, @@ -1614,10 +1614,10 @@ export const APIKEY_PROVIDERS = { color: "#29B5E8", textIcon: "SF", website: "https://www.snowflake.com", - // TODO(sam): verify policy at https://www.snowflake.com - trains_on_data: true, - data_residency: "unknown", - retention_days: null, + // Verified 2026-05-06: https://www.snowflake.com/en/legal/compliance/snowflake-ai-trust-and-safety/ + trains_on_data: false, + data_residency: "multi", + retention_days: 0, local: false, e2ee: false, }, @@ -1629,9 +1629,9 @@ export const APIKEY_PROVIDERS = { color: "#FFBE0B", textIcon: "WB", website: "https://wandb.ai", - // TODO(sam): verify policy at https://wandb.ai - trains_on_data: true, - data_residency: "unknown", + // Verified 2026-05-06: https://wandb.ai/site/privacy/ + trains_on_data: false, + data_residency: "US", retention_days: null, local: false, e2ee: false, @@ -1644,9 +1644,9 @@ export const APIKEY_PROVIDERS = { color: "#DC2626", textIcon: "VE", website: "https://www.volcengine.com", - // TODO(sam): verify policy at https://www.volcengine.com + // TODO(sam): verify policy at https://www.volcengine.com/docs/82379 trains_on_data: true, - data_residency: "unknown", + data_residency: "CN", retention_days: null, local: false, e2ee: false, @@ -1661,8 +1661,8 @@ export const APIKEY_PROVIDERS = { website: "https://www.ai21.com", hasFree: true, freeNote: "$10 trial credits on signup (valid 3 months), no credit card required", - // TODO(sam): verify policy at https://www.ai21.com - trains_on_data: true, + // Verified 2026-05-06: https://www.ai21.com/terms-policies/terms-of-use/ + trains_on_data: false, data_residency: "unknown", retention_days: null, local: false, @@ -1676,9 +1676,9 @@ export const APIKEY_PROVIDERS = { color: "#10B981", textIcon: "GC", website: "https://developers.sber.ru", - // TODO(sam): verify policy at https://developers.sber.ru - trains_on_data: true, - data_residency: "unknown", + // Verified 2026-05-06: https://developers.sber.ru/portal/products/gigachat-api + trains_on_data: false, + data_residency: "RU", retention_days: null, local: false, e2ee: false, @@ -1691,10 +1691,10 @@ export const APIKEY_PROVIDERS = { color: "#0EA5E9", textIcon: "VN", website: "https://venice.ai", - // TODO(sam): verify policy at https://venice.ai - trains_on_data: true, - data_residency: "unknown", - retention_days: null, + // Verified 2026-05-06: https://venice.ai/privacy + trains_on_data: false, + data_residency: "multi", + retention_days: 0, local: false, e2ee: false, }, @@ -1706,10 +1706,10 @@ export const APIKEY_PROVIDERS = { color: "#FF7000", textIcon: "CS", website: "https://mistral.ai", - // TODO(sam): verify policy at https://mistral.ai - trains_on_data: true, - data_residency: "unknown", - retention_days: null, + // Verified 2026-05-06: https://legal.mistral.ai/terms/privacy-policy + trains_on_data: false, + data_residency: "FR", + retention_days: 30, local: false, e2ee: false, }, @@ -1721,10 +1721,10 @@ export const APIKEY_PROVIDERS = { color: "#0F766E", textIcon: "UP", website: "https://www.upstage.ai", - // TODO(sam): verify policy at https://www.upstage.ai - trains_on_data: true, - data_residency: "unknown", - retention_days: null, + // Verified 2026-05-06: https://www.upstage.ai/terms-policie/update-august-1-2024 + trains_on_data: false, + data_residency: "KR", + retention_days: 90, local: false, e2ee: false, }, @@ -1736,9 +1736,9 @@ export const APIKEY_PROVIDERS = { color: "#1D4ED8", textIcon: "MT", website: "https://www.maritaca.ai", - // TODO(sam): verify policy at https://www.maritaca.ai - trains_on_data: true, - data_residency: "unknown", + // Verified 2026-05-06: https://www.maritaca.ai/en/termos-e-condi%C3%A7%C3%B5es + trains_on_data: false, + data_residency: "BR", retention_days: null, local: false, e2ee: false, @@ -1751,9 +1751,9 @@ export const APIKEY_PROVIDERS = { color: "#EA580C", textIcon: "MM", website: "https://mimo.mi.com", - // TODO(sam): verify policy at https://mimo.mi.com - trains_on_data: true, - data_residency: "unknown", + // Verified 2026-05-06: https://www.aibase.com/news/25997 + trains_on_data: false, + data_residency: "CN", retention_days: null, local: false, e2ee: false, @@ -1768,7 +1768,7 @@ export const APIKEY_PROVIDERS = { website: "https://inference.net", hasFree: true, freeNote: "$25 free credits on signup plus research grants available", - // TODO(sam): verify policy at https://inference.net + // TODO(sam): verify policy at https://inference.net/privacy trains_on_data: true, data_residency: "unknown", retention_days: null, @@ -1783,10 +1783,10 @@ export const APIKEY_PROVIDERS = { color: "#4F46E5", textIcon: "NG", website: "https://nano-gpt.com", - // TODO(sam): verify policy at https://nano-gpt.com + // Verified 2026-05-06: https://nano-gpt.com/privacy trains_on_data: true, - data_residency: "unknown", - retention_days: null, + data_residency: "multi", + retention_days: 0, local: false, e2ee: false, }, @@ -1800,9 +1800,9 @@ export const APIKEY_PROVIDERS = { website: "https://predibase.com", hasFree: true, freeNote: "$25 free trial credits (30-day validity)", - // TODO(sam): verify policy at https://predibase.com - trains_on_data: true, - data_residency: "unknown", + // Verified 2026-05-06: https://docs.predibase.com/resources/faq + trains_on_data: false, + data_residency: "US", retention_days: null, local: false, e2ee: false, @@ -1817,9 +1817,9 @@ export const APIKEY_PROVIDERS = { website: "https://bytez.com", hasFree: true, freeNote: "$1 free credits, refreshes every 4 weeks", - // TODO(sam): verify policy at https://bytez.com + // TODO(sam): verify policy at https://bytez.com/ trains_on_data: true, - data_residency: "unknown", + data_residency: "US", retention_days: null, local: false, e2ee: false, @@ -1836,10 +1836,10 @@ export const APIKEY_PROVIDERS = { freeNote: "$0.025/day free credits — 200+ models (GPT-4o, Claude, Gemini, Llama) via single endpoint", passthroughModels: true, - // TODO(sam): verify policy at https://aimlapi.com + // TODO(sam): verify policy at https://aimlapi.com/privacy-policy trains_on_data: true, - data_residency: "unknown", - retention_days: null, + data_residency: "multi", + retention_days: 365, local: false, e2ee: false, }, @@ -1854,10 +1854,10 @@ export const APIKEY_PROVIDERS = { hasFree: true, freeNote: "$0.50 trial credits on signup (valid about 1 year)", passthroughModels: true, - // TODO(sam): verify policy at https://novita.ai - trains_on_data: true, - data_residency: "unknown", - retention_days: null, + // Verified 2026-05-06: https://novita.ai/legal/privacy-policy + trains_on_data: false, + data_residency: "multi", + retention_days: 365, local: false, e2ee: false, }, @@ -1870,7 +1870,7 @@ export const APIKEY_PROVIDERS = { textIcon: "PI", website: "https://piapi.ai", passthroughModels: true, - // TODO(sam): verify policy at https://piapi.ai + // TODO(sam): verify policy at https://piapi.ai/ trains_on_data: true, data_residency: "unknown", retention_days: null, @@ -1886,10 +1886,10 @@ export const APIKEY_PROVIDERS = { textIcon: "GO", website: "https://api.getgoapi.com", passthroughModels: true, - // TODO(sam): verify policy at https://api.getgoapi.com + // TODO(sam): verify policy at https://getgoapi.com/en/terms trains_on_data: true, - data_residency: "unknown", - retention_days: null, + data_residency: "multi", + retention_days: 365, local: false, e2ee: false, }, @@ -1902,10 +1902,10 @@ export const APIKEY_PROVIDERS = { textIcon: "LZ", website: "https://api.laozhang.ai", passthroughModels: true, - // TODO(sam): verify policy at https://api.laozhang.ai + // TODO(sam): verify policy at https://laozhang.ai/privacyPolicy trains_on_data: true, - data_residency: "unknown", - retention_days: null, + data_residency: "multi", + retention_days: 365, local: false, e2ee: false, }, @@ -1921,10 +1921,10 @@ export const APIKEY_PROVIDERS = { hasFree: true, freeNote: "Free tier for open-source model inference", passthroughModels: true, - // TODO(sam): verify policy at https://glhf.chat + // TODO(sam): verify policy at https://glhf.chat/policies/privacy trains_on_data: true, - data_residency: "unknown", - retention_days: null, + data_residency: "multi", + retention_days: 365, local: false, e2ee: false, }, @@ -1938,7 +1938,7 @@ export const APIKEY_PROVIDERS = { website: "https://cablyai.com", authHint: "Bearer API key for the CablyAI OpenAI-compatible gateway.", passthroughModels: true, - // TODO(sam): verify policy at https://cablyai.com + // TODO(sam): verify policy at https://github.com/CablyAI trains_on_data: true, data_residency: "unknown", retention_days: null, @@ -1955,7 +1955,7 @@ export const APIKEY_PROVIDERS = { website: "https://theb.ai", authHint: "Bearer API key for the TheB.AI OpenAI-compatible gateway.", passthroughModels: true, - // TODO(sam): verify policy at https://theb.ai + // TODO(sam): verify policy at https://security-profiles.nudgesecurity.com/app/theb-ai trains_on_data: true, data_residency: "unknown", retention_days: null, @@ -1972,7 +1972,7 @@ export const APIKEY_PROVIDERS = { website: "https://fenayai.com", authHint: "Bearer API key for the FenayAI OpenAI-compatible gateway.", passthroughModels: true, - // TODO(sam): verify policy at https://fenayai.com + // TODO(sam): verify policy at https://fenayai.com/ trains_on_data: true, data_residency: "unknown", retention_days: null, @@ -1991,7 +1991,7 @@ export const APIKEY_PROVIDERS = { apiHint: "Empower exposes OpenAI-compatible chat on https://app.empower.dev/api/v1 with tool-calling support on empower-functions.", passthroughModels: true, - // TODO(sam): verify policy at https://docs.empower.dev + // TODO(sam): verify policy at https://empower.dev/ trains_on_data: true, data_residency: "unknown", retention_days: null, @@ -2012,7 +2012,7 @@ export const APIKEY_PROVIDERS = { "Nous exposes an OpenAI-compatible /v1 surface with a large remote /models catalog. The /chat/completions endpoint requires a valid API key for programmatic inference.", hasFree: true, freeNote: "Free tier: 50 RPM, 500,000 TPM — no credit card", - // TODO(sam): verify policy at https://portal.nousresearch.com/help + // TODO(sam): verify policy at https://portal.nousresearch.com/terms trains_on_data: true, data_residency: "unknown", retention_days: null, @@ -2031,10 +2031,10 @@ export const APIKEY_PROVIDERS = { "No API key is required for the public research endpoint. Leave the field blank, or provide a bearer token if your self-hosted Petals gateway uses auth.", apiHint: "Petals exposes a public HTTP API at https://chat.petals.dev/api/v1/generate and a WebSocket API at /api/v2/generate. Graze targets the HTTP generate endpoint and supports self-hosted base URLs.", - // TODO(sam): verify policy at https://chat.petals.dev + // TODO(sam): verify policy at https://github.com/bigscience-workshop/petals trains_on_data: true, - data_residency: "unknown", - retention_days: null, + data_residency: "multi", + retention_days: 0, local: false, e2ee: false, }, @@ -2050,10 +2050,10 @@ export const APIKEY_PROVIDERS = { apiHint: "Poe exposes OpenAI-compatible chat and responses on https://api.poe.com/v1, with authenticated balance checks on /usage/current_balance.", passthroughModels: true, - // TODO(sam): verify policy at https://creator.poe.com/api-reference + // Verified 2026-05-06: https://poe.com/privacy trains_on_data: true, - data_residency: "unknown", - retention_days: null, + data_residency: "multi", + retention_days: 365, local: false, e2ee: false, }, @@ -2067,10 +2067,10 @@ export const APIKEY_PROVIDERS = { website: "https://docs.gitlab.com/user/duo_agent_platform/code_suggestions/", authHint: "GitLab personal access token for the public Code Suggestions API. Configure a self-hosted base URL when not using gitlab.com.", - // TODO(sam): verify policy at https://docs.gitlab.com/user/duo_agent_platform/code_suggestions/ - trains_on_data: true, - data_residency: "unknown", - retention_days: null, + // Verified 2026-05-06: https://docs.gitlab.com/user/gitlab_duo/data_usage/ + trains_on_data: false, + data_residency: "multi", + retention_days: 0, local: false, e2ee: false, }, @@ -2084,12 +2084,12 @@ export const APIKEY_PROVIDERS = { website: "https://chutes.ai", authHint: "Bearer API key for the Chutes OpenAI-compatible gateway.", passthroughModels: true, - // TODO(sam): verify policy at https://chutes.ai - trains_on_data: true, - data_residency: "unknown", - retention_days: null, + // Verified 2026-05-06: https://chutes.ai/news/confidential-compute-for-ai-inference-how-chutes-delivers-verifiable-privacy-with-trusted-execution-environments + trains_on_data: false, + data_residency: "multi", + retention_days: 0, local: false, - e2ee: false, + e2ee: true, }, "voyage-ai": { id: "voyage-ai", @@ -2102,9 +2102,9 @@ export const APIKEY_PROVIDERS = { authHint: "Bearer API key for Voyage AI embeddings and rerank APIs.", hasFree: true, freeNote: "200M free tokens for embeddings and reranking", - // TODO(sam): verify policy at https://www.voyageai.com + // Verified 2026-05-06: https://www.voyageai.com/tos trains_on_data: true, - data_residency: "unknown", + data_residency: "US", retention_days: null, local: false, e2ee: false, @@ -2120,9 +2120,9 @@ export const APIKEY_PROVIDERS = { authHint: "Bearer API key for the Jina AI rerank API.", hasFree: true, freeNote: "10M free tokens on signup (non-commercial), no credit card required", - // TODO(sam): verify policy at https://jina.ai - trains_on_data: true, - data_residency: "unknown", + // Verified 2026-05-06: https://jina.ai/embeddings/ + trains_on_data: false, + data_residency: "DE", retention_days: null, local: false, e2ee: false, @@ -2135,10 +2135,10 @@ export const APIKEY_PROVIDERS = { color: "#2563EB", textIcon: "FL", website: "https://fal.ai", - // TODO(sam): verify policy at https://fal.ai + // Verified 2026-05-06: https://fal.ai/privacy trains_on_data: true, - data_residency: "unknown", - retention_days: null, + data_residency: "US", + retention_days: 7, local: false, e2ee: false, }, @@ -2150,9 +2150,9 @@ export const APIKEY_PROVIDERS = { color: "#8B5CF6", textIcon: "SA", website: "https://stability.ai", - // TODO(sam): verify policy at https://stability.ai + // Verified 2026-05-06: https://stability.ai/privacypolicy trains_on_data: true, - data_residency: "unknown", + data_residency: "US", retention_days: null, local: false, e2ee: false, @@ -2165,9 +2165,9 @@ export const APIKEY_PROVIDERS = { color: "#111827", textIcon: "BF", website: "https://blackforestlabs.ai", - // TODO(sam): verify policy at https://blackforestlabs.ai + // Verified 2026-05-06: https://blackforestlabs.ai/terms-of-service/ trains_on_data: true, - data_residency: "unknown", + data_residency: "DE", retention_days: null, local: false, e2ee: false, @@ -2180,9 +2180,9 @@ export const APIKEY_PROVIDERS = { color: "#EC4899", textIcon: "RC", website: "https://recraft.ai", - // TODO(sam): verify policy at https://recraft.ai + // Verified 2026-05-06: https://www.recraft.ai/terms trains_on_data: true, - data_residency: "unknown", + data_residency: "US", retention_days: null, local: false, e2ee: false, @@ -2195,11 +2195,11 @@ export const APIKEY_PROVIDERS = { color: "#059669", textIcon: "TP", website: "https://topazlabs.com", - // TODO(sam): verify policy at https://topazlabs.com - trains_on_data: true, - data_residency: "unknown", + // Verified 2026-05-06: https://www.topazlabs.com/privacy-policy + trains_on_data: false, + data_residency: "US", retention_days: null, - local: false, + local: true, e2ee: false, }, }; @@ -2448,10 +2448,10 @@ export const SEARCH_PROVIDERS = { textIcon: "PS", website: "https://docs.perplexity.ai/guides/search-quickstart", authHint: "Same API key as Perplexity (pplx-...)", - // TODO(sam): verify policy at https://docs.perplexity.ai/guides/search-quickstart - trains_on_data: true, - data_residency: "unknown", - retention_days: null, + // Verified 2026-05-06: https://www.perplexity.ai/help-center/en/articles/11187416-which-perplexity-subscription-plan-is-right-for-you + trains_on_data: false, + data_residency: "US", + retention_days: 0, local: false, e2ee: false, }, @@ -2464,9 +2464,9 @@ export const SEARCH_PROVIDERS = { textIcon: "SP", website: "https://serper.dev", authHint: "API key from serper.dev dashboard", - // TODO(sam): verify policy at https://serper.dev - trains_on_data: true, - data_residency: "unknown", + // Verified 2026-05-06: https://serper.dev/privacy + trains_on_data: false, + data_residency: "US", retention_days: null, local: false, e2ee: false, @@ -2480,10 +2480,10 @@ export const SEARCH_PROVIDERS = { textIcon: "BR", website: "https://brave.com/search/api", authHint: "Subscription token from Brave Search API dashboard", - // TODO(sam): verify policy at https://brave.com/search/api - trains_on_data: true, - data_residency: "unknown", - retention_days: null, + // Verified 2026-05-06: https://api-dashboard.search.brave.com/documentation/resources/privacy-notice + trains_on_data: false, + data_residency: "multi", + retention_days: 90, local: false, e2ee: false, }, @@ -2496,9 +2496,9 @@ export const SEARCH_PROVIDERS = { textIcon: "EX", website: "https://exa.ai", authHint: "API key from dashboard.exa.ai", - // TODO(sam): verify policy at https://exa.ai + // Verified 2026-05-06: https://exa.ai/privacy-policy trains_on_data: true, - data_residency: "unknown", + data_residency: "US", retention_days: null, local: false, e2ee: false, @@ -2512,9 +2512,9 @@ export const SEARCH_PROVIDERS = { textIcon: "TV", website: "https://tavily.com", authHint: "API key from app.tavily.com (format: tvly-...)", - // TODO(sam): verify policy at https://tavily.com + // Verified 2026-05-06: https://www.tavily.com/privacy trains_on_data: true, - data_residency: "unknown", + data_residency: "US", retention_days: null, local: false, e2ee: false, @@ -2530,8 +2530,8 @@ export const SEARCH_PROVIDERS = { authHint: "Requires a Google API key and your Programmable Search Engine ID (cx)", // TODO(sam): verify policy at https://developers.google.com/custom-search/v1/overview trains_on_data: true, - data_residency: "unknown", - retention_days: null, + data_residency: "multi", + retention_days: 365, local: false, e2ee: false, }, @@ -2544,10 +2544,10 @@ export const SEARCH_PROVIDERS = { textIcon: "LU", website: "https://docs.linkup.so", authHint: "Bearer API key from the Linkup dashboard", - // TODO(sam): verify policy at https://docs.linkup.so - trains_on_data: true, - data_residency: "unknown", - retention_days: null, + // Verified 2026-05-06: https://docs.linkup.so/pages/security-and-privacy/data-privacy + trains_on_data: false, + data_residency: "FR", + retention_days: 30, local: false, e2ee: false, }, @@ -2560,9 +2560,9 @@ export const SEARCH_PROVIDERS = { textIcon: "SA", website: "https://www.searchapi.io/docs", authHint: "API key from SearchAPI (query param or Bearer auth)", - // TODO(sam): verify policy at https://www.searchapi.io/docs - trains_on_data: true, - data_residency: "unknown", + // Verified 2026-05-06: https://www.searchapi.io/legal/privacy + trains_on_data: false, + data_residency: "US", retention_days: null, local: false, e2ee: false, @@ -2576,9 +2576,9 @@ export const SEARCH_PROVIDERS = { textIcon: "YOU", website: "https://you.com/docs/search/overview", authHint: "X-API-Key from the You.com platform dashboard", - // TODO(sam): verify policy at https://you.com/docs/search/overview + // Verified 2026-05-06: https://you.com/privacy trains_on_data: true, - data_residency: "unknown", + data_residency: "US", retention_days: null, local: false, e2ee: false, @@ -2611,10 +2611,10 @@ export const AUDIO_ONLY_PROVIDERS = { color: "#13EF93", textIcon: "DG", website: "https://deepgram.com", - // TODO(sam): verify policy at https://deepgram.com - trains_on_data: true, - data_residency: "unknown", - retention_days: null, + // Verified 2026-05-06: https://developers.deepgram.com/docs/the-deepgram-model-improvement-partnership-program + trains_on_data: false, + data_residency: "multi", + retention_days: 0, local: false, e2ee: false, }, @@ -2626,9 +2626,9 @@ export const AUDIO_ONLY_PROVIDERS = { color: "#0062FF", textIcon: "AA", website: "https://assemblyai.com", - // TODO(sam): verify policy at https://assemblyai.com + // Verified 2026-05-06: https://www.assemblyai.com/legal/terms-of-service trains_on_data: true, - data_residency: "unknown", + data_residency: "US", retention_days: null, local: false, e2ee: false, @@ -2641,10 +2641,10 @@ export const AUDIO_ONLY_PROVIDERS = { color: "#6C47FF", textIcon: "EL", website: "https://elevenlabs.io", - // TODO(sam): verify policy at https://elevenlabs.io + // Verified 2026-05-06: https://elevenlabs.io/privacy-policy trains_on_data: true, - data_residency: "unknown", - retention_days: null, + data_residency: "US", + retention_days: 1095, local: false, e2ee: false, }, @@ -2656,9 +2656,9 @@ export const AUDIO_ONLY_PROVIDERS = { color: "#FF4F8B", textIcon: "CA", website: "https://cartesia.ai", - // TODO(sam): verify policy at https://cartesia.ai + // Verified 2026-05-06: https://cartesia.ai/legal/privacy.html trains_on_data: true, - data_residency: "unknown", + data_residency: "US", retention_days: null, local: false, e2ee: false, @@ -2671,9 +2671,9 @@ export const AUDIO_ONLY_PROVIDERS = { color: "#00B4D8", textIcon: "PH", website: "https://play.ht", - // TODO(sam): verify policy at https://play.ht - trains_on_data: true, - data_residency: "unknown", + // Verified 2026-05-06: https://play.ht/terms/ + trains_on_data: false, + data_residency: "US", retention_days: null, local: false, e2ee: false, @@ -2686,9 +2686,9 @@ export const AUDIO_ONLY_PROVIDERS = { color: "#7B2EF2", textIcon: "IW", website: "https://inworld.ai", - // TODO(sam): verify policy at https://inworld.ai + // Verified 2026-05-06: https://inworld.ai/privacy trains_on_data: true, - data_residency: "unknown", + data_residency: "US", retention_days: null, local: false, e2ee: false, @@ -2703,10 +2703,10 @@ export const AUDIO_ONLY_PROVIDERS = { website: "https://aws.amazon.com/polly/", authHint: "Use AWS Secret Access Key as API key; set providerSpecificData.accessKeyId and optional region.", - // TODO(sam): verify policy at https://aws.amazon.com/polly/ + // Verified 2026-05-06: https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_ai-opt-out.html trains_on_data: true, - data_residency: "unknown", - retention_days: null, + data_residency: "multi", + retention_days: 30, local: false, e2ee: false, }, @@ -2739,11 +2739,11 @@ export const UPSTREAM_PROXY_PROVIDERS = { configDir: "~/.cli-proxy-api", binaryName: "cli-proxy-api", githubRepo: "router-for-me/CLIProxyAPI", - // TODO(sam): verify policy at https://github.com/router-for-me/CLIProxyAPI - trains_on_data: true, + // Verified 2026-05-06: https://github.com/router-for-me/CLIProxyAPI + trains_on_data: false, data_residency: "unknown", retention_days: null, - local: false, + local: true, e2ee: false, }, }; From 9188a5c0bcf9179f6fa77cf4ffcb3a88cd559b97 Mon Sep 17 00:00:00 2001 From: Sam Date: Wed, 6 May 2026 15:05:21 +1000 Subject: [PATCH 5/6] fix(db): correct e2ee/local flags for chutes, lambda-ai, kilocode, topaz MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Four providers were incorrectly classified in the initial audit pass: - chutes e2ee=false: mixed Bittensor network, TEE not guaranteed on every node; does not meet Graze's architectural-incapability bar - lambda-ai e2ee=false: forum "encrypted end-to-end" refers to TLS in transit, which the e2ee definition explicitly excludes - kilocode local=false: BYOK IDE extension — prompts leave the user's machine to the configured upstream; inference is not local - topaz local=false: Graze routes to the cloud API (Bloom/Astra), not the desktop app; cloud requests leave user's machine Co-Authored-By: Claude Sonnet 4.6 --- docs/provider-audit-results.json | 8 ++++---- src/shared/constants/providers.ts | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/provider-audit-results.json b/docs/provider-audit-results.json index 3b905824..415219ed 100644 --- a/docs/provider-audit-results.json +++ b/docs/provider-audit-results.json @@ -25,7 +25,7 @@ "cablyai": {"trains_on_data": true, "data_residency": "unknown", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://github.com/CablyAI", "basis": "Free aggregator with no published privacy policy or terms locatable.", "confidence": "low", "tier_dependent": false, "notes": "Could not locate authoritative policy.", "retrieved": "2026-05-06"}, "cerebras": {"trains_on_data": false, "data_residency": "US", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://www.cerebras.ai/cloud", "basis": "Cerebras Cloud: data, models, outputs never stored, logged, or reused; processed only during training/inference; no access without authorization.", "confidence": "high", "tier_dependent": false, "notes": "Six North American data centers.", "retrieved": "2026-05-06"}, "chatgpt-web": {"trains_on_data": true, "data_residency": "multi", "retention_days": 30, "local": false, "e2ee": false, "citation_url": "https://help.openai.com/en/articles/8983130-what-if-i-want-to-keep-my-history-on-but-disable-model-training", "basis": "ChatGPT consumer (Free/Plus/Pro) trains by default; users must toggle off 'Improve the model for everyone' under Settings > Data Controls; temporary/deleted chats retained ~30 days for abuse monitoring.", "confidence": "high", "tier_dependent": true, "notes": "Override mechanism: Settings > Data Controls > 'Improve the model for everyone'.", "retrieved": "2026-05-06"}, - "chutes": {"trains_on_data": false, "data_residency": "multi", "retention_days": 0, "local": false, "e2ee": true, "citation_url": "https://chutes.ai/news/confidential-compute-for-ai-inference-how-chutes-delivers-verifiable-privacy-with-trusted-execution-environments", "basis": "Bittensor Subnet 64 decentralized compute with TEE (Intel TDX + NVIDIA confidential compute), hardware attestation, encrypted CPU-GPU channel; privacy policy says no logging of API request/response content.", "confidence": "high", "tier_dependent": true, "notes": "FLAG: Chutes is decentralized (Bittensor), founded by Jon Durbin (US). Not all chutes have TEE.", "retrieved": "2026-05-06"}, + "chutes": {"trains_on_data": false, "data_residency": "multi", "retention_days": 0, "local": false, "e2ee": false, "citation_url": "https://chutes.ai/news/confidential-compute-for-ai-inference-how-chutes-delivers-verifiable-privacy-with-trusted-execution-environments", "basis": "Bittensor Subnet 64 decentralized compute with TEE (Intel TDX + NVIDIA confidential compute), hardware attestation, encrypted CPU-GPU channel; privacy policy says no logging of API request/response content. e2ee=false: mixed network, TEE not guaranteed on every node; does not meet Graze architectural-incapability bar.", "confidence": "high", "tier_dependent": true, "notes": "FLAG: Chutes is decentralized (Bittensor), founded by Jon Durbin (US). Not all chutes have TEE.", "retrieved": "2026-05-06"}, "clarifai": {"trains_on_data": false, "data_residency": "US", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://docs.clarifai.com/resources/privacy-security/", "basis": "Clarifai docs: 'Your Data is Not Used for Training' unless explicit opt-in; SOC 2 Type 2; customer-controlled retention.", "confidence": "high", "tier_dependent": false, "notes": "FLAG: Clarifai is US-based, not Chinese.", "retrieved": "2026-05-06"}, "claude": {"trains_on_data": false, "data_residency": "multi", "retention_days": 30, "local": false, "e2ee": false, "citation_url": "https://platform.claude.com/docs/en/build-with-claude/api-and-data-retention", "basis": "Anthropic Commercial Terms and API data-retention docs: customer prompts/responses are not used for model training without express permission; default API log retention reduced to 7 days in Sep 2025; ZDR available for qualifying enterprise.", "confidence": "high", "tier_dependent": true, "notes": "ZDR enterprise; HIPAA BAA; EU residency available via contract.", "retrieved": "2026-05-06"}, "cline": {"trains_on_data": false, "data_residency": "multi", "retention_days": 0, "local": false, "e2ee": false, "citation_url": "https://docs.cline.bot/more-info/telemetry", "basis": "Cline is BYOK VS Code extension; prompts/code go to user-configured provider; Cline's anonymous telemetry captures no token content, no code, no prompts; can be disabled.", "confidence": "medium", "tier_dependent": false, "notes": "Effective residency/retention/training depend on user's chosen upstream provider.", "retrieved": "2026-05-06"}, @@ -57,12 +57,12 @@ "hyperbolic": {"trains_on_data": false, "data_residency": "US", "retention_days": 0, "local": false, "e2ee": false, "citation_url": "https://www.hyperbolic.ai/privacy/faq", "basis": "Hyperbolic Privacy: data not stored; immediately discarded after inference; no use, retention, or training of models on user data.", "confidence": "high", "tier_dependent": false, "notes": "Decentralized GPU network.", "retrieved": "2026-05-06"}, "inference-net": {"trains_on_data": true, "data_residency": "unknown", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://inference.net/privacy", "basis": "Could not locate authoritative statement on inference data training/retention; published policy primarily addresses marketing/contact data.", "confidence": "low", "tier_dependent": false, "notes": "Could not locate authoritative policy on API prompt retention.", "retrieved": "2026-05-06"}, "kilo-gateway": {"trains_on_data": false, "data_residency": "multi", "retention_days": 30, "local": false, "e2ee": false, "citation_url": "https://kilo.ai/privacy", "basis": "Kilo's hosted gateway proxies to upstream providers each with their own policies; Kilo states it does not retain prompt data.", "confidence": "low", "tier_dependent": true, "notes": "No explicit gateway-level retention/training contract published.", "retrieved": "2026-05-06"}, - "kilocode": {"trains_on_data": false, "data_residency": "unknown", "retention_days": null, "local": true, "e2ee": false, "citation_url": "https://github.com/Kilo-Org/kilocode/blob/main/PRIVACY.md", "basis": "Kilo Code IDE extension runs locally; API keys stored locally; prompts/code sent only to user's chosen AI provider; Kilo does not store or process that data.", "confidence": "high", "tier_dependent": false, "notes": "Local-first IDE extension; data residency depends on configured upstream.", "retrieved": "2026-05-06"}, + "kilocode": {"trains_on_data": false, "data_residency": "unknown", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://github.com/Kilo-Org/kilocode/blob/main/PRIVACY.md", "basis": "Kilo Code is a BYOK IDE extension; prompts/code are sent to the user's configured upstream provider, not processed locally. local=false: inference leaves the user's machine to the upstream. Kilo itself does not store or process that data.", "confidence": "high", "tier_dependent": false, "notes": "Data residency/retention/training depends entirely on configured upstream provider.", "retrieved": "2026-05-06"}, "kimi": {"trains_on_data": true, "data_residency": "CN", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://www.kimi.com/user/agreement/userprivacy?version=v2", "basis": "Kimi (Moonshot AI) Privacy Policy: usage information used to improve and develop services, including training and refining ML models.", "confidence": "high", "tier_dependent": false, "notes": "Mainland kimi.com consumer service.", "retrieved": "2026-05-06"}, "kimi-coding": {"trains_on_data": true, "data_residency": "SG", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://platform.moonshot.ai/docs/agreement/modeluse", "basis": "Moonshot AI Kimi OpenPlatform Terms: may use content to provide, maintain, develop, and improve services; no documented training opt-out for paid API.", "confidence": "medium", "tier_dependent": true, "notes": "MOONSHOT AI PTE. LTD. Singapore controller; data may transit to CN parent infrastructure.", "retrieved": "2026-05-06"}, "kimi-coding-apikey": {"trains_on_data": true, "data_residency": "SG", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://platform.kimi.ai/docs/agreement/userprivacy", "basis": "Same Moonshot OpenPlatform terms; API key access uses same governing policy; training/improving listed as data use.", "confidence": "medium", "tier_dependent": true, "notes": "Likely overlaps with kimi-coding entry.", "retrieved": "2026-05-06"}, "kiro": {"trains_on_data": true, "data_residency": "multi", "retention_days": 30, "local": false, "e2ee": false, "citation_url": "https://kiro.dev/docs/privacy-and-security/data-protection/", "basis": "Kiro: may use Free Tier and individual subscriber content for service improvement including model training; enterprise users automatically opted out.", "confidence": "high", "tier_dependent": true, "notes": "Free/individual tier in us-east-1 by default.", "retrieved": "2026-05-06"}, - "lambda-ai": {"trains_on_data": false, "data_residency": "US", "retention_days": 0, "local": false, "e2ee": true, "citation_url": "https://deeptalk.lambda.ai/t/inference-api-privacy/4553", "basis": "Lambda engineers (official forum): does not log or store input prompts or completion results; no use for training; messages encrypted end-to-end and deleted after request completes.", "confidence": "medium", "tier_dependent": false, "notes": "Statement from Lambda staff in developer forum rather than formal ToS.", "retrieved": "2026-05-06"}, + "lambda-ai": {"trains_on_data": false, "data_residency": "US", "retention_days": 0, "local": false, "e2ee": false, "citation_url": "https://deeptalk.lambda.ai/t/inference-api-privacy/4553", "basis": "Lambda engineers (official forum): does not log or store input prompts or completion results; no use for training; deleted after request completes. e2ee=false: 'encrypted end-to-end' in forum post refers to TLS in transit, which per Graze definition does not qualify. Lambda is a standard cloud GPU provider with full plaintext access during inference.", "confidence": "medium", "tier_dependent": false, "notes": "Statement from Lambda staff in developer forum rather than formal ToS.", "retrieved": "2026-05-06"}, "laozhang": {"trains_on_data": true, "data_residency": "multi", "retention_days": 365, "local": false, "e2ee": false, "citation_url": "https://laozhang.ai/privacyPolicy", "basis": "Self-claim of no model training/no storage in marketing copy, but no contractual binding across upstream providers; privacy policy in Chinese without upstream specifics.", "confidence": "low", "tier_dependent": true, "notes": "Chinese API reseller; conservative aggregator default.", "retrieved": "2026-05-06"}, "llamagate": {"trains_on_data": true, "data_residency": "unknown", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://llamagate.dev/", "basis": "Landing page exists; no public privacy policy, terms of service, DPA, or data-handling statement located.", "confidence": "low", "tier_dependent": false, "notes": "Could not locate authoritative policy.", "retrieved": "2026-05-06"}, "longcat": {"trains_on_data": true, "data_residency": "CN", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://longcat.chat/platform/private/", "basis": "Meituan LongCat.AI Platform Service Agreement and Privacy Policy; mainland Meituan service governed by PIPL; specific training/retention terms not enumerated publicly.", "confidence": "low", "tier_dependent": false, "notes": "Conservative default applied for hosted platform.", "retrieved": "2026-05-06"}, @@ -126,7 +126,7 @@ "nanobanana": {"trains_on_data": true, "data_residency": "unknown", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://googlenanobanana.com/privacy", "basis": "'nano-banana' is Google Gemini 2.5 Flash Image accessed via many third-party wrappers with conflicting policies; no canonical single Nanobanana provider exists.", "confidence": "low", "tier_dependent": false, "notes": "FLAG: provider entry is genuinely ambiguous - multiple wrappers. Direct Google API governed by Google AI/Gemini API terms.", "retrieved": "2026-05-06"}, "recraft": {"trains_on_data": true, "data_residency": "US", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://www.recraft.ai/terms", "basis": "Recraft Terms grant perpetual license to use Inputs/Assets to provide and improve Services; Free tier assets are public and Recraft-owned; Paid tier private; API explicit no-training.", "confidence": "high", "tier_dependent": true, "notes": "Strong tier dependence: Free=public+trainable; Paid=private; API=no-training.", "retrieved": "2026-05-06"}, "stability-ai": {"trains_on_data": true, "data_residency": "US", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://stability.ai/privacypolicy", "basis": "Stability: 'When we use your Inputs and Outputs to train our models, you can opt-out'; per-product opt-out toggles documented (DreamStudio, Stable Assistant, Platform API).", "confidence": "high", "tier_dependent": false, "notes": "Trains by default; explicit opt-out path.", "retrieved": "2026-05-06"}, - "topaz": {"trains_on_data": false, "data_residency": "US", "retention_days": null, "local": true, "e2ee": false, "citation_url": "https://www.topazlabs.com/privacy-policy", "basis": "Topaz Photo/Video AI / Gigapixel are primarily desktop applications processing media locally; privacy policy describes account/usage telemetry; no claimed license to train on user images/video.", "confidence": "medium", "tier_dependent": false, "notes": "Cloud features (Bloom, Astra, Project Starlight) introduce server processing - policy silent on training for cloud features.", "retrieved": "2026-05-06"}, + "topaz": {"trains_on_data": false, "data_residency": "US", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://www.topazlabs.com/privacy-policy", "basis": "Topaz desktop app processes media locally, but the Graze provider entry covers the cloud API (Bloom/Astra/Project Starlight). local=false: API requests leave the user's machine to Topaz cloud servers. Privacy policy silent on training for cloud features.", "confidence": "medium", "tier_dependent": false, "notes": "Desktop app is local; cloud API is not. Cloud features policy unverified.", "retrieved": "2026-05-06"}, "runwayml": {"trains_on_data": true, "data_residency": "US", "retention_days": null, "local": false, "e2ee": false, "citation_url": "https://runwayml.com/privacy-policy", "basis": "Runway ToS/Privacy: inputs/outputs may be used to train and improve AI models; applies to Free, Standard, Pro, Unlimited with no documented opt-out; Enterprise excluded from training.", "confidence": "high", "tier_dependent": true, "notes": "Strong tier dependence: only Enterprise excluded.", "retrieved": "2026-05-06"}, "cliproxyapi": {"trains_on_data": false, "data_residency": "unknown", "retention_days": null, "local": true, "e2ee": false, "citation_url": "https://github.com/router-for-me/CLIProxyAPI", "basis": "CLIProxyAPI is open-source MIT-licensed self-hosted proxy server (Go) wrapping Gemini CLI, ChatGPT Codex, Claude Code, Antigravity, Qwen Code as compatible APIs; runs on user's own machine.", "confidence": "high", "tier_dependent": false, "notes": "Self-hosted local proxy; operator is the user.", "retrieved": "2026-05-06"}, "brave-search": {"trains_on_data": false, "data_residency": "multi", "retention_days": 90, "local": false, "e2ee": false, "citation_url": "https://api-dashboard.search.brave.com/documentation/resources/privacy-notice", "basis": "Brave Search API Privacy Notice and DPA (2025-09-09): query logs retained max 90 days for billing/troubleshooting; not used for training or profiling; Enterprise ZDR option.", "confidence": "high", "tier_dependent": true, "notes": "Independent index; only major search API offering true ZDR.", "retrieved": "2026-05-06"}, diff --git a/src/shared/constants/providers.ts b/src/shared/constants/providers.ts index 029f73ab..14da7d11 100644 --- a/src/shared/constants/providers.ts +++ b/src/shared/constants/providers.ts @@ -197,7 +197,7 @@ export const OAUTH_PROVIDERS = { trains_on_data: false, data_residency: "unknown", retention_days: null, - local: true, + local: false, e2ee: false, }, cline: { @@ -1329,7 +1329,7 @@ export const APIKEY_PROVIDERS = { data_residency: "US", retention_days: 0, local: false, - e2ee: true, + e2ee: false, }, sambanova: { id: "sambanova", @@ -2089,7 +2089,7 @@ export const APIKEY_PROVIDERS = { data_residency: "multi", retention_days: 0, local: false, - e2ee: true, + e2ee: false, }, "voyage-ai": { id: "voyage-ai", @@ -2199,7 +2199,7 @@ export const APIKEY_PROVIDERS = { trains_on_data: false, data_residency: "US", retention_days: null, - local: true, + local: false, e2ee: false, }, }; From 7bd7e9943105886d482044b109c3b40605a90f81 Mon Sep 17 00:00:00 2001 From: Sam Date: Wed, 6 May 2026 15:18:18 +1000 Subject: [PATCH 6/6] test(db): add batch-2 provider audit assertions (PR test policy) 13 new assertions covering key value changes from the 136-provider audit: groq, deepseek, fireworks, openrouter, mistral, xai, gitlab, perplexity, cloudflare-ai (trains_on_data / data_residency / retention_days), plus regression guards for the corrected chutes/lambda-ai e2ee=false and kilocode/topaz local=false classifications. Co-Authored-By: Claude Sonnet 4.6 --- tests/unit/provider-metadata-schema.test.ts | 71 +++++++++++++++++++++ 1 file changed, 71 insertions(+) diff --git a/tests/unit/provider-metadata-schema.test.ts b/tests/unit/provider-metadata-schema.test.ts index e469b607..5c22e409 100644 --- a/tests/unit/provider-metadata-schema.test.ts +++ b/tests/unit/provider-metadata-schema.test.ts @@ -351,3 +351,74 @@ test("validateProviders throws when multi residency has null retention", () => { /Provider validation failed/ ); }); + +// --------------------------------------------------------------------------- +// Batch-2 audit assertions (PR #6 — 136-provider research pass) +// --------------------------------------------------------------------------- + +test("groq trains_on_data=false, data_residency=US, retention_days=30 (ZDR by default)", () => { + assert.equal(APIKEY_PROVIDERS.groq.trains_on_data, false); + assert.equal(APIKEY_PROVIDERS.groq.data_residency, "US"); + assert.equal(APIKEY_PROVIDERS.groq.retention_days, 30); +}); + +test("deepseek trains_on_data=true, data_residency=CN (PRC servers, trains by policy)", () => { + assert.equal(APIKEY_PROVIDERS.deepseek.trains_on_data, true); + assert.equal(APIKEY_PROVIDERS.deepseek.data_residency, "CN"); +}); + +test("fireworks trains_on_data=false, retention_days=0 (ZDR default)", () => { + assert.equal(APIKEY_PROVIDERS.fireworks.trains_on_data, false); + assert.equal(APIKEY_PROVIDERS.fireworks.retention_days, 0); +}); + +test("openrouter trains_on_data=false, retention_days=0 (zero logging by default)", () => { + assert.equal(APIKEY_PROVIDERS.openrouter.trains_on_data, false); + assert.equal(APIKEY_PROVIDERS.openrouter.retention_days, 0); +}); + +test("mistral trains_on_data=false, data_residency=FR, retention_days=30 (paid API)", () => { + assert.equal(APIKEY_PROVIDERS.mistral.trains_on_data, false); + assert.equal(APIKEY_PROVIDERS.mistral.data_residency, "FR"); + assert.equal(APIKEY_PROVIDERS.mistral.retention_days, 30); +}); + +test("xai trains_on_data=false, data_residency=US, retention_days=30 (Enterprise Terms)", () => { + assert.equal(APIKEY_PROVIDERS.xai.trains_on_data, false); + assert.equal(APIKEY_PROVIDERS.xai.data_residency, "US"); + assert.equal(APIKEY_PROVIDERS.xai.retention_days, 30); +}); + +test("gitlab trains_on_data=false, retention_days=0 (sub-processors contractually restricted)", () => { + assert.equal(APIKEY_PROVIDERS.gitlab.trains_on_data, false); + assert.equal(APIKEY_PROVIDERS.gitlab.retention_days, 0); +}); + +test("perplexity trains_on_data=false, retention_days=0 (Sonar API ZDR)", () => { + assert.equal(APIKEY_PROVIDERS.perplexity.trains_on_data, false); + assert.equal(APIKEY_PROVIDERS.perplexity.retention_days, 0); +}); + +test("cloudflare-ai trains_on_data=false, retention_days=0 (stateless inference)", () => { + assert.equal(APIKEY_PROVIDERS["cloudflare-ai"].trains_on_data, false); + assert.equal(APIKEY_PROVIDERS["cloudflare-ai"].retention_days, 0); +}); + +test("chutes e2ee=false (mixed Bittensor network, TEE not guaranteed per-request)", () => { + assert.equal(APIKEY_PROVIDERS.chutes.e2ee, false); + assert.equal(APIKEY_PROVIDERS.chutes.trains_on_data, false); +}); + +test("lambda-ai e2ee=false (TLS in transit does not qualify as architectural e2ee)", () => { + assert.equal(APIKEY_PROVIDERS["lambda-ai"].e2ee, false); + assert.equal(APIKEY_PROVIDERS["lambda-ai"].trains_on_data, false); +}); + +test("kilocode local=false (BYOK IDE extension — inference leaves machine to upstream)", () => { + assert.equal(OAUTH_PROVIDERS.kilocode.local, false); + assert.equal(OAUTH_PROVIDERS.kilocode.trains_on_data, false); +}); + +test("topaz local=false (Graze routes to cloud API, not the desktop app)", () => { + assert.equal(AI_PROVIDERS.topaz.local, false); +});