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:

Terminal
eas simulator:start --help

The --help flag displays the available options for simulator:start.

Commands

CommandPurpose
simulator:availabilityCheck whether the current project's account can use EAS Simulator
simulator:startCreate a session and wait for its controller configuration
simulatorAlias for simulator:start
simulator:execRun another command with .env.eas-simulator loaded
simulator:eventsShow recorded activity or follow activity from a running session
simulator:getGet status, connection details, dashboard URL, timestamps, and artifacts
simulator:listList and filter sessions for the current project
simulator:stopStop a session

simulator:availability

Terminal
eas simulator:availability --json

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

A controller is the tool provisioned with the remote device to install, inspect, and interact with apps. Choose a controller type when starting a session:

Use agent-device for accessibility-driven device actions and app installation.

Terminal
eas simulator:start --platform ios --type agent-device --non-interactive

Important flags:

FlagDescription
-p, --platformandroid or ios. Required in non-interactive mode; prompted for in an interactive terminal
--typeController provisioned for the session. Use agent-device or argent for programmatic control, or serve-sim for a browser-only preview
--package-versionController package version. Defaults to the service's latest version
--out-config-typedotenv to write .env.eas-simulator, or env to print shell exports
--[no-]forceWhether to create a new session when a session ID already exists in the environment. Defaults to true
--non-interactiveReturn after the controller is ready instead of staying attached
--jsonPrint machine-readable output and imply non-interactive mode

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>", "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:

Terminal
eas simulator:exec npx agent-device@latest <command> [args...]

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:

Terminal
eas simulator:events

Pass a session ID to inspect another session:

Terminal
eas simulator:events --id <session-id>

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:

Terminal
eas simulator:events --follow

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:

Terminal
eas simulator:events --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:

Terminal
eas simulator:get --json --non-interactive

Get another session explicitly:

Terminal
eas simulator:get --id <session-id> --json --non-interactive

The response includes:

  • ID, 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

Terminal
eas simulator:list --platform ios --status in-progress --json --non-interactive

Filters can be repeated:

FilterValues
--platformios, android
--typeagent-device, argent, serve-sim
--statusnew, in-progress, stopped, errored

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:

Terminal
eas simulator:stop

Stop a specific session:

Terminal
eas simulator:stop --id <session-id>

The stop mutation is idempotent.

.env.eas-simulator

The managed file always contains the session ID:

.env.eas-simulator
EAS_SIMULATOR_SESSION_ID="<session-id>"

Controller connection variables depend on the selected type:

ControllerConnection variables
agent-deviceAGENT_DEVICE_DAEMON_BASE_URL, AGENT_DEVICE_DAEMON_AUTH_TOKEN
ArgentARGENT_TOOLS_URL and, when required, ARGENT_AUTH_TOKEN

Add the file to .gitignore:

.gitignore
.env.eas-simulator

Do not modify its values while the session is running.