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

# vetta mobile

> Provision and drive cloud Android phones.

Manage [mobile devices](https://vetta.sh/docs/computer/mobile.md) — cloud phones you look at, tap, type into and destroy. The third member of the computer suite beside [`vetta computer`](https://vetta.sh/docs/cli/computer).

## Commands

| Command | Description |
| - | - |
| `vetta mobile create` | Create a device. |
| `vetta mobile list` | List devices (terminated ones excluded). |
| `vetta mobile show <id>` | Show a device, reconciled with the provider. |
| `vetta mobile update <id>` | Rename a device. |
| `vetta mobile act <id>` | Run one action: tap, type, press a key, scroll, open a URL, look. |
| `vetta mobile screenshot <id>` | Take a screenshot; `--out` writes the JPEG. |
| `vetta mobile live-view <id>` | Print the device's dashboard link, where its live stream plays. |
| `vetta mobile delete <id>` | End the device. |

`vetta mobile list --session-id ses_…` lists only the phone that agent session opened.

## create

```bash theme={"system"}
vetta mobile create --name pixel --os-version 15 --idle-timeout-minutes 15
```

| Flag | Description |
| - | - |
| `--name` | Human-readable name (default `device`). |
| `--os-version` | `13`, `14` or `15` (default `15`). |
| `--model` | `phone` (the default, and today the only value). |
| `--jurisdiction` | `us`, `eu` or `as` — where the device may run (default `us`). |
| `--idle-timeout-minutes` | Inactivity after which the device ends, 1–180 (default `10`). |
| `--max-duration-minutes` | Hard ceiling on its life, 1–1440 (default `120`). |
| `--apps` | Comma-separated package names (`com.example.app`) of apps in the platform's curated app catalogue, installed when the device starts. |

The command waits up to about 45 seconds for the phone and answers with whatever is true then, usually `"status": "creating"`: a phone is ready in about a minute, and `vetta mobile show` follows it. There is no pause: the two timers are how idle cost is controlled.

There is no limit on how many phones you run, only on the balance: a create needs 10 minutes (`$0.30`) for every live phone and the new one, plus what the live ones have run, or it fails with `insufficient_credits` (402). When the platform's phones are all in use it fails with `rate_limited` (429); try again shortly.

## act

One verb over the whole action surface. `--type` picks the action; the other flags belong to it.

```bash theme={"system"}
vetta mobile act mob_01H8YZ... --type tap --x 360 --y 1200
vetta mobile act mob_01H8YZ... --type tap --text "Sign in"
vetta mobile act mob_01H8YZ... --type type --text "hello"
vetta mobile act mob_01H8YZ... --type press_key --key KEYCODE_BACK
vetta mobile act mob_01H8YZ... --type scroll --direction down --amount 400
vetta mobile act mob_01H8YZ... --type open_url --url https://example.com
vetta mobile act mob_01H8YZ... --type element_tree
```

| Flag | Used by |
| - | - |
| `--type` | Required: `screenshot`, `element_tree`, `tap`, `type`, `press_key`, `scroll`, `open_url`. |
| `--x`, `--y` | `tap` by coordinates; screenshot pixels map 1:1. |
| `--text` | `tap` by visible text, or the text for `type`. |
| `--resource-id`, `--content-desc` | `tap` by element id or accessibility label. |
| `--key` | `press_key`: `HOME`, `BACK`, `RECENTS`, `NOTIFICATIONS`, `ENTER`, `DEL`, `TAB`, `ESCAPE`, `SPACE`, arrows (`DPAD_*`), volume, `POWER`, or a numeric key code; case-insensitive, a `KEYCODE_` prefix is accepted. |
| `--direction`, `--amount` | `scroll`: `up`, `down`, `left`, `right`; `--amount` is optional, in screenshot pixels (default: 40% of the screen). |
| `--url` | `open_url`. |

A `tap` with neither coordinates nor a selector is a usage error, not a request.

## screenshot

```bash theme={"system"}
vetta mobile screenshot mob_01H8YZ... --out shot.jpg
```

Without `--out` the JSON result is printed, the image bytes base64-encoded in `image.data`. With it, the JPEG bytes are written to the path and the command prints `{ "path": "shot.jpg", "content_type": "image/jpeg" }`.

## live-view

```bash theme={"system"}
vetta mobile live-view mob_01H8YZ...
```

Prints `{ "object": "mobile_live_view", "url": "https://…/mobile/mob_…", "expires_at": null }`. `url` is the device's dashboard page, where the stream plays. The CLI never prints the `stream` half of the answer: it is a bearer credential (anyone holding it drives the device until it ends), and a terminal's output ends up in scrollback and CI logs. Each mint is recorded in the audit log without the credential.

## show, update, delete

```bash theme={"system"}
vetta mobile show mob_01H8YZ...
vetta mobile update mob_01H8YZ... --name "qa phone"
vetta mobile delete mob_01H8YZ...
```

`show` asks the provider and reports the truth — a device ended by its idle timer comes back `terminated` with `termination_reason: "idle_timeout"`. `list` reads stored rows only and can lag until a `show`.


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