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:
- eas simulator:start --helpThe --help flag displays the available options for simulator:start.
Commands
| Command | Purpose |
|---|---|
simulator:availability | Check whether the current project's account can use EAS Simulator |
simulator:start | Create a session and wait for its controller configuration |
simulator | Alias for simulator:start |
simulator:exec | Run another command with .env.eas-simulator loaded |
simulator:events | Show recorded activity or follow activity from a running session |
simulator:get | Get status, connection details, dashboard URL, timestamps, and artifacts |
simulator:list | List and filter sessions for the current project |
simulator:stop | Stop a session |
simulator:availability
- eas simulator:availability --jsonThe --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.
- eas simulator:start --platform ios --type agent-device --non-interactiveUse Argent to run its remote device tools through the session.
- eas simulator:start --platform ios --type argent --non-interactiveImportant flags:
| Flag | Description |
|---|---|
-p, --platform | android or ios. Required in non-interactive mode; prompted for in an interactive terminal |
--type | Controller provisioned for the session. Use agent-device or argent for programmatic control, or serve-sim for a browser-only preview |
--package-version | Controller package version. Defaults to the service's latest version |
--out-config-type | dotenv to write .env.eas-simulator, or env to print shell exports |
--[no-]force | Whether to create a new session when a session ID already exists in the environment. Defaults to true |
--non-interactive | Return after the controller is ready instead of staying attached |
--json | Print 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:
- eas simulator:exec npx agent-device@latest <command> [args...]- eas simulator:exec argent run <tool> [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:
- eas simulator:eventsPass a session ID to inspect another session:
- 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:
- eas simulator:events --followThe -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:
- eas simulator:events --jsonThe 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:
- eas simulator:get --json --non-interactiveGet another session explicitly:
- eas simulator:get --id <session-id> --json --non-interactiveThe 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
- eas simulator:list --platform ios --status in-progress --json --non-interactiveFilters can be repeated:
| Filter | Values |
|---|---|
--platform | ios, android |
--type | agent-device, argent, serve-sim |
--status | new, 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:
- eas simulator:stopStop a specific session:
- eas simulator:stop --id <session-id>The stop mutation is idempotent.
.env.eas-simulator
The managed file always contains the session ID:
EAS_SIMULATOR_SESSION_ID="<session-id>"
Controller connection variables depend on the selected type:
| Controller | Connection variables |
|---|---|
| agent-device | AGENT_DEVICE_DAEMON_BASE_URL, AGENT_DEVICE_DAEMON_AUTH_TOKEN |
| Argent | ARGENT_TOOLS_URL and, when required, ARGENT_AUTH_TOKEN |
Add the file to .gitignore:
.env.eas-simulator
Do not modify its values while the session is running.