Your agent says the feature works. tapp actually runs the app — on real iOS simulators, Android emulators and devices, web apps, and Windows desktop apps — and shows you what happened: screenshots, a recording, and a list of what broke. The journeys you care about become checks that run on every pull request.
Or run the package directly: npx -y @aarwitz/tapp@latest init . --explore
Unedited footage of the tapp desktop app. Drop a repo in, and tapp builds it, boots a simulator, explores the app on its own, finds the bugs that were planted in it, and maps every screen it reached.
iOS, Android, web, and Windows desktop — tapp drives the real thing, not a mock. Same commands, same evidence, same CI check on every platform.
Runs your app on the iOS Simulator using Apple's own UI-testing hooks. Nothing gets added to your app — no SDK, no Appium.
Drives your app on an emulator or a plugged-in device through ADB. Point it at an APK, or let it build your Gradle project.
Explores your web app in a real Chromium browser and catches broken links, failed requests, missing assets, and JavaScript errors.
WPF, WinForms, and WinUI apps, driven through Windows UI Automation — the same commands, evidence, and CI check. Early Windows runs are set up through the pilot.
Give it to your agent as a skill, run it from the terminal, add it over MCP to get screenshots inside the chat, or run the same check in GitHub Actions — on macOS, Linux, or Windows.
Every one of these runs on your machine, on the real app, and hands back evidence. None of them needs an API key.
tapp_open_appLaunch the app and get a screenshot plus a list of everything on screen — in seconds.
tapp_session_*Drive the app step by step: tap, type, swipe, go back, wait.
tapp_exploreExplore the whole app on its own and report what it found: bugs, what it covered, and what it couldn't reach. A report, not a verdict.
tapp_flow_*Turn a journey into a test you can replay — record one, or describe it in plain English.
tapp_boot_simulatorBoot simulators and install builds without leaving the conversation.
tapp_healthCheck the environment, list past runs, and dig into the evidence.
Exploration behaves like a curious user: it taps everything and reports crashes, dead buttons,
failed sign-ins, screens stuck loading, and dead ends — and on web, broken links, failed
requests, and JavaScript errors. It reports; it doesn't decide. The
gate decides, and it's deterministic: the same evidence and the same rules
always give the same answer. If a run was too shallow to tell, the answer is
inconclusive — never a pass.
The checks that matter ran and passed.
Something broke, or a journey that used to work no longer does.
tapp couldn't gather enough evidence to say — so it doesn't.
Pick the journeys that must keep working — checkout, sign-in, onboarding — and tapp runs them on the real app for every PR. Each PR gets one answer, with evidence: did this change break something that used to work?
We're taking a small number of paid pilot teams. We set tapp up on your repo, pick the journeys that matter, and wire up the CI check — together. tapp itself is MIT licensed and runs on infrastructure you control.