Compatibility matrix
CodeLoop’s promise: any developer on macOS, Windows, or Linux, using Cursor or Claude Code, building a web app, desktop app, Flutter mobile app, or native iOS/Android app, gets the full deep-verification loop — build/test verify, real launch, real driven interactions, screenshots, video, log monitoring, and the ≥94 % confidence gate. This page is the honest map of where that promise stands per host × target cell, including the boundaries.
Legend
| Mark | Meaning |
|---|---|
| ✅ | Implemented and proven in logged live end-to-end sessions. |
| 🟡 | Implemented and covered by the test suite; live proof on real hardware is still being collected. |
| ⬜ | Not possible on that host (e.g. iOS requires macOS). CodeLoop returns a clear directive instead of failing silently. |
Host: macOS (Cursor or Claude Code)
| Target app | Build/Test | Launch | Interactions | Screenshots | Video | App logs |
|---|---|---|---|---|---|---|
| Web app | ✅ | ✅ | ✅ Playwright | ✅ | ✅ | ✅ console + server |
| macOS desktop (Flutter / native) | ✅ | ✅ | ✅ CGEvent / osascript | ✅ | ✅ avfoundation | ✅ log stream |
| Flutter iOS Simulator | ✅ | 🟡 stall-aware + build reuse | ✅ real input (idb / CGEvent), Maestro flows | ✅ simctl | ✅ simctl recordVideo | ✅ simctl log stream |
| Flutter Android emulator | ✅ gradle | 🟡 | 🟡 adb (device-pinned) + Maestro | ✅ adb | ✅ adb screenrecord | ✅ logcat |
| Native iOS (Swift/SwiftUI) | 🟡 xcodebuild + simctl | 🟡 | 🟡 scanners + simctl fixtures | ✅ | ✅ | ✅ |
| Native Android (Kotlin/Compose) | 🟡 gradle + monkey | 🟡 | 🟡 adb + scanners | ✅ | ✅ | ✅ |
| Physical Android device | 🟡 | 🟡 | 🟡 adb pinned, emulator-only actions guarded | 🟡 | 🟡 | 🟡 |
| Physical iPhone | 🟡 detected | ⬜ best-effort via flutter run | ⬜ | ⬜ | ⬜ | ⬜ |
| Windows desktop app | ⬜ directive | ⬜ | ⬜ | ⬜ | ⬜ | ⬜ |
Physical iPhone caveat: CodeLoop detects connected iPhones and can attempt a best-effort flutter runlaunch, but Apple provides no supported screenshot / video / input path for physical devices from the command line. Visual evidence requires the iOS Simulator — CodeLoop says so explicitly rather than implying parity.
Host: Windows (Cursor or Claude Code)
| Target app | Build/Test | Launch | Interactions | Screenshots | Video | App logs |
|---|---|---|---|---|---|---|
| Web app | ✅ | ✅ | ✅ Playwright | ✅ | ✅ gdigrab | ✅ |
| Windows desktop (Flutter / .NET) | ✅ | ✅ | ✅ user32 + UI Automation | ✅ | ✅ gdigrab | ✅ |
| Flutter Android emulator | 🟡 | 🟡 | 🟡 adb + Maestro (JVM) | 🟡 | 🟡 | 🟡 |
| Native Android | 🟡 | 🟡 | 🟡 | 🟡 | 🟡 | 🟡 |
| Physical Android device | 🟡 | 🟡 | 🟡 | 🟡 | 🟡 | 🟡 |
| iOS (any form) | ⬜ “iOS requires macOS” directive | ⬜ | ⬜ | ⬜ | ⬜ | ⬜ |
| macOS desktop app | ⬜ directive | ⬜ | ⬜ | ⬜ | ⬜ | ⬜ |
Windows-specific hardening that makes the Android column work: adb is resolved through ANDROID_HOME / ANDROID_SDK_ROOT/ the default Android Studio install location even when it is not on PATH (the #1 Windows issue — Android Studio does not add platform-tools to the shell PATH), and Maestro gets a PowerShell install directive plus a Java preflight. Follow the Windows + Android quickstart.
Host: Linux
| Target app | Status |
|---|---|
| Web app | ✅ x11grab + xdotool + Playwright. Wayland-only sessions (no XWayland) get a structured remediation directive instead of cryptic X11 tool errors. |
| Flutter Linux desktop | 🟡 |
| Flutter / native Android (emulator + physical) | 🟡 — same toolchain notes as the Windows host. |
| iOS / macOS / Windows targets | ⬜ degrade with a clear directive. |
Driving both mobile platforms
On a macOS host you can verify the iOS and Android apps in one loop: set e2e.platforms: ["ios", "android"] in .codeloop/config.json and every full verify drives both sequentially with per-platform screenshots, video, and a per-platform confidence breakdown in gate_check. See the e2e configuration reference.
What “supported” means here
- Build/Test —
codeloop_verifyruns the project’s build, tests, and static analysis with the platform-correct toolchain (e.g. Flutter iOS builds go throughflutter build ios, never raw xcodebuild). - Launch — the verify auto-journey boots the device/browser and launches the real app, with stall-aware deadlines that tolerate cold builds.
- Interactions — real driven input (taps, typing, swipes, form fills), device-pinned so multi-device setups never cross-fire.
- Screenshots / Video — per-screen captures and a recording of the actual drive, used as gate evidence.
- App logs — runtime logs captured during the drive and correlated with the visual evidence.
Cells marked ⬜ never fail silently: the tool response names the boundary and the closest supported alternative. If you hit a cell that behaves worse than this page claims, that is a bug — please report it.
Next steps
- macOS + iOS Simulator quickstart
- Windows + Android emulator quickstart
- Cross-OS runbook — install and troubleshoot per OS
- e2e configuration reference