This documentation is available as Markdown for AI agents and LLMs. See the full Markdown index or append .md to any documentation URL.
EAS Simulator CLI reference
Edit page
Reference for the experimental EAS CLI commands that create, inspect, monitor, control, list, and stop remote simulator sessions.
The simulator:* commands are experimental and hidden. Install or update EAS CLI before running them:
The --help flag displays the available options for simulator:start.
The start command is also available as eas simulator, eas sim, and eas sim:start. The other commands have matching eas sim:* aliases, such as eas sim:list and eas sim:stop.
To manage sessions without EAS CLI, use the REST API.
Commands
simulator:availability
The --json flag is optional. It prints a stable, machine-readable result for agents and automation; omit it for human-readable output. The JSON object contains available and accountName. This command does not create a session or consume simulator usage.
simulator:start
The session type determines which interface EAS provisions with the remote device. On iOS, every type includes a web preview. Choose agent-device, Argent, or Appium to add programmatic control, or choose web-preview-only for the web preview only:
Use agent-device for accessibility-driven device actions and app installation.
Use Argent to run its remote device tools through the session.
Use Appium when you want to connect an existing Appium client or test suite.
Use the iOS web preview without provisioning a programmatic controller.
Important flags:
--build-id, --application-archive-url, and --expo-go are mutually exclusive application sources. --launch-arg and --open-url require one of those sources because the start command needs an installed application to launch.
The default dotenv output writes configuration even when --json is used. Use --out-config-type env when you explicitly do not want the file.
Common JSON output fields have this shape. The fields inside remoteConfig depend on the selected controller:
{ "id": "<session-id>", "name": "Checkout flow screenshots", "type": "<controller-type>", "deviceRunSessionUrl": "https://expo.dev/accounts/<account>/projects/<project>/simulator-sessions/<session-id>", "remoteConfig": { "<controller-specific-key>": "<value>" } }
Treat remoteConfig as secret because it includes controller credentials.
Interactive and non-interactive behavior
Without --non-interactive, the start command stays attached and polls the session. Press Ctrl+C once to stop it. EAS CLI resets .env.eas-simulator after it confirms the session ended.
With --non-interactive or --json, the command returns after the controller is ready. You must stop the session separately.
simulator:exec
simulator:exec is controller-agnostic. It loads the connection variables for the active session from .env.eas-simulator, then spawns the command and arguments that follow.
Use the command pattern for the controller selected when the session started:
simulator:exec does not implement device actions. It only supplies the active session's connection environment and runs the command that follows. The available actions and argument syntax come from agent-device or Argent.
simulator:events
Show a snapshot of the activity recorded for the session referenced by .env.eas-simulator:
Pass a session ID to inspect another session:
The default text output condenses related operations into a readable timeline. It includes the timestamp, controller, summary, and duration when available. This command shows session and controller activity from agent-device or Argent, not application runtime logs.
Follow new activity while a session is running:
The -f short flag is equivalent to --follow. The command stops following when the session ends. Press Ctrl + C to stop following earlier.
For agents and automation, request the raw event records as JSON:
The JSON object contains deviceRunSessionId and an events array. Common event fields include eventId, ts, producer, type, and summary, with operation ID, outcome, duration, and controller-specific data when available. --json cannot be combined with --follow.
simulator:get
Get the session referenced by .env.eas-simulator:
Get another session explicitly:
The response includes:
- ID, name, type, status, and platform
- Created, started, finished, and updated timestamps
- The expo.dev simulator session URL
- Controller connection configuration
- Session artifacts, when present
simulator:list
Filters can be repeated:
Use --limit to control page size and --after with the previous response's endCursor for pagination.
simulator:stop
Stop the session referenced by .env.eas-simulator:
Stop a specific session:
The stop mutation is idempotent.
Use --json for a machine-readable object containing the session id and final status.
.env.eas-simulator
The managed file always contains the session ID:
Controller connection variables depend on the selected type:
Add the file to .gitignore:
Do not modify its values while the session is running.