> ## 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. The CLI prints an approval URL — open it in any browser and approve:

```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

Run from the directory that owns `.revyl/` (or a subdirectory of it) so project
config is loaded.

<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>

If `.revyl/config.yaml` declares `session.before_script` and/or
`session.auth_bypass`, the CLI runs `session.before_script` and applies
`session.auth_bypass` when each is configured. See
[Auth And Session Prep](/cli/device/auth-and-session-prep).

## 3. Install and Launch Your App

Use a direct build URL (APK or IPA). Launch defaults to the app you just
installed, so you do not need to know its bundle ID — pass `--bundle-id` only
to launch a different installed app.

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

  ```python Python SDK theme={null}
  device.install_app(app_url="https://example.com/app.apk")
  device.launch_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

* Signed-in sessions: [Auth And Session Prep](/cli/device/auth-and-session-prep)
* Full command coverage: [Command Reference](/cli/command-reference)
* Agent-driven device control: [MCP Setup](/cli/mcp-setup)
* CI/CD test and workflow runs: [CI/CD Integration](/guides/run-tests-ci-cd)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.