# What leaves the browser

> What stays in the browser, and what each feature sends and to whom - with the rows Direct Connection takes off the server path, and the inspector to verify it all.

- Canonical: https://big-agi.com/docs/privacy-data-flow
- Minimum tier: open  [Open ⊂ Free ⊂ Pro - a tier only ever ADDS to the Open baseline]
- Kind: reference · Last content update generation: 2026-07-27 · Review by: 2026-10-25
- Answers: Does my attachment get uploaded to your server? · Does voice audio leave my device?

What stays in the browser, in two stores:

| Store | What it holds |
|---|---|
| Local storage | API keys and models, all settings and configuration |
| IndexedDB | chats, personas and ramble entities, larger local files |

> **Direct Connection works only with your API key stored in the browser**, and with an AI service that permits direct browser calls (CORS). Where it cannot be used, requests route through the Big-AGI fast edge servers instead - everything still works, within the standard upload size and time limits.

One row per feature, the fully local ones grouped at the bottom:

| Feature | Route |
|---|---|
| Chat message - text, history, system prompt \* | browser -> Big-AGI edge -> AI service |
| Attachments - the bytes travel inside the message \* | as the chat message: inlined into the request body, no separate upload endpoint |
| Model list refresh \* | browser -> Big-AGI edge -> AI service |
| Voice input, recorder engine | browser -> the transcription vendor, always: audio files never traverse our server |
| Voice output, hosted voices | text -> Big-AGI edge -> the voice vendor |
| Attach a link, page browsing | URL -> Big-AGI server -> the page |
| Web search | query -> Big-AGI edge -> the search API |
| Image generation | prompt and any input images -> Big-AGI edge -> the image vendor |
| Publish or share a conversation | uploaded when you ask for a link - an explicit act |
| Voice input, browser engine | local to the browser - its own speech service (in Chrome, Google's), never Big-AGI |
| Voice output, browser voice | local only - your browser's own speech synthesis, no network to us |
| Attachment conversion - PDF text, PDF to images, OCR, DOCX and HTML to Markdown | local only - the PDF and OCR engines run in your browser |
| Chat search | local only - keyword matching over your local text, no embeddings, no server query |
| Token count and cost estimate | local only - the tokenizer runs in your browser |

\* skipped with [Direct Connection](/docs/feature-direct-connection) on, per service: the Big-AGI edge drops out and your browser calls the AI service itself.

Upload size and time limits on the server path live on [Context and limits](/docs/context-and-limits).

The default route drawn as three lanes: **Your Control** holds the browser with your data and keys, **Transit Only** is the Big-AGI edge, **AI Provider** is the model service. The request carries the key out through the edge; the response comes back the same way.

![Three-lane sequence diagram. Your Control holds the browser with your data and keys. Transit Only is the Big-AGI edge. AI Provider is the model service. Request plus key goes from browser to edge, the edge forwards it to the AI Services box, and a dashed response arrow returns through both.](/docs/legacy/data_ownership_hosted.png)

## Read the literal request

The [AI Inspector](/docs/feature-ai-inspector) captures the exact JSON body that left your browser for a turn - the assembled system prompt, the history as sent, the model and its parameters - with a transport chip naming the route it took: **Direct Connection** or **Edge Server**.

> **Pro:** Chats, personas and rambles stay on this device and browser only, unless you subscribe to Pro: cloud backup and multi-device sync (1 GB). On Open there is no sync. Disabling sync never deletes local data.

## Related

- [The AI Inspector](/docs/feature-ai-inspector)
- [What Direct Connection does](/docs/feature-direct-connection)
- [Context and limits](/docs/context-and-limits)
- [Keep your key safe](/docs/key-storage)
- [Back up, restore and import](/docs/account-backup)
