> ## Documentation Index
> Fetch the complete documentation index at: https://docs.revyl.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Quickstart

This is the fastest way to get a working device session and take real actions safely.

## 1. Install and Authenticate

<CodeGroup>
  ```bash CLI theme={null}
  curl -fsSL https://revyl.com/install.sh | sh
  brew install RevylAI/tap/revyl    # Homebrew (macOS)
  pipx install revyl                # pipx (cross-platform)
  uv tool install revyl             # uv
  pip install revyl                 # pip
  ```

  ```bash Python SDK theme={null}
  pip install revyl[sdk]
  ```
</CodeGroup>

Then authenticate:

```bash theme={null}
revyl auth login
```

You can also use an API key:

```bash theme={null}
export REVYL_API_KEY="rev_..."
```

## 2. Start a Device Session

<CodeGroup>
  ```bash CLI theme={null}
  revyl device start --platform android --timeout 600
  revyl device info
  ```

  ```python Python SDK theme={null}
  from revyl import DeviceClient

  device = DeviceClient.start(platform="android", timeout=600)
  print(device.info())
  ```
</CodeGroup>

## 3. Install and Launch Your App

Use a direct build URL (APK or IPA) and launch by bundle ID.

<CodeGroup>
  ```bash CLI theme={null}
  revyl device install --app-url "https://example.com/app.apk"
  revyl device launch --bundle-id com.example.app
  ```

  ```python Python SDK theme={null}
  device.install_app(app_url="https://example.com/app.apk")
  device.launch_app(bundle_id="com.example.app")
  ```
</CodeGroup>

## 4. Use the Safe Action Loop

Always re-observe before and after important actions.

<CodeGroup>
  ```bash CLI theme={null}
  revyl device screenshot --out before.png
  revyl device tap --target "Sign In button"
  revyl device type --target "Email field" --text "user@example.com"
  revyl device screenshot --out after.png
  ```

  ```python Python SDK theme={null}
  device.screenshot(out="before.png")
  device.tap(target="Sign In button")
  device.type_text(target="Email field", text="user@example.com")
  device.screenshot(out="after.png")
  ```
</CodeGroup>

## 5. Stop the Session

<CodeGroup>
  ```bash CLI theme={null}
  revyl device stop
  ```

  ```python Python SDK theme={null}
  device.stop_session()
  ```
</CodeGroup>

## Next

* Full command coverage: [Command Reference](/cli/command-reference)
* Agent-driven device control: [MCP Setup](/cli/mcp-setup)
* CI orchestration APIs: [API Quickstart](/api-reference/quickstart)
