Trust & security
AI data privacy
GoPie answers questions by querying your data, not by memorising it. To do that, the AI agent needs some context — but far less than people assume. This page is a precise, honest account of what leaves your deployment, what never does, and the choices you control.
What the model sees#
When you ask a question, GoPie does not hand your dataset to a language model. It sends the model just enough to write and check a query — then runs that query against your own data and shows the model only a small sample of the result.
| Sent to the model | How much |
|---|---|
| Dataset and column names and types | the schema only |
| Column descriptions | your text, as written |
| Sample column values | up to ~5 representative values per column |
| Query results | a small sample — large results are trimmed to roughly 20 rows before the model sees them |
| Context documents | only the top matching passages the agent retrieves, never whole files |
| Custom prompts | your instructions, as written |
The model never receives your full tables, your complete query results, or your raw uploaded files. It reasons over the schema and small samples; the full result of every query stays inside GoPie and is what you see in the results panel.
NoteThe row count is always honest. When a result is trimmed for the model, GoPie still reports the true total row count alongside the sample — so the agent knows it's looking at 20 rows out of 4 million, and its answer reflects that.
Where your data lives#
Your data stays in the datastores your GoPie deployment runs on:
- Metadata and chats — the platform's PostgreSQL database.
- Uploaded files — your object storage. Any S3-compatible store works: AWS S3, Google Cloud Storage, Cloudflare R2, MinIO, and the like.
- Schema embeddings — your Qdrant instance, used for semantic schema search.
- Analytical data & queries — your datasets are stored as columnar files in that same S3-compatible object storage, and every query runs inside your deployment.
The only content that leaves your deployment is what's sent to the AI provider you configure (and to the embedding provider, if you choose a hosted one). Both are your choice — see below.
Choose your AI provider#
GoPie is model-agnostic. It talks to language models through a pluggable gateway, so an operator can point it at a hosted API, a private gateway, or a model running on their own hardware:
- Hosted gateways — OpenRouter, Portkey Cloud, or Cloudflare AI Gateway.
- Self-hosted gateways — a LiteLLM or Portkey proxy you run yourself.
- Any OpenAI-compatible endpoint — including a local model — through the "custom" provider.
Embeddings are configured separately and can run entirely on-device — an in-process model with no external call at all — or through a hosted embedding API.
Because you bring your own provider and keys, you decide which company (if any) processes your prompts, and under which terms.
NoteGoPie doesn't ship with a built-in model. The operator supplies the model identifiers and provider credentials in the deployment's configuration, so there's no default third party in the loop until one is chosen.
Training and retention#
This is the part people most need to get right, so here it is plainly:
Whether an AI provider retains or trains on the prompts GoPie sends is governed entirely by the provider and plan you choose, and their terms. GoPie does not add a "do-not-train" instruction to its requests — it can't make a provider honour a policy the provider doesn't offer.
If you need a strict data posture:
- Pick a provider and plan with a zero-retention or no-training guarantee — many vendors offer this on enterprise tiers.
- Or run a self-hosted or local model, so prompts never leave your infrastructure at all. Paired with local embeddings, the AI path stays fully inside your deployment.
WarningGoPie does not detect, mask, or redact sensitive values before sending context to the model. Sample column values and result-row samples are sent as-is — so if a column holds sensitive data, those values can appear in what the model sees. Choose your provider accordingly, and be mindful of what lives in the columns you upload.
What GoPie does and doesn't do#
To summarise, in one place:
- It does run every query against your own engine, send the model only schemas and small samples, let you bring your own provider and keys, and let embeddings run locally.
- It does not send your full datasets or complete result sets to any model, add a no-training flag to provider requests, or perform any PII detection or redaction.
For the mechanics of how the agent turns a question into a checked, grounded answer, see How the SQL agent works. For the platform's broader security posture — authentication, isolation, and secrets — see the Security overview.