Quickstart

From zero to a co-pilot driving all three platforms in a few minutes.

1. Install PilotStack

Download the desktop app — it runs the daemon (the MCP server + driver registry + cockpit bridge) and registers the MCP server with Claude Code for you. Sign in; an active subscription unlocks the cockpit.

2. Register the MCP server (manual / CLI)

The app does this automatically. To wire it up by hand, point any MCP client at the pilotstack daemon:

claude mcp add pilotstack -- pilotstack --mode co-pilot

Modes: manual (approve everything), co-pilot (approve mutations), auto-pilot (log only).

3. Boot devices & fly

Ask your agent to boot a web target, attach a running Android emulator, and bind a Flutter app's VM Service:

boot_web url=http://localhost:3000
attach_android
attach_flutter vmServiceUri=<from `flutter run`>
run_on_all action=screenshot   # all three, side by side

4. Record flows & catch drift

Turn a driving session into a replayable regression test, and snapshot a screen to catch layout or visual drift later. Flows replay by selector, so you can record on web and replay on iOS / Android.

start_recording name=login       # then drive the login flow…
stop_recording                   # saved as a replayable flow
add_assertion flowId=… stepIndex=1 kind=visible target=text:"Welcome"
replay_flow flowId=…             # re-run by selector on any platform
replay_all_flows                 # run the whole suite — green / red

save_baseline kind=layout label="cart total" target=testId:total
check_baseline baselineId=…      # reports what drifted (8px, new overflow…)

Baselines come in two flavours: layout (cheap text facts — size, position, overflow) and visual (a reference screenshot, pixel-diffed in the cockpit). Each flow's last result is kept, so the green/red health survives restarts.

Meter your usage

Register a machine in the dashboard to get a ps_live_ key, then pass it so usage is billed to your org:

--api-url https://api.pilotstack.dev --api-key ps_live_…

Tool reference

Context (free, auto-run)

  • list_devices
  • get_ui_tree
  • get_layout
  • get_design_tokens
  • screenshot
  • compare_platforms

Flutter deep context

  • get_errors
  • inspect_widget
  • find_widget
  • get_semantics
  • diff_tree
  • probe_overflow
  • hot_reload

Driving (approval-gated)

  • tap / double_tap / long_press
  • swipe / drag / scroll
  • pinch / zoom
  • type_text / press_key
  • set_orientation / set_locale / set_text_scale
  • wait_for

Flows & baselines (regression)

  • start_recording / stop_recording
  • list_flows
  • replay_flow / replay_all_flows
  • add_assertion
  • save_baseline / check_baseline
  • list_baselines

Orchestration

  • boot_web
  • attach_android
  • attach_ios
  • attach_flutter
  • run_on_all