Your agent flies the app.
You stay in the cockpit.
PilotStack gives a coding agent eyes and hands on iOS, Android, and web — all at once. It reads cheap semantic context (not expensive screenshots), understands Flutter at the widget level, and asks before it acts.
Works with Claude Code & any MCP client · part of the *Stack family
Scaffold
AppBar "Checkout"
Column
Row #summary
Button #pay_btn @lib/checkout.dart:84
⚠ Column overflows bottom by 12pxtap(#pay_btn) on ios, android, web Built for agents that build apps
Everything an agent needs to see and drive a real app — and everything you need to stay in control.
Drive every platform, side by side
iOS, Android, and web at once — tap, type, drag, pinch/zoom, scroll, rotate, scale text. One action, fanned across all three with run_on_all.
Cheap context, not screenshots
Agents read compact UI trees and one-line layout facts ("Column overflows bottom by 12px at 360×640") instead of burning tokens on images.
Deep Flutter understanding
Reads the Dart VM Service: widget tree with source locations, constraints, render sizes, overflow, and a live error stream — so Claude knows WHY a Flutter UI looks wrong. Zero app changes.
You stay in the cockpit
Watch live device frames and approve or deny each action like an IDE. Manual, co-pilot, or auto-pilot — your call, per session.
Runs locally, bills tiny
Simulators and emulators run on your machine for free. The cloud only meters usage, so per-action pricing stays in fractions of a cent.
An MCP server
Works with Claude Code or any MCP client. One command to register, and your agent can see and drive all platforms.
Record, replay, regression-test
Capture a driving session as a flow and replay it by selector on any platform — record on web, replay on iOS/Android. Add visible/hidden/no-error checks and run the whole suite green or red.
Baselines catch drift
Snapshot a screen, then check it later: layout baselines report what moved (8px, new overflow); visual baselines pixel-diff against a reference. Cheap text facts first, pixels when you want them.
One MCP server. Every platform.
Register PilotStack with Claude Code (or any MCP client) and your agent gets context tools (read-only, auto-run) and driving tools (HITL-gated) across iOS, Android, and web.
- ▸
get_ui_tree,get_layout,get_errors— cheap context - ▸
hot_reload,inspect_widget,find_widget— deep Flutter - ▸
tap,type_text,run_on_all— driving, with approval
{ "mcpServers": { "pilotstack": { "command": "pilotstack", "args": ["--mode", "co-pilot"] } } }
Three steps to a co-pilot
Install the daemon
Download the desktop app — it runs the daemon and registers the MCP server for you.
Boot your apps
Web, an Android emulator, an iOS sim — attach a running Flutter app for deep context.
Let the agent fly
Claude drives all three side by side; you approve from the cockpit.
Questions, answered
What is PilotStack? +
PilotStack is an MCP server plus a desktop cockpit that lets a coding agent drive iOS, Android, and web apps side by side. The agent reads cheap semantic context instead of screenshots, and you approve or deny each action from the cockpit.
Which platforms can it drive? +
iOS via the Simulator (simctl + idb), Android via adb (emulator or device), and web via Playwright — all at once. One action can fan out across every platform with run_on_all.
Does it work with Claude Code? +
Yes. PilotStack registers as a standard MCP server, so Claude Code or any other MCP client can see and drive your apps. Registration is a single command.
Is it free? +
There is a free tier, and your simulators and emulators run locally at no cost. Context reads are always free; the cloud only meters driven actions at fractions of a cent. The Pro plan is $12/month.
Do I have to approve every action? +
Your call, per session: manual approves each action, co-pilot approves mutations only, and auto-pilot runs hands-free. Driving actions are human-gated by default; read-only context never blocks.
How does it understand Flutter so well? +
It reads the Dart VM Service directly — the widget tree with source locations, constraints, render sizes, overflow, and a live error stream — so the agent knows why a Flutter UI looks wrong. No app changes required.
Can it write tests or catch regressions? +
Yes. Record a driving session as a flow and replay it by selector across iOS, Android, and web — with visible/hidden/no-error assertions and a one-click run-all suite. Layout and visual baselines flag drift such as a moved button, new overflow, or pixel changes after a change.
Stop guessing why the UI looks wrong.
Give your agent real eyes and hands across every platform — and keep your finger on the controls.