Let your coding agent prove the UI it changed.

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.

Install the agent skill → See a real run
npx -y skills add aarwitz/tapp --skill tapp

Or run the package directly: npx -y @aarwitz/tapp@latest init . --explore

Real evidence

Watch it work on a real app.

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.

The desktop app on a real run. Prefer to read? Open a full sample evidence report →
Platforms

Works with the apps you actually ship.

iOS, Android, web, and Windows desktop — tapp drives the real thing, not a mock. Same commands, same evidence, same CI check on every platform.

🍎

iOS simulator

Runs your app on the iOS Simulator using Apple's own UI-testing hooks. Nothing gets added to your app — no SDK, no Appium.

🤖

Android emulator or device

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.

🌐

Web

Explores your web app in a real Chromium browser and catches broken links, failed requests, missing assets, and JavaScript errors.

🪟

Windows desktop

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.

The toolkit

Six things your agent can ask for.

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_app

Launch 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_explore

Explore 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_simulator

Boot simulators and install builds without leaving the conversation.

🩺

tapp_health

Check the environment, list past runs, and dig into the evidence.

Observe, then judge

Exploring finds problems. The gate decides.

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.

🟢 pass

The checks that matter ran and passed.

🔴 fail

Something broke, or a journey that used to work no longer does.

🟡 inconclusive

tapp couldn't gather enough evidence to say — so it doesn't.

On every pull request

Turn the journeys you care about into merge checks.

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?

  • Builds and launches your iOS, Android, or web app
  • Replays the journeys you've marked as important
  • Blocks the merge on crashes, failed journeys, and new serious findings
  • Attaches screenshots and a replay so you can see exactly what happened
🟢 PASS
Screens explored4
Findings0
Contracts3 / 3
GatePASS
Founding tapp Teams

Try it on your real app, with help.

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.

Apply for the founding pilot →
The application opens a public GitHub issue. Do not include private code, credentials, or customer data.