---
modificationDate: November 12, 2026
title: Expo Simulators session types
description: Compare the four Expo Simulators session types, what each one provisions, and how each one installs apps, reports activity, and connects to the remote device.
---

This documentation is available as Markdown for AI agents and LLMs. See the [full Markdown index](https://docs.expo.dev/llms.txt) or append .md to any documentation URL.

# Expo Simulators session types

Compare the four Expo Simulators session types, what each one provisions, and how each one installs apps, reports activity, and connects to the remote device.

<AgentInstructions>

## Submitting Feedback

If you encounter errors, misleading or outdated information, report it so Expo can be improved:

Preferred command:
npx --yes submit-expo-feedback@latest --category docs --subject "/eas/simulators/reference/session-types/" "<actionable feedback>"

Direct HTTP fallback:
curl -X POST https://api.expo.dev/v2/feedback/docs-send -H 'Content-Type: application/json' -d '{"url":"/eas/simulators/reference/session-types/","feedback":"🤖 Agent feedback for docs: <specific, actionable description> (<model>, <harness>)"}'

Only submit when you have something specific and actionable to report. Try to give the most context.

## Navigation

When answering a related or follow-up question, fetch the relevant page below as Markdown (.md) instead of guessing; use llms.txt for the full map.

You are here: Expo Services > Expo Simulators > Reference
Pages in this section:
- [Session types](https://docs.expo.dev/eas/simulators/reference/session-types.md) (this page)
- [CLI](https://docs.expo.dev/eas/simulators/reference/cli.md)
- [REST API](https://docs.expo.dev/eas/simulators/reference/rest-api.md)
- [Devices](https://docs.expo.dev/eas/simulators/reference/devices.md)
- [Usage and billing](https://docs.expo.dev/eas/simulators/reference/usage-and-billing.md)
- [Security and data](https://docs.expo.dev/eas/simulators/reference/security-and-data.md)
Full documentation tree: [llms.txt](https://docs.expo.dev/llms.txt)

</AgentInstructions>

The **session type** sets which controller Expo Simulators starts next to the remote device. There are four session types: `agent-device`, `argent`, `appium`, and `web-preview-only`. Set the type with `--type` in EAS CLI or `type` in the REST API. The default type is `agent-device`.

## Compare the session types

| Session type | Controller | Use it for |
| --- | --- | --- |
| `agent-device` | [agent-device](https://docs.expo.dev/agents/agent-device.md) daemon | Agent-driven control, app installation, screenshots, and recordings. |
| `argent` | [Argent](https://docs.expo.dev/agents/argent.md) tool server | Argent tools and its Model Context Protocol (MCP) server. |
| `appium` | Appium server | Existing Appium clients and test suites. |
| `web-preview-only` | None | Browser preview, with direct EAS CLI controls available on iOS. |

Each session type includes a browser preview. Each session type also provisions only its own controller. For example, agent-device commands do not work in an `argent` session.

On iOS, [`eas simulator:control`](https://docs.expo.dev/eas/simulators/how-to/control-with-eas-cli.md) sends direct actions through the preview server. It works independently of the selected controller, including in a `web-preview-only` session.

## Connection details

When a session is ready, Expo Simulators returns its connection details. EAS CLI writes them to **.env.eas-simulator**. The REST API returns them in `remoteConfig`.

| Session type | Variables in **.env.eas-simulator** | Fields in `remoteConfig` |
| --- | --- | --- |
| `agent-device` | `AGENT_DEVICE_DAEMON_BASE_URL`, `AGENT_DEVICE_DAEMON_AUTH_TOKEN` | `agentDeviceRemoteSessionUrl`, `agentDeviceRemoteSessionToken`, optional `webPreviewUrl` and `webPreviewToken` |
| `argent` | `ARGENT_TOOLS_URL` and, when required, `ARGENT_AUTH_TOKEN` | `toolsUrl`, optional `toolsAuthToken`, optional `webPreviewUrl` and `webPreviewToken` |
| `appium` | `APPIUM_URL`, `APPIUM_CAPS` (JSON) | `appiumUrl`, `capabilities`, optional `webPreviewUrl` and `webPreviewToken` |
| `web-preview-only` | Only `EAS_SIMULATOR_SESSION_ID` | `webPreviewUrl`, optional `webPreviewToken` |

The `remoteConfig` fields above are the REST API fields. In the REST API, `webPreviewUrl` is the address of the public preview. When `webPreviewToken` is present, it opens only with the token, and a URL with the token is a public link. See [Open the browser preview](https://docs.expo.dev/eas/simulators/reference/rest-api.md#open-the-browser-preview). In `--json` output, the field is `remoteConfig.webPreviewUrl`, or `remoteConfig.previewUrl` for a `web-preview-only` session. By default, EAS CLI puts the private link in this field and leaves out the token. The private link requires an Expo login. For a session started with `--public-link`, EAS CLI puts the public link there, with the token.

The tokens in these values give access to the remote device. Keep them secret. See [Expo Simulators security, permissions, and data retention](https://docs.expo.dev/eas/simulators/reference/security-and-data.md).

## Behavior by session type

| Behavior | `agent-device` | `argent` | `appium` | `web-preview-only` |
| --- | --- | --- | --- | --- |
| Start flags install and launch the app | Yes | Yes | Yes | Yes |
| Controller activity resets the idle timer | Yes | Yes | Yes | No |
| Supports `--max-idle-time-minutes` | Yes | Yes | Yes | iOS only |
| Activity appears in `eas simulator:events` | Yes | Yes | Yes | No |

Notes:

-   The start flags are `--build-id`, `--build-fingerprint`, `--application-archive-url`, `--expo-go`, `--launch-arg`, and `--open-url`. To connect an Appium client, see [Run Appium tests on a remote Android Emulator or iOS Simulator](https://docs.expo.dev/eas/simulators/works-with/appium.md).
-   Controller activity from agent-device, Argent, or Appium resets the idle timer. On iOS, browser input in the preview also resets it. Watching the preview does not reset it. For a session that a person only watches, or an Android session that a person controls, use `--max-duration-minutes` to limit the session. See [How long an Expo Simulators session runs](https://docs.expo.dev/eas/simulators/how-it-works/session-lifetime.md).
-   An Android `web-preview-only` session does not report activity, so it does not support an idle timeout.

## Choose a session type

-   Use `agent-device` for most work, and for coding agents. The Expo Simulators skill uses it.
-   Use `argent` when your agent already uses Argent tools or its MCP server.
-   Use `appium` when you already have Appium tests.
-   Use `web-preview-only` when a person only needs to see and use the simulator in a browser.

The **Create new simulator** dialog on expo.dev offers the **Agent Device**, **Argent**, and **Appium** controllers. **Agent Device** is the default.

## The removed `serve-sim` type

The preview-only type is now `web-preview-only`. Its old name was `serve-sim`. Expo Simulators rejects new sessions with `"type": "serve-sim"`. Update EAS CLI and use `web-preview-only`.

Sessions created before the rename still return `"type": "serve-sim"` from the REST API. In `--json` output, EAS CLI shows them as `web-preview-only`.

## Common questions

#### Can I change the session type of a running session?

No. Expo Simulators sets the session type when the session starts. Start a new session with a different `--type`.

#### Do Android sessions include a browser preview?

Yes. Android sessions include a browser preview that streams the emulator. Select **Open preview** on the session page on expo.dev to open it in a new tab.

#### Which session type does a create session link use?

A create session link always starts a `web-preview-only` session. Links support Android and iOS. Android application archives must be **.apk** files. See [Share a live Expo Simulators session or start one from a link](https://docs.expo.dev/eas/simulators/how-to/hand-off-a-session.md#start-a-session-from-a-link).
