Data Flow
Last updated: 2026-09-19
Local annotation stores data on your device. Optional external AI requests on Web, Windows and macOS send selected content to the selected provider (OpenAI or Anthropic); native iOS/iPadOS has no such connection. Optional ML jobs send selected data to your runner.
AnnotateIt performs local annotation and local AI inference in your browser or native app. The web version still uses the network to deliver application code and model files. This page separates those infrastructure requests from your project content.
Web Application Flow
What Crosses the Network
| Event | Destination | Data sent | Project content sent? |
|---|---|---|---|
| Open the web app | Cloudflare Pages | Normal HTTPS request metadata, including IP address, browser information, requested URL and timestamp | No |
| Download a local AI model or runtime, where needed | models.annotateit.ai on Cloudflare R2/CDN, or the selected model's host such as Hugging Face |
Normal HTTPS request metadata and the name of the requested model or WASM file | No |
| Import, capture, annotate locally or export to a local file | Your device | Files and annotations are processed locally | No network transfer |
| Send an Ask AI request through your API key (Web, Windows, macOS) | OpenAI API or Anthropic API, directly from your browser or app | Message, requested project context, attached image/frame preview where enabled, authentication and connection metadata | Yes, the context and attachments included in the request |
| Connect ChatGPT or Claude Code and send a request through its separately installed CLI (Windows, macOS) | OpenAI through Codex, or Anthropic through Claude Code | Account/connection information, message, requested context and attached preview where enabled | Yes, when a request includes project context or an attachment |
| Start Auto-annotate with ChatGPT or Claude (Web, Windows, macOS) | OpenAI or Anthropic through your selected API or desktop CLI connection | Eligible still-image previews in the selected scope, original dimensions, instructions and project labels | Yes, potentially multiple images |
| Start a supported ML runner job | Your configured local or remote runner | Selected dataset bundle, job settings and authentication | Yes; a remote runner receives the selected media and annotations |
| Connect an IP camera (Windows, macOS) | The camera address you configure | Stream requests and any credentials needed to authenticate; the video stream returns to your device | No project dataset is uploaded to the camera |
| Play a tutorial video (Samples page) | www.youtube-nocookie.com (Google, privacy-enhanced embed) |
Normal HTTPS request metadata and the id of the video you chose to play — loaded only after you press play; the page itself requests nothing from Google (thumbnails ship with the app) | No |
| Visit the marketing site | annotateit.ai on Cloudflare Pages |
Normal HTTPS request metadata | No |
| Click a call-to-action (marketing site) | Cloudflare Workers Analytics Engine (first-party endpoint) | Which button or link was used, as a non-personal label, and the page path — cookieless, with no identifier | No |
| Email support | AnnotateIt support mailbox and its email providers | Your email address, message and any attachments you choose to send | Only if you intentionally attach it |
Native Applications
Native builds bundle application assets and their default local AI models. Additional supported desktop models may require downloads. Projects are stored locally on the device. Operating-system and app-store services may make their own infrastructure requests under their own terms. On Windows and macOS, an IP camera connection goes directly to the address you enter and the stream is decoded on your machine. Its password is held in memory for the session and sent to the configured camera as needed for authentication; it is not saved in a project or backup.
What Local Annotation Does Not Send
- Imported or captured media and archives through local annotation. Optional Ask AI and ML runner transfers are described separately on this page.
- Labels, annotations, project names or exports through local tools. Requested project context and attached-image context can be sent through Ask AI.
- Image pixels or prompts used by local AI tools.
- Product telemetry about your annotation work, or advertising identifiers, from any build.
- Other annotation content beyond the optional connections and infrastructure requests described on this page.
The website and the web application both send cookieless page-view and Web Vitals measurements to Cloudflare Web Analytics; the marketing website additionally sends cookieless first-party interaction events — which call-to-action was clicked, and the page path — to a first-party endpoint that stores them in Cloudflare Workers Analytics Engine. These identify the page, referrer, country, browser and which controls were used — never your projects or their contents. See Privacy Policy for the detail.
For the legal description of these flows, see the Privacy Policy. For infrastructure vendors, see Subprocessors.
Optional External AI by Platform
Web supports your own OpenAI or Anthropic API key. Windows and macOS support your own API key or ChatGPT / Claude Code through their separately installed CLIs. Native iOS/iPadOS supports neither connection. A browser running the web app on an iPhone or iPad follows the Web rules. External AI requests do not pass through an AnnotateIt project-processing server.
Requests send messages and requested project context. Attached images or paused frames are sent as JPEG previews up to 1600 pixels on their longest side, with original dimensions, project labels and annotation context. Attachment is enabled by default in external-assistant annotation mode and is re-enabled when you move to another image or frame. Disabling it still allows text and requested context to be sent. A single-image request does not send the entire video or dataset; a batch sends each eligible still image in your selected scope. Opening the panel or batch dialog alone does not upload images.
See the Privacy Policy for credential storage, provider processing and sharing controls. Stopping work or removing a connection does not recall content already sent. The Ask AI guide explains setup and review controls.
Optional connected ML runner
In builds that include ML Pipelines, starting a supported training or inference job sends the selected dataset bundle to the runner you configure. Training bundles contain the selected media and annotations. A runner on your machine processes them there; a remote runner receives those bytes and operates under its own retention and access controls. This optional transfer is separate from local annotation and Ask AI. The runner token is held in app memory for the session, not included in a backup.