For your AI agent · Android · iOS Simulator beta
Map and audit any mobile app from your AI agent.
Your agent crawls the build on an emulator or Simulator and inspects the APK or app bundle itself: every screen, the route to it, and what is wrong with it. No SDK, no test IDs, no source code.
- Demo
- 1Map the app
- 2Drive to any screen
- 3Confirm where it landed
- ›Map my app on the emulator.
- ●crawl(apk="playground.apk")mapping in the background
- ●crawl_status()done19 screens59 transitions1 crash81 WCAG 2.2 findings
- ›Take it to Text size.
- ●go_to_screen("Text size")reached in 2 steps1tap Profile2tap Text size
- ●where_am_i()on Text size OK
The map it writes
Every screen, and the way there
The crawler taps through the build the way a person would, and writes down every screen it reaches and the step that got it there.
19 screens · 59 transitions Playground sample
- Welcome back
- Discover
- Profile
- Account settings
route("Account settings") 3 taps
What you get
One crawl, every answer in plain files
- 4.1.2Name, Role, Value“Sign in” is clickable with no role70INFO
- 3.2.3Consistent NavigationNavigation differs between screens3WARN
- 3.2.4Consistent IdentificationSame action, different label2WARN
- 3.3.7Redundant EntryAsks for the same input twice2WARN
- 1.3.4OrientationScannerActivity is locked to portrait1WARN
- s018ReportsNever stopped drawing2807 msSLOW
- s019Gallery97.8% janky frames1803 msNEEDS WORK
- s013Terms of use338 msOK
- s015Developer options212 msOK
- s005Article210 msOK
- +What’s newNew screen in v2ADDED
- −Rate usMissing in v2REMOVED
- →Paths into Rate usReplayed on v2: breakBROKEN
- →Every other pathReplayed on v2OK
- SDKcompileSdk 36CurrentOK
- APITargets API 35Play rule from 2025-08-31MET
- APITargets API 36Play rule from 2026-08-31MET
- APIAPI 37Expected 2027; not published yetWATCH
- MANManifestExported components, cleartext, debuggable, backup0OK
- APKCode and secretsHard-coded secrets, TLS trust, weak crypto, WebView0OK
- DATAData at restSecrets in files or preferences · needs adbNOT RUN
- RUNTraffic at runtimeCert pinning, HTTP seen live · needs FridaNOT RUN
- LOGSensitive data in logsThe 19th ruleCOMING SOON
Also writes map.json · flows/*.yaml · map.mmd · map.svg · a11y-report.html
iOS Simulator crawl BETAAdaptive UI review COMING SOON
Beyond the crawl
More than a map
-
Crawls localised apps
Run it in the app’s own language; the safety rules hold in all 24. Pseudo-locales stress long text and right-to-left.
-
Export and share
One self-contained SVG of the whole tree: send it to anyone, open it in a browser, or drag it into Figma. Mermaid and Maestro flows too.
-
Edit in place
Drop comment pins, add planned screens, rename, move or remove. Edits live in notes.json; the crawled map is never touched.
-
Visual diff between builds
Screens are matched across two builds and compared by pixels and by text. Every string added, removed, moved or changed is read from the view hierarchy, not OCR.
-
Replay the crawl
Play the crawl back step by step, every tap marked on the screen it hit. Search any step by screen, label or outcome.
Principles
It asks nothing of your app
Zero app changes
Native or cross-platform: Compose, React Native, SwiftUI.
Deterministic
No model calls in the crawl. Same build, same map.
Safe
Stays in your app; never taps log out, delete or pay.
Map your first app
Three commands
- 1Clone
git clone https://github.com/MKS-01/appscreenmap - 2Install
cd appscreenmap && make install - 3Connect your agent
claude mcp add appscreenmap -- appscreenmap mcp
Needs macOS with Android Studio or Xcode.