Platform differences
It is the same product everywhere, but the runtimes genuinely differ. Native desktop builds bundle the built-in AI engines and add desktop-only surfaces; the web build downloads engines on demand; iPhone and iPad run only the built-in engines because of a hard WebView memory ceiling. Everything below is derived from one capability module in the application, not from marketing.
Capability matrix
| Web | Windows | macOS | iPhone & iPad | |
|---|---|---|---|---|
| Built-in AI engines bundled | No — downloaded on demand, then cached | Yes | Yes | Yes (built-ins only) |
| Heavy downloadable engines | CPU/fallback engines; full set when WebGPU is available | CPU/fallback engines; full set when WebGPU is available | CPU/fallback engines; full set when WebGPU is available | No |
| Models page (switch / download / remove engines) | Yes | Yes | Yes | No |
| WebGPU acceleration | Where the browser exposes it | Where WebView2 exposes a working adapter | Where WKWebView exposes a working adapter | No |
| Custom ONNX model import | Yes | Yes | Yes | No |
| Text-prompt tools | Yes; Grounding DINO needs WebGPU | Yes; Grounding DINO needs WebGPU | Yes; Grounding DINO needs WebGPU | No |
| Semantic search over the dataset | Yes | Yes | Yes | No |
| Annotation workflow, versions, quality, splits, history | Yes | Yes | Yes | Yes |
| Works fully offline | Once cached | Yes | Yes | Yes |
| Local REST API for automation | No | Yes | Yes | No |
| Camera photo capture | With permission | Where exposed by the WebView | Where exposed by the WebView | With permission |
| Screen capture | When screen sharing is supported | When screen sharing is supported | No — disabled in the native macOS app | No |
| Video file as capture source | Playable files | Playable files | Playable files | Playable files |
| Network camera (RTSP / HTTP) | No | Yes — bundled FFmpeg | Yes — bundled FFmpeg | No |
| Watched image folder | Not implemented | Not implemented | Not implemented | Not implemented |
| Connected ML runner | Local development origins only; hosted app blocked | Native transport | Native transport | No |
| Silent camera video recording | When MP4 or WebM is supported | When MP4 or WebM is supported | When MP4 or WebM is supported | When MP4 or WebM is supported · 128 MiB / 10 min |
| AI Assistant | Yes — your key, kept in this browser | OpenAI/Claude API key or desktop Codex/Claude Code; OS credential store for API keys | OpenAI/Claude API key or desktop Codex/Claude Code; OS credential store for API keys | Unavailable on native iOS / Android |
| Media size ceilings | 4.7 GiB per image/video · 3 h video; decoding limits also apply | 4.7 GiB per image/video · 3 h video; decoding limits also apply | 4.7 GiB per image/video · 3 h video; decoding limits also apply | 32 MiB image · 128 MiB / 10 min video · 128 MiB archive; decoding limits also apply |
| Input model | Mouse and keyboard | Mouse and keyboard | Mouse and keyboard | Touch |
| Saving a produced file | Browser download | Browser download | Browser download | Written to the app’s Documents folder |
| Project limit | None | None | None | None |
| Paid upgrade | None | None | None | None |
These are file-size and duration ceilings, not a promise that any file below them will open. Decoded-pixel and memory limits, available image/video codecs, storage quota and archive-reader limits may be lower. Video timing must be readable within the probe limit and contain no more than 1,000,000 frames. AVIF depends on the browser or WebView decoder. AVI/MKV frame extraction requires the native desktop decoder; playback can still be unavailable.
Camera video support is probed at runtime rather than inferred from the platform name. AnnotateIt records without microphone audio and chooses a supported MP4 or WebM type; if the running browser or WebView exposes neither, Video is shown as unavailable while photo capture remains available.
All current builds are free. Mobile has a smaller feature envelope because of device and runtime limits; a purchase cannot enable unsupported features.
Why iPhone and iPad get fewer models
The mobile app runs inside a WebView with a hard per-process memory cap. A 250–380 MB model, plus the inference runtime, plus decoded images, exceeds it — and when it does the operating system kills the view without an error message. Rather than offer engines that would crash, the app caps the runnable model size well below that threshold, which admits the bundled built-ins and excludes the heavy downloads. WebGPU is also unavailable or unreliable there, and local storage quota is smaller.
What you keep on mobile: the full annotation workflow, the built-in Segment Anything engine, every project type, and the same dataset annotation formats. Media decoding still depends on the installed build and its codecs, and the smaller input and rendering limits apply.
What "offline" means for the web build
The first load downloads the application. The AI engines you choose download on first use and are then cached locally. After that, annotation runs on your device and losing the connection changes nothing about the work in progress. For a machine that must never touch a network, install a native build instead — the default engines ship inside it.
Things no build does
- Train models inside the hosted web app. Fine-tuning requires the separate experimental desktop ML runner integration or your own training stack.
- Server-side collaboration. There is no shared team queue, assignment or multi-user approval workflow on any platform; Pending AI Review is a local single-user queue.
- Automatic object tracking. Video tracks are keyframes you place, interpolated in between — no tracker model follows the object for you.
- Sync between devices. Move a project with an exported archive.
Which build to start with
Start with the web app — it is the same product and takes seconds with nothing to install. Move to a native build when you want the built-in engines bundled, fully offline sessions, store-managed updates, or the desktop-only surfaces.