> For the complete documentation index, see [llms.txt](https://getsquish.gitbook.io/squish/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://getsquish.gitbook.io/squish/the-primitive/privacy-and-data-flow.md).

# Privacy and data flow

Squish processes video in three different places, and the privacy story differs by path. Never blur them: "nothing is uploaded" is true only for the local paths.

## Three processing paths

| Path                                                 | Where the video is processed    | Upload?                                             | Cost & account                                                                     |
| ---------------------------------------------------- | ------------------------------- | --------------------------------------------------- | ---------------------------------------------------------------------------------- |
| **Web app** — [getsquish.app](https://getsquish.app) | In your browser, client-side    | No media upload                                     | Free `3x3` sheets, no account needed; denser `4x4`–`6x6` is a one-time Pro upgrade |
| **CLI + MCP** — `@getsquish/squish`                  | On your machine (Node + ffmpeg) | Nothing is uploaded, ever                           | Every density free, no account, never gated                                        |
| **Hosted API** — `api.getsquish.app`                 | On Squish's server              | **An intentional upload**, by authenticated request | Prepaid credits, charged per output sheet                                          |

## Local processing: nothing leaves your machine

The CLI and the MCP server are the same open-source engine (Apache-2.0) running entirely on your machine: frames are extracted with your own ffmpeg, and sheets are written next to the input file (or wherever `--out` points). No video, frame, or sheet is uploaded to Squish — ever. There is no account, and no density is gated. Because the engine is open source, this is verifiable, not a promise. Start with the [CLI quickstart](/squish/getting-started/quickstart-cli.md) or the [MCP quickstart](/squish/getting-started/quickstart-mcp.md).

The web app at [getsquish.app](https://getsquish.app) follows the same principle in a different runtime: the video is decoded and the sheet is rendered in your browser, client-side. No media upload.

## The hosted path: what happens to your bytes

The hosted API exists for workflows that cannot run local tools — CI, serverless, hosted agents, products that need a request/response pipe. Sending a clip there is an **intentional upload** by authenticated request — to a **compute service, not a storage service**. One synchronous request is the whole job (upload, process, respond), and the two kinds of data it touches live on different tracks:

```
uploaded video ──► processing ──► deleted the moment the job ends
                       │           (success or failure)
                       ▼
              generated sheets ──► temporary cache (~24 h) ──► expire automatically
```

* **Uploaded video** exists only to serve the request that carried it: deleted the moment the job ends, success or failure. Never retained, never used for training, and there is no media library.
* **Generated sheets** are a temporary cache at capability URLs — kept about 24 hours so you can download them or re-fetch the URLs, then they expire and are deleted automatically. The cache is not storage: download anything you want to keep.
* Authentication is a bearer key; only the key's SHA-256 hash is stored — the plaintext is shown once and cannot be recovered, only replaced.

Need stronger guarantees? Run Squish locally — the CLI and MCP server never upload your videos (see [Local processing](#local-processing-nothing-leaves-your-machine)).

Full request/response details are in the [hosted API reference](/squish/reference/http-api.md) and the [API quickstart](/squish/getting-started/quickstart-api.md).

## The paid boundary

Local-first is a design decision, not a pricing tier. The local tools are not a trial of the hosted API — they are the full engine, every density, never gated. Across the engine's surfaces, the paid boundary is exactly one thing: **whether your bytes leave your machine**. Processing on your own hardware is free; processing on Squish's hardware costs prepaid credits (accounts that have never purchased get a small free daily allowance). If privacy is the constraint, the answer is always the same: stay local, and the engine gives you everything.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://getsquish.gitbook.io/squish/the-primitive/privacy-and-data-flow.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
