On-device port (allows different host/device ports for parallel testing)
dial_timeout
duration
30s
WebSocket connection timeout
ping_interval
duration
5s
WebSocket keepalive interval
token_read_timeout
duration
30s
Max time to wait for auth token
reconnect_delay
duration
2s
Delay before reconnecting after app restart
reconnect_attempts
int
4
Max auto-reconnect attempts after a connection drop mid-test
reconnect_backoff
duration
1s
Base for exponential reconnect backoff: delay = base << (attempt-1) capped at 8s, ±20% jitter
launch_timeout
duration
120s
Max time for restart the app/clear app data to force-stop, relaunch, and reconnect — distinct from dial_timeout since a real app’s cold-launch path (e.g. Firebase App Check init) can cost far more than a warm reconnect. Raise this if restart the app times out on a slow-starting app. Also settable per-run with --launch-timeout
Settings for the AI-powered assertion commands
(see ... with ai, assert no visual defects with ai, read ... with ai into <var>). Not
required unless a test uses with ai — omitting this block entirely is the default, and no
screenshot ever leaves the device/CI runner without it. There is no default provider by design:
every “with ai” call goes directly from the CLI to whichever provider you configure, never through
a FlutterProbe-operated relay (see docs/research/maestro-ai-assertions-investigation.md for why
this is a deliberate departure from Maestro’s mandatory-cloud-upload model).
Key
Type
Default
Description
provider
string
—
openai, anthropic, or local. No default — must be set explicitly, and a test using with ai fails fast (before any device connects) if this is unset
api_key
string
—
Provider API key. Supports ${ENV_VAR} syntax. Not required for provider: local
model
string
claude-sonnet-4-20250514
Model name. Required, no default, for provider: local
endpoint
string
—
OpenAI-compatible base URL (e.g. http://localhost:11434/v1) for provider: local. Supports ${ENV_VAR}. Required when provider: local — a test using with ai fails fast if it’s missing
timeout
duration
60s
Per-request HTTP timeout for AI provider calls. Raise this for slow local models — the step timeout alone doesn’t cover the provider HTTP call
redact
list
—
Widgets to black out in the screenshot before it’s sent to any provider (local or cloud). Each entry: selector: — a ProbeScript selector ("#credit_card_field" or "Card Number")