Subprocessors.
This version applied until the version dated 2026-10-08 replaced it on this site. Read the current version or see the version history.
Third parties that process customer data on our behalf. This page is Annex III to our data processing addendum. When the list changes we update it here and record the change on /changelog, and customers have 30 days from publication to object. Last updated: 2026-09-28. Previous versions
Current subprocessors.
- NeonPrimary Postgres data store for account, chat, and application data.
United States - ClerkAuthentication, session, and user identity management.
United States - VercelTwo roles. (1) Hosting and edge delivery for the web surface (agiworkforce.com). (2) Vercel AI Gateway: an inference route that can serve a Managed Cloud chat request, sending your prompt and any attached content to the gateway, which forwards it to the provider that serves the model. That route carries a request only when AGI has configured a gateway credential for it and it is the cheapest admissible route for the model you picked, so it is neither every request nor every model. Vercel states the gateway keeps no prompts or outputs, deletes user data immediately after a request completes, and does not use prompts or responses for training (checked 2026-09-06). What happens to the content after the gateway hands it on is the serving provider’s practice, not the gateway’s. On the same condition of a configured credential, two other things can travel through this gateway: the text of files and notes when they are indexed for search, which is sent to be turned into embeddings, and, where response assessment is switched on, a shortened copy of a message that our routing sends to a small model to judge what kind of task it is.
Global edge - Fly.ioRuntime for two services we operate ourselves. (1) The real-time signaling server used by collaborative and multi-device sessions. (2) The malware scanner that every file you upload passes through: it holds the file in memory only while it scans it and never stores it (services/upload-scanner).
United States (San Jose) - StripePayment processing for paid tiers.
United States - CloudflareThree roles. (1) Cloudflare R2 object storage: files you upload and files the model generates are stored here. AGI serves catalogued files through a signed-in, active-workspace-scoped app route and does not return raw storage URLs in normal responses. Generated videos use a private bucket; images and other non-video files remain in a public bucket and can be opened without AGI sign-in if their underlying URL is obtained. (2) Edge delivery and DDoS protection for the marketing site. (3) Workers AI: an inference route that can serve a Managed Cloud chat request on Cloudflare’s own hosting of open-weight models. Your prompt and any attached content go to api.cloudflare.com when an operator has turned gateway routing on, has configured this gateway’s endpoint and key, and this is the cheapest admissible route for the model you picked. It reaches Workers AI directly rather than through Cloudflare’s AI Gateway proxy, so no gateway request log sits in that path. Cloudflare states that content sent to Workers AI is stored only where the customer pairs it with a storage service, and that it does not use that content to train any model on Workers AI or to improve any Cloudflare or third-party service without explicit consent (checked 2026-09-06).
Global edge - SentryError and performance monitoring. Receives crash reports and diagnostic context from the web surface and server routes.
United States - E2BManaged sandbox runtime. Executes code and processes files you supply during a Managed Cloud session. Sandbox execution is gated behind an explicit operator flag and is off by default; while it is off, nothing is sent here.
United States - Google AnalyticsProduct analytics for the marketing site. Receives page views and device/browser metadata.
United States - Model providers (Managed Cloud)Inference for Managed Cloud chat: Anthropic, OpenAI, Google, xAI, DeepSeek, Moonshot and Perplexity. Your prompt and any attached content are sent to the provider serving the model you select. This applies to Managed Cloud only: in Local Mode nothing is sent, and under BYOK you contract with the provider directly.
United States and other regions, per provider - OpenAI (dictation and Voice Mode)A second role for a provider the row above already names for chat. (1) Dictation: the audio you record in the composer is sent to OpenAI’s transcription endpoint and the text comes back (app/api/llm/v1/audio/transcriptions/route.ts). (2) Voice Mode: starting a live voice conversation opens a realtime session with OpenAI, and your microphone audio streams from your browser to that session for as long as it runs (app/api/voice/live/sessions/route.ts). Neither happens until you start dictation or Voice Mode. AGI does not store the audio in either path: the dictation route passes the bytes on and keeps none, and a voice session record holds the session’s settings and a pointer into the transcript, with no audio in it. OpenAI’s published API data policy says API inputs are not used to train its models, and that abuse-monitoring logs are held up to 30 days unless the law requires longer (checked 2026-09-05).
United States - OpenRouterInference routing on Managed Cloud, in two situations. (1) For the Qwen and Zhipu models, when AGI holds no key of its own for that provider: prompt content for those passes through OpenRouter on its way to the model provider. When AGI does hold that provider’s key, the request goes direct instead and OpenRouter is not in the path. (2) As a failover for any other catalogued chat model when the direct route to its provider fails. That second case means prompt content for a model you selected from any provider can pass through OpenRouter, and we would rather say so than let the narrower first case imply otherwise.
United States - Qwen (Alibaba) and ZhipuInference for their own models on Managed Cloud. Which path a request takes is decided by our server configuration, not by anything you choose: when AGI holds its own key for one of these providers the prompt goes to that provider directly, and when it does not, and the model has an OpenRouter route, it goes through OpenRouter instead.
Outside the United States, per provider - Cheaper Inference (operated by Keak)An inference gateway that can serve a Managed Cloud chat request. Your prompt and any attached content go to api.cheaperinference.com, which forwards them to the provider serving the model. A request reaches it only when an operator has turned gateway routing on, has configured this gateway’s endpoint and key, and this is the cheapest admissible route for the model you picked, so it is neither every request nor every model. Keak states that Cheaper Inference does not store prompt or response bodies in its application database, that temporary uploads expire after an hour, and that it does not use customer prompt or response bodies to train Keak models; its operational logs are kept up to 12 months and its account and billing records for the agreement term plus seven years (checked 2026-09-06). What is kept beyond the gateway is the practice of whichever provider serves the request.
United States, Canada, Europe and other countries where Keak operates - Experiential Labs (operated by Resolute Labs AI, Inc.)An inference gateway that can serve a Managed Cloud chat request when gateway routing and its credential are configured, and the free-only promotional route when you explicitly select an eligible free Experiential Labs model. Your prompt, attachments and response pass through api.experientiallabs.ai and the upstream provider that serves the request. On the Experiential Labs Free organization plan, prompt and response capture is on by default; its platform privacy policy says captured content is retained for up to 30 days and may be used to develop, evaluate and improve its services and hosted models. Its no-training routing setting restricts upstream providers but does not turn off platform capture. Private mode, which turns capture off and deletes captured content, requires an eligible paid or grandfathered organization. Request metadata is retained for billing. Verified against https://platform.experientiallabs.ai/privacy and https://platform.experientiallabs.ai/docs/data-controls on 2026-09-22. The serving upstream has its own retention policy. It publishes no processing region commitment, so we do not claim one.
Not published by the operator - UpstashRate limiting and ephemeral request state.
Global edge - ExpoTwo roles for the iOS and Android apps. (1) Push delivery: notification titles and bodies (including the names you give scheduled tasks) are relayed through Expo on their way to Apple and Google. (2) Over-the-air updates: every app launch requests an update manifest from Expo, which sees the device IP and build fingerprint.
United States - ResendTransactional email, in three narrow paths and no others. (1) Support escalation: when a live-support session is escalated, the conversation transcript and the contact email you gave are emailed to our support address (lib/support/handoff/escalation-email.ts). (2) Scheduled-task notifications: if you enable them in Settings, the task name and your email address are used to tell you a run finished; the body carries no task output (lib/services/notification-email-service.ts). (3) Operational alerts to us, carrying user-linked job identifiers (lib/services/video-incident-alert-service.ts). There is no account-lifecycle email: no signup, deletion-confirmation, breach or policy-change mail is sent by anything.
United States - RunwayVideo generation. The prompt text you type is sent to Runway when you generate a video with one of its models (app/api/media/video/generate/route.ts). Only reachable when an operator has configured a Runway key; otherwise the route refuses rather than silently choosing another provider.
United States - PerplexityTwo distinct roles, and the second was previously undisclosed. (1) Inference for its own models on Managed Cloud, as listed in the model-provider row above. (2) The backend for the platform web-search tool: when the assistant searches the web for you, your search query is sent to Perplexity (lib/web-search/web-search-tool.ts). That happens on the model’s initiative during a conversation, not only when you visit a search box.
United States - Google (Play Android Publisher)Verifying Android in-app purchases. The purchase token from your device is sent to Google to confirm a subscription is genuine and current (lib/server/mobile-iap-store-verification.ts). Apple is deliberately NOT listed for the equivalent iOS path: Apple’s signed notifications are verified locally against bundled root certificates, so nothing is sent back to Apple.
United States - Google (Places API)Place search for the maps tool. When the assistant looks a place up for you, the search text you asked about and any location you named are sent to Google Places (lib/places/google-places-provider.ts), and a photo you open for a result is fetched from Google through our own route. This happens on the model’s initiative during a conversation, and only where an operator has configured a Places key; without one the tool is not offered at all. It is a separate recipient from the Play verification row above.
United States - OpenStreetMap Foundation (Nominatim)Geocoding for the maps tool. A place name or location you ask about is sent to Nominatim to resolve it to coordinates (lib/services/map-geocoding-service.ts). Nominatim’s usage policy requires an identifying User-Agent, so the request is attributable to AGI rather than to you.
European Union - GitHubThe GitHub connector. When you install it, repository content and metadata you authorise are read through the GitHub API on your behalf (lib/github-app.ts). Nothing is read until you install the app and grant it access, and you can revoke it at GitHub at any time.
United States
How you find out about a change.
Additions and replacements are published on this page and recorded on /changelog, which you can subscribe to. We do not promise emailed notice. The product can send email in three narrow paths (support escalation, scheduled-task notifications, and operational alerts to us) and none of them can mail an arbitrary list of customers. Until something can, a commitment to email you about a subprocessor change is one we could not perform. To object to a new subprocessor on reasonable data protection grounds, write to us within 30 days of publication. The objection and termination route is in section 05 of the DPA.
Corrections, most recent first.
Three reviews of what actually leaves this product, on 14 August, 12 September and 21 September, found this page had been wrong in both directions, and we would rather publish the correction than quietly reissue the list.
Five inference recipients were missing, found on 21 September 2026
Three gateways that can serve a Managed Cloud chat request were absent from this page: Cheaper Inference, Experiential Labs, and Cloudflare’s Workers AI, which we listed only for storage and edge delivery. Vercel’s AI Gateway was absent the same way, under a vendor we listed only for hosting. And OpenAI was named for chat inference but not for dictation and Voice Mode, which is where microphone audio goes. All five are above, each with the condition under which it receives anything. A check now reads the model registry and fails our build when a provider with a route admissible for Managed Cloud traffic is not named on this page, so this particular gap cannot reopen quietly.
One recipient received nothing, and two did not receive it the way we said
MiniMax was listed as receiving Managed Cloud prompts through OpenRouter. No MiniMax route is admitted for Managed Cloud traffic, so the managed service sends it nothing; its models are reachable only where you bring your own key, and the row is gone. Qwen and Zhipu do receive Managed Cloud prompts, but not always through OpenRouter: where AGI holds its own key for one of them, the request goes to that provider directly. The word "always" described an intention rather than the code, which is the same failure as a missing row and is corrected above.
A seventh recipient was missing, found on 12 September 2026
Google's Places API was receiving the place text you ask the assistant about, and the map photos you open, while this page named Google only for Android purchase verification and named OpenStreetMap for the maps tool. Listing one half of a tool's egress is the same failure as listing none of it. The row is above.
Six recipients were missing
Resend, Runway, Perplexity's web-search role, Google's Play verification API, OpenStreetMap's Nominatim and GitHub were all receiving data while absent from this page. They are listed above with what each one receives.
An email provider was removed on 5 August that had never stopped running
It was delisted because no email package appeared in our dependencies. It does not use one: it calls the provider's HTTP API directly, so the check that justified the removal could not have found it. Support transcripts were being emailed the whole time. That is the most serious thing this review found, and it is fixed above.
The OpenRouter entry was narrower than the code
It named three model families. OpenRouter is also the failover for every other catalogued chat model, so prompt content for a model from any provider can pass through it. The row now says so.
One reported recipient turned out not to be one
Apple was reported as receiving purchase identifiers alongside Google. It does not: Apple's signed receipts are verified on our own servers against bundled certificates, and nothing is sent back. We checked rather than adding the row, and we are noting the near-miss because a list padded with recipients that receive nothing is unreliable in the same way as one with gaps.
What about LLM providers?
When you BYOK against Anthropic, OpenAI, Google, or any other provider, that provider becomes a processor of your data, on your contract, not ours. We do not process those prompts; the request goes from your client to the provider you targeted, and no row in the table above is in that path.
Which surface that applies to, precisely. BYOK is a capability of the released CLI. The VS Code extension is coming soon. The web app at agiworkforce.com and the current Desktop app are cloud-only: neither has a user-supplied-key path. Every model request you make in a browser is a Managed Cloud request on our keys, through the recipients listed above. We used to state the BYOK posture here without naming the surface, which invited exactly the wrong inference on the one surface where it does not hold. See BYOK for the full posture.